mirror of https://git.ffmpeg.org/ffmpeg.git
avconv: make the async buffer global and free it in exit_program()
This commit is contained in:
parent
5023b89bba
commit
f3ab3e1aee
18
avconv.c
18
avconv.c
|
@ -142,6 +142,8 @@ static int print_stats = 1;
|
|||
|
||||
static uint8_t *audio_buf;
|
||||
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"
|
||||
|
||||
|
@ -718,6 +720,8 @@ void exit_program(int ret)
|
|||
uninit_opts();
|
||||
av_free(audio_buf);
|
||||
allocated_audio_buf_size = 0;
|
||||
av_free(async_buf);
|
||||
allocated_async_buf_size = 0;
|
||||
|
||||
#if CONFIG_AVFILTER
|
||||
avfilter_uninit();
|
||||
|
@ -1117,8 +1121,12 @@ need_realloc:
|
|||
return;
|
||||
ist->is_start = 0;
|
||||
} else {
|
||||
static uint8_t *input_tmp = NULL;
|
||||
input_tmp = av_realloc(input_tmp, byte_delta + size);
|
||||
av_fast_malloc(&async_buf, &allocated_async_buf_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) {
|
||||
allocated_for_size = byte_delta + (int64_t)size;
|
||||
|
@ -1126,9 +1134,9 @@ need_realloc:
|
|||
}
|
||||
ist->is_start = 0;
|
||||
|
||||
generate_silence(input_tmp, dec->sample_fmt, byte_delta);
|
||||
memcpy(input_tmp + byte_delta, buf, size);
|
||||
buf = input_tmp;
|
||||
generate_silence(async_buf, dec->sample_fmt, byte_delta);
|
||||
memcpy(async_buf + byte_delta, buf, size);
|
||||
buf = async_buf;
|
||||
size += byte_delta;
|
||||
av_log(NULL, AV_LOG_VERBOSE, "adding %d audio samples of silence\n", idelta);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue