3D Audio GSoC:
- Sequencer dynamics: Now it's possible to change the output channels and the resampling quality also increased (previously maximum quality was 44,1 kHz) - Changed two buffers to use ffmpeg allocation, not sure if that helps somehow.
This commit is contained in:
@@ -549,7 +549,7 @@ static AVStream* alloc_audio_stream(RenderData *rd, int codec_id, AVFormatContex
|
||||
c->sample_rate = rd->ffcodecdata.audio_mixrate;
|
||||
c->bit_rate = ffmpeg_audio_bitrate*1000;
|
||||
c->sample_fmt = SAMPLE_FMT_S16;
|
||||
c->channels = 2;
|
||||
c->channels = rd->ffcodecdata.audio_channels;
|
||||
codec = avcodec_find_encoder(c->codec_id);
|
||||
if (!codec) {
|
||||
//XXX error("Couldn't find a valid audio codec");
|
||||
@@ -574,12 +574,11 @@ static AVStream* alloc_audio_stream(RenderData *rd, int codec_id, AVFormatContex
|
||||
audio_outbuf_size = c->frame_size * c->channels * sizeof(int16_t) * 4;
|
||||
}
|
||||
|
||||
audio_output_buffer = (uint8_t*)MEM_mallocN(
|
||||
audio_outbuf_size, "FFMPEG audio encoder input buffer");
|
||||
audio_output_buffer = (uint8_t*)av_malloc(
|
||||
audio_outbuf_size);
|
||||
|
||||
audio_input_buffer = (uint8_t*)MEM_mallocN(
|
||||
audio_input_samples * c->channels * sizeof(int16_t),
|
||||
"FFMPEG audio encoder output buffer");
|
||||
audio_input_buffer = (uint8_t*)av_malloc(
|
||||
audio_input_samples * c->channels * sizeof(int16_t));
|
||||
|
||||
audio_time = 0.0f;
|
||||
|
||||
@@ -701,7 +700,7 @@ static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, Report
|
||||
|
||||
if (ffmpeg_type == FFMPEG_DV) {
|
||||
fmt->audio_codec = CODEC_ID_PCM_S16LE;
|
||||
if (ffmpeg_audio_codec != CODEC_ID_NONE && rd->ffcodecdata.audio_mixrate != 48000) {
|
||||
if (ffmpeg_audio_codec != CODEC_ID_NONE && rd->ffcodecdata.audio_mixrate != 48000 && rd->ffcodecdata.audio_channels != 2) {
|
||||
BKE_report(reports, RPT_ERROR, "FFMPEG only supports 48khz / stereo audio for DV!");
|
||||
return 0;
|
||||
}
|
||||
@@ -971,11 +970,11 @@ void end_ffmpeg(void)
|
||||
video_buffer = 0;
|
||||
}
|
||||
if (audio_output_buffer) {
|
||||
MEM_freeN(audio_output_buffer);
|
||||
av_free(audio_output_buffer);
|
||||
audio_output_buffer = 0;
|
||||
}
|
||||
if (audio_input_buffer) {
|
||||
MEM_freeN(audio_input_buffer);
|
||||
av_free(audio_input_buffer);
|
||||
audio_input_buffer = 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user