From acddc7a58f3f36f9360282938e935079666865f4 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Fri, 24 May 2024 16:43:31 +0200 Subject: [PATCH 10/21] avcodec/e?ac3enc: Inform compiler about PutBitContext being blank This turned out to be very beneficial: For GCC 13, the codesize of ac3_output_frame_header went down from 4522B to 1247B and from 10762B to 9298B for eac3_output_frame_header. For Clang 17, the numbers went down from 3923B to 2477B and from 8338B to 6548B (always with -O3). Signed-off-by: Andreas Rheinhardt --- libavcodec/ac3enc.c | 2 ++ libavcodec/eac3enc.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index 3649289865..a1783577c5 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -1638,6 +1638,8 @@ static void ac3_output_frame_header(AC3EncodeContext *s, PutBitContext *pb) { AC3EncOptions *opt = &s->options; + put_bits_assume_flushed(pb); + put_bits(pb, 16, 0x0b77); /* frame header */ put_bits(pb, 16, 0); /* crc1: will be filled later */ put_bits(pb, 2, s->bit_alloc.sr_code); diff --git a/libavcodec/eac3enc.c b/libavcodec/eac3enc.c index 3590b821a3..10b1ab337c 100644 --- a/libavcodec/eac3enc.c +++ b/libavcodec/eac3enc.c @@ -135,6 +135,8 @@ static void eac3_output_frame_header(AC3EncodeContext *s, PutBitContext *pb) int blk, ch; AC3EncOptions *opt = &s->options; + put_bits_assume_flushed(pb); + put_bits(pb, 16, 0x0b77); /* sync word */ /* BSI header */ -- 2.45.2