Browse Source

ac3enc: use function pointer to choose between AC-3 and E-AC-3 header output

functions.
tags/n0.8
Justin Ruggles 14 years ago
parent
commit
36151b3e31
2 changed files with 9 additions and 4 deletions
  1. +7
    -4
      libavcodec/ac3enc.c
  2. +2
    -0
      libavcodec/ac3enc.h

+ 7
- 4
libavcodec/ac3enc.c View File

@@ -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);


+ 2
- 0
libavcodec/ac3enc.h View File

@@ -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 */

Loading…
Cancel
Save