mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Store CRC context locally to reduce number of calls to av_crc_get_table().
Originally committed as revision 26082 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
0e9b064305
commit
a897423baa
@ -1571,6 +1571,7 @@ static unsigned int pow_poly(unsigned int a, unsigned int n, unsigned int poly)
|
||||
*/
|
||||
static void output_frame_end(AC3EncodeContext *s)
|
||||
{
|
||||
const AVCRC *crc_ctx = av_crc_get_table(AV_CRC_16_ANSI);
|
||||
int frame_size_58, pad_bytes, crc1, crc2, crc_inv;
|
||||
uint8_t *frame;
|
||||
|
||||
@ -1586,14 +1587,14 @@ static void output_frame_end(AC3EncodeContext *s)
|
||||
|
||||
/* compute crc1 */
|
||||
/* this is not so easy because it is at the beginning of the data... */
|
||||
crc1 = av_bswap16(av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0,
|
||||
crc1 = av_bswap16(av_crc(crc_ctx, 0,
|
||||
frame + 4, frame_size_58 - 4));
|
||||
crc_inv = s->crc_inv[s->frame_size > s->frame_size_min];
|
||||
crc1 = mul_poly(crc_inv, crc1, CRC16_POLY);
|
||||
AV_WB16(frame + 2, crc1);
|
||||
|
||||
/* compute crc2 */
|
||||
crc2 = av_bswap16(av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0,
|
||||
crc2 = av_bswap16(av_crc(crc_ctx, 0,
|
||||
frame + frame_size_58,
|
||||
s->frame_size - frame_size_58 - 2));
|
||||
AV_WB16(frame + s->frame_size - 2, crc2);
|
||||
|
Loading…
Reference in New Issue
Block a user