mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-06 15:49:50 +08:00
Merge commit 'b5849f77095439e994b11c25e6063d443b36c228'
* commit 'b5849f77095439e994b11c25e6063d443b36c228': (21 commits) ac3enc: merge AC3MDCTContext with AC3EncodeContext. ac3enc: prefer passing AC3EncodeContext rather than AVCodecContext ac3enc: fix memleak mpeg1video: add CODEC_CAP_SLICE_THREADS. lavf: fix segfault in av_open_input_stream() mpegtsenc: set Random Access indicator on keyframe start packets lavf: Cleanup try_decode_frame() logic. Replace some gotos that lead to single return statements by direct return. build: move tests/seek_test.c to libavformat and reuse generic build rules mxfenc: include needed header for ff_iso8601_to_unix_time() prototype Add a check for strptime(). lavf: factor out conversion of ISO8601 string to unix time wav: parse 'bext' metadata wav: keep parsing until EOF if the input is seekable and we know the size of the data tag wav: Refactor the tag checking into a switch statement wav: make sure neither data_size nor sample_count is negative. wav: refactor the 'fmt ' tag search and parsing. wav: add an option for writing BEXT chunk ffmpeg: get rid of a pointless limit on number of streams. ffmpeg: remove an unused define. ... Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@ -1535,10 +1535,10 @@ void ff_ac3_output_frame(AC3EncodeContext *s, unsigned char *frame)
|
||||
}
|
||||
|
||||
|
||||
static void dprint_options(AVCodecContext *avctx)
|
||||
static void dprint_options(AC3EncodeContext *s)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
AC3EncodeContext *s = avctx->priv_data;
|
||||
AVCodecContext *avctx = s->avctx;
|
||||
AC3EncOptions *opt = &s->options;
|
||||
char strbuf[32];
|
||||
|
||||
@ -1689,9 +1689,9 @@ static void validate_mix_level(void *log_ctx, const char *opt_name,
|
||||
* Validate metadata options as set by AVOption system.
|
||||
* These values can optionally be changed per-frame.
|
||||
*/
|
||||
int ff_ac3_validate_metadata(AVCodecContext *avctx)
|
||||
int ff_ac3_validate_metadata(AC3EncodeContext *s)
|
||||
{
|
||||
AC3EncodeContext *s = avctx->priv_data;
|
||||
AVCodecContext *avctx = s->avctx;
|
||||
AC3EncOptions *opt = &s->options;
|
||||
|
||||
/* validate mixing levels */
|
||||
@ -1820,6 +1820,8 @@ av_cold int ff_ac3_encode_close(AVCodecContext *avctx)
|
||||
av_freep(&s->band_psd_buffer);
|
||||
av_freep(&s->mask_buffer);
|
||||
av_freep(&s->qmant_buffer);
|
||||
av_freep(&s->cpl_coord_exp_buffer);
|
||||
av_freep(&s->cpl_coord_mant_buffer);
|
||||
for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) {
|
||||
AC3Block *block = &s->blocks[blk];
|
||||
av_freep(&block->mdct_coef);
|
||||
@ -1830,10 +1832,11 @@ av_cold int ff_ac3_encode_close(AVCodecContext *avctx)
|
||||
av_freep(&block->band_psd);
|
||||
av_freep(&block->mask);
|
||||
av_freep(&block->qmant);
|
||||
av_freep(&block->cpl_coord_exp);
|
||||
av_freep(&block->cpl_coord_mant);
|
||||
}
|
||||
|
||||
s->mdct_end(s->mdct);
|
||||
av_freep(&s->mdct);
|
||||
s->mdct_end(s);
|
||||
|
||||
av_freep(&avctx->coded_frame);
|
||||
return 0;
|
||||
@ -1888,8 +1891,9 @@ static av_cold int set_channel_info(AC3EncodeContext *s, int channels,
|
||||
}
|
||||
|
||||
|
||||
static av_cold int validate_options(AVCodecContext *avctx, AC3EncodeContext *s)
|
||||
static av_cold int validate_options(AC3EncodeContext *s)
|
||||
{
|
||||
AVCodecContext *avctx = s->avctx;
|
||||
int i, ret, max_sr;
|
||||
|
||||
/* validate channel layout */
|
||||
@ -1994,7 +1998,7 @@ static av_cold int validate_options(AVCodecContext *avctx, AC3EncodeContext *s)
|
||||
}
|
||||
|
||||
if (!s->eac3) {
|
||||
ret = ff_ac3_validate_metadata(avctx);
|
||||
ret = ff_ac3_validate_metadata(s);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
@ -2081,10 +2085,10 @@ static av_cold void set_bandwidth(AC3EncodeContext *s)
|
||||
}
|
||||
|
||||
|
||||
static av_cold int allocate_buffers(AVCodecContext *avctx)
|
||||
static av_cold int allocate_buffers(AC3EncodeContext *s)
|
||||
{
|
||||
AVCodecContext *avctx = s->avctx;
|
||||
int blk, ch;
|
||||
AC3EncodeContext *s = avctx->priv_data;
|
||||
int channels = s->channels + 1; /* includes coupling channel */
|
||||
|
||||
if (s->allocate_sample_buffers(s))
|
||||
@ -2197,7 +2201,7 @@ av_cold int ff_ac3_encode_init(AVCodecContext *avctx)
|
||||
|
||||
ff_ac3_common_init();
|
||||
|
||||
ret = validate_options(avctx, s);
|
||||
ret = validate_options(s);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -2237,12 +2241,11 @@ av_cold int ff_ac3_encode_init(AVCodecContext *avctx)
|
||||
|
||||
bit_alloc_init(s);
|
||||
|
||||
FF_ALLOCZ_OR_GOTO(avctx, s->mdct, sizeof(AC3MDCTContext), init_fail);
|
||||
ret = s->mdct_init(avctx, s->mdct, 9);
|
||||
ret = s->mdct_init(s);
|
||||
if (ret)
|
||||
goto init_fail;
|
||||
|
||||
ret = allocate_buffers(avctx);
|
||||
ret = allocate_buffers(s);
|
||||
if (ret)
|
||||
goto init_fail;
|
||||
|
||||
@ -2251,7 +2254,7 @@ av_cold int ff_ac3_encode_init(AVCodecContext *avctx)
|
||||
dsputil_init(&s->dsp, avctx);
|
||||
ff_ac3dsp_init(&s->ac3dsp, avctx->flags & CODEC_FLAG_BITEXACT);
|
||||
|
||||
dprint_options(avctx);
|
||||
dprint_options(s);
|
||||
|
||||
return 0;
|
||||
init_fail:
|
||||
|
Reference in New Issue
Block a user