From 36151b3e3112cd7d8ae0e02e850dee16bd966696 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Fri, 10 Jun 2011 11:45:03 -0400 Subject: [PATCH] ac3enc: use function pointer to choose between AC-3 and E-AC-3 header output functions. --- libavcodec/ac3enc.c | 11 +++++++---- libavcodec/ac3enc.h | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index e8ccde514a..9403bf6443 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -1987,10 +1987,7 @@ static void output_frame(AC3EncodeContext *s, unsigned char *frame) init_put_bits(&s->pb, frame, AC3_MAX_CODED_FRAME_SIZE); - if (CONFIG_EAC3_ENCODER && s->eac3) - ff_eac3_output_frame_header(s); - else - ac3_output_frame_header(s); + s->output_frame_header(s); for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) output_audio_block(s, blk); @@ -2732,6 +2729,12 @@ static av_cold int ac3_encode_init(AVCodecContext *avctx) s->crc_inv[1] = pow_poly((CRC16_POLY >> 1), (8 * frame_size_58) - 16, CRC16_POLY); } + /* set function pointers */ + if (CONFIG_EAC3_ENCODER && s->eac3) + s->output_frame_header = ff_eac3_output_frame_header; + else + s->output_frame_header = ac3_output_frame_header; + set_bandwidth(s); exponent_init(s); diff --git a/libavcodec/ac3enc.h b/libavcodec/ac3enc.h index 0541683537..34ca2e449f 100644 --- a/libavcodec/ac3enc.h +++ b/libavcodec/ac3enc.h @@ -209,6 +209,8 @@ typedef struct AC3EncodeContext { int ref_bap_set; ///< indicates if ref_bap pointers have been set DECLARE_ALIGNED(32, SampleType, windowed_samples)[AC3_WINDOW_SIZE]; + + void (*output_frame_header)(struct AC3EncodeContext *s); } AC3EncodeContext; #endif /* AVCODEC_AC3ENC_H */