Commit f3ab3e1a authored by Justin Ruggles's avatar Justin Ruggles

avconv: make the async buffer global and free it in exit_program()

parent 5023b89b
...@@ -142,6 +142,8 @@ static int print_stats = 1; ...@@ -142,6 +142,8 @@ static int print_stats = 1;
static uint8_t *audio_buf; static uint8_t *audio_buf;
static unsigned int allocated_audio_buf_size; static unsigned int allocated_audio_buf_size;
static uint8_t *async_buf;
static unsigned int allocated_async_buf_size;
#define DEFAULT_PASS_LOGFILENAME_PREFIX "av2pass" #define DEFAULT_PASS_LOGFILENAME_PREFIX "av2pass"
...@@ -718,6 +720,8 @@ void exit_program(int ret) ...@@ -718,6 +720,8 @@ void exit_program(int ret)
uninit_opts(); uninit_opts();
av_free(audio_buf); av_free(audio_buf);
allocated_audio_buf_size = 0; allocated_audio_buf_size = 0;
av_free(async_buf);
allocated_async_buf_size = 0;
#if CONFIG_AVFILTER #if CONFIG_AVFILTER
avfilter_uninit(); avfilter_uninit();
...@@ -1117,8 +1121,12 @@ need_realloc: ...@@ -1117,8 +1121,12 @@ need_realloc:
return; return;
ist->is_start = 0; ist->is_start = 0;
} else { } else {
static uint8_t *input_tmp = NULL; av_fast_malloc(&async_buf, &allocated_async_buf_size,
input_tmp = av_realloc(input_tmp, byte_delta + size); byte_delta + size);
if (!async_buf) {
av_log(NULL, AV_LOG_FATAL, "Out of memory in do_audio_out\n");
exit_program(1);
}
if (byte_delta > allocated_for_size - size) { if (byte_delta > allocated_for_size - size) {
allocated_for_size = byte_delta + (int64_t)size; allocated_for_size = byte_delta + (int64_t)size;
...@@ -1126,9 +1134,9 @@ need_realloc: ...@@ -1126,9 +1134,9 @@ need_realloc:
} }
ist->is_start = 0; ist->is_start = 0;
generate_silence(input_tmp, dec->sample_fmt, byte_delta); generate_silence(async_buf, dec->sample_fmt, byte_delta);
memcpy(input_tmp + byte_delta, buf, size); memcpy(async_buf + byte_delta, buf, size);
buf = input_tmp; buf = async_buf;
size += byte_delta; size += byte_delta;
av_log(NULL, AV_LOG_VERBOSE, "adding %d audio samples of silence\n", idelta); av_log(NULL, AV_LOG_VERBOSE, "adding %d audio samples of silence\n", idelta);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment