diff mbox series

[FFmpeg-devel,2/2] avcodec/ac3enc: Move transient PutBitContext to stack

Message ID AS8P250MB07448B81F354E793269DCF968FEE2@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
State Accepted
Commit 59b1838e0955bb092ebc9d6e9f8aa7d8753d4d33
Headers show
Series [FFmpeg-devel,1/2] avcodec/ac3enc_template: Avoid always-true check | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Andreas Rheinhardt May 17, 2024, 5:59 p.m. UTC
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavcodec/ac3enc.c  | 187 ++++++++++++++++++++++---------------------
 libavcodec/ac3enc.h  |   6 +-
 libavcodec/eac3enc.c | 123 ++++++++++++++--------------
 3 files changed, 159 insertions(+), 157 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c
index 1a869ab865..3649289865 100644
--- a/libavcodec/ac3enc.c
+++ b/libavcodec/ac3enc.c
@@ -1634,63 +1634,63 @@  static void ac3_quantize_mantissas(AC3EncodeContext *s)
 /*
  * Write the AC-3 frame header to the output bitstream.
  */
-static void ac3_output_frame_header(AC3EncodeContext *s)
+static void ac3_output_frame_header(AC3EncodeContext *s, PutBitContext *pb)
 {
     AC3EncOptions *opt = &s->options;
 
-    put_bits(&s->pb, 16, 0x0b77);   /* frame header */
-    put_bits(&s->pb, 16, 0);        /* crc1: will be filled later */
-    put_bits(&s->pb, 2,  s->bit_alloc.sr_code);
-    put_bits(&s->pb, 6,  s->frame_size_code + (s->frame_size - s->frame_size_min) / 2);
-    put_bits(&s->pb, 5,  s->bitstream_id);
-    put_bits(&s->pb, 3,  s->bitstream_mode);
-    put_bits(&s->pb, 3,  s->channel_mode);
+    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);
+    put_bits(pb, 6,  s->frame_size_code + (s->frame_size - s->frame_size_min) / 2);
+    put_bits(pb, 5,  s->bitstream_id);
+    put_bits(pb, 3,  s->bitstream_mode);
+    put_bits(pb, 3,  s->channel_mode);
     if ((s->channel_mode & 0x01) && s->channel_mode != AC3_CHMODE_MONO)
-        put_bits(&s->pb, 2, s->center_mix_level);
+        put_bits(pb, 2, s->center_mix_level);
     if (s->channel_mode & 0x04)
-        put_bits(&s->pb, 2, s->surround_mix_level);
+        put_bits(pb, 2, s->surround_mix_level);
     if (s->channel_mode == AC3_CHMODE_STEREO)
-        put_bits(&s->pb, 2, opt->dolby_surround_mode);
-    put_bits(&s->pb, 1, s->lfe_on); /* LFE */
-    put_bits(&s->pb, 5, -opt->dialogue_level);
-    put_bits(&s->pb, 1, 0);         /* no compression control word */
-    put_bits(&s->pb, 1, 0);         /* no lang code */
-    put_bits(&s->pb, 1, opt->audio_production_info);
+        put_bits(pb, 2, opt->dolby_surround_mode);
+    put_bits(pb, 1, s->lfe_on); /* LFE */
+    put_bits(pb, 5, -opt->dialogue_level);
+    put_bits(pb, 1, 0);         /* no compression control word */
+    put_bits(pb, 1, 0);         /* no lang code */
+    put_bits(pb, 1, opt->audio_production_info);
     if (opt->audio_production_info) {
-        put_bits(&s->pb, 5, opt->mixing_level - 80);
-        put_bits(&s->pb, 2, opt->room_type);
+        put_bits(pb, 5, opt->mixing_level - 80);
+        put_bits(pb, 2, opt->room_type);
     }
-    put_bits(&s->pb, 1, opt->copyright);
-    put_bits(&s->pb, 1, opt->original);
+    put_bits(pb, 1, opt->copyright);
+    put_bits(pb, 1, opt->original);
     if (s->bitstream_id == 6) {
         /* alternate bit stream syntax */
-        put_bits(&s->pb, 1, opt->extended_bsi_1);
+        put_bits(pb, 1, opt->extended_bsi_1);
         if (opt->extended_bsi_1) {
-            put_bits(&s->pb, 2, opt->preferred_stereo_downmix);
-            put_bits(&s->pb, 3, s->ltrt_center_mix_level);
-            put_bits(&s->pb, 3, s->ltrt_surround_mix_level);
-            put_bits(&s->pb, 3, s->loro_center_mix_level);
-            put_bits(&s->pb, 3, s->loro_surround_mix_level);
+            put_bits(pb, 2, opt->preferred_stereo_downmix);
+            put_bits(pb, 3, s->ltrt_center_mix_level);
+            put_bits(pb, 3, s->ltrt_surround_mix_level);
+            put_bits(pb, 3, s->loro_center_mix_level);
+            put_bits(pb, 3, s->loro_surround_mix_level);
         }
-        put_bits(&s->pb, 1, opt->extended_bsi_2);
+        put_bits(pb, 1, opt->extended_bsi_2);
         if (opt->extended_bsi_2) {
-            put_bits(&s->pb, 2, opt->dolby_surround_ex_mode);
-            put_bits(&s->pb, 2, opt->dolby_headphone_mode);
-            put_bits(&s->pb, 1, opt->ad_converter_type);
-            put_bits(&s->pb, 9, 0);     /* xbsi2 and encinfo : reserved */
+            put_bits(pb, 2, opt->dolby_surround_ex_mode);
+            put_bits(pb, 2, opt->dolby_headphone_mode);
+            put_bits(pb, 1, opt->ad_converter_type);
+            put_bits(pb, 9, 0);     /* xbsi2 and encinfo : reserved */
         }
     } else {
-        put_bits(&s->pb, 1, 0);     /* no time code 1 */
-        put_bits(&s->pb, 1, 0);     /* no time code 2 */
+        put_bits(pb, 1, 0);     /* no time code 1 */
+        put_bits(pb, 1, 0);     /* no time code 2 */
     }
-    put_bits(&s->pb, 1, 0);         /* no additional bit stream info */
+    put_bits(pb, 1, 0);         /* no additional bit stream info */
 }
 
 
 /*
  * Write one audio block to the output bitstream.
  */
-static void output_audio_block(AC3EncodeContext *s, int blk)
+static void output_audio_block(AC3EncodeContext *s, PutBitContext *pb, int blk)
 {
     int ch, i, baie, bnd, got_cpl, av_uninit(ch0);
     AC3Block *block = &s->blocks[blk];
@@ -1698,48 +1698,48 @@  static void output_audio_block(AC3EncodeContext *s, int blk)
     /* block switching */
     if (!s->eac3) {
         for (ch = 0; ch < s->fbw_channels; ch++)
-            put_bits(&s->pb, 1, 0);
+            put_bits(pb, 1, 0);
     }
 
     /* dither flags */
     if (!s->eac3) {
         for (ch = 0; ch < s->fbw_channels; ch++)
-            put_bits(&s->pb, 1, 1);
+            put_bits(pb, 1, 1);
     }
 
     /* dynamic range codes */
-    put_bits(&s->pb, 1, 0);
+    put_bits(pb, 1, 0);
 
     /* spectral extension */
     if (s->eac3)
-        put_bits(&s->pb, 1, 0);
+        put_bits(pb, 1, 0);
 
     /* channel coupling */
     if (!s->eac3)
-        put_bits(&s->pb, 1, block->new_cpl_strategy);
+        put_bits(pb, 1, block->new_cpl_strategy);
     if (block->new_cpl_strategy) {
         if (!s->eac3)
-            put_bits(&s->pb, 1, block->cpl_in_use);
+            put_bits(pb, 1, block->cpl_in_use);
         if (block->cpl_in_use) {
             int start_sub, end_sub;
             if (s->eac3)
-                put_bits(&s->pb, 1, 0); /* enhanced coupling */
+                put_bits(pb, 1, 0); /* enhanced coupling */
             if (!s->eac3 || s->channel_mode != AC3_CHMODE_STEREO) {
                 for (ch = 1; ch <= s->fbw_channels; ch++)
-                    put_bits(&s->pb, 1, block->channel_in_cpl[ch]);
+                    put_bits(pb, 1, block->channel_in_cpl[ch]);
             }
             if (s->channel_mode == AC3_CHMODE_STEREO)
-                put_bits(&s->pb, 1, 0); /* phase flags in use */
+                put_bits(pb, 1, 0); /* phase flags in use */
             start_sub = (s->start_freq[CPL_CH] - 37) / 12;
             end_sub   = (s->cpl_end_freq       - 37) / 12;
-            put_bits(&s->pb, 4, start_sub);
-            put_bits(&s->pb, 4, end_sub - 3);
+            put_bits(pb, 4, start_sub);
+            put_bits(pb, 4, end_sub - 3);
             /* coupling band structure */
             if (s->eac3) {
-                put_bits(&s->pb, 1, 0); /* use default */
+                put_bits(pb, 1, 0); /* use default */
             } else {
                 for (bnd = start_sub+1; bnd < end_sub; bnd++)
-                    put_bits(&s->pb, 1, ff_eac3_default_cpl_band_struct[bnd]);
+                    put_bits(pb, 1, ff_eac3_default_cpl_band_struct[bnd]);
             }
         }
     }
@@ -1749,12 +1749,12 @@  static void output_audio_block(AC3EncodeContext *s, int blk)
         for (ch = 1; ch <= s->fbw_channels; ch++) {
             if (block->channel_in_cpl[ch]) {
                 if (!s->eac3 || block->new_cpl_coords[ch] != 2)
-                    put_bits(&s->pb, 1, block->new_cpl_coords[ch]);
+                    put_bits(pb, 1, block->new_cpl_coords[ch]);
                 if (block->new_cpl_coords[ch]) {
-                    put_bits(&s->pb, 2, block->cpl_master_exp[ch]);
+                    put_bits(pb, 2, block->cpl_master_exp[ch]);
                     for (bnd = 0; bnd < s->num_cpl_bands; bnd++) {
-                        put_bits(&s->pb, 4, block->cpl_coord_exp [ch][bnd]);
-                        put_bits(&s->pb, 4, block->cpl_coord_mant[ch][bnd]);
+                        put_bits(pb, 4, block->cpl_coord_exp [ch][bnd]);
+                        put_bits(pb, 4, block->cpl_coord_mant[ch][bnd]);
                     }
                 }
             }
@@ -1764,26 +1764,26 @@  static void output_audio_block(AC3EncodeContext *s, int blk)
     /* stereo rematrixing */
     if (s->channel_mode == AC3_CHMODE_STEREO) {
         if (!s->eac3 || blk > 0)
-            put_bits(&s->pb, 1, block->new_rematrixing_strategy);
+            put_bits(pb, 1, block->new_rematrixing_strategy);
         if (block->new_rematrixing_strategy) {
             /* rematrixing flags */
             for (bnd = 0; bnd < block->num_rematrixing_bands; bnd++)
-                put_bits(&s->pb, 1, block->rematrixing_flags[bnd]);
+                put_bits(pb, 1, block->rematrixing_flags[bnd]);
         }
     }
 
     /* exponent strategy */
     if (!s->eac3) {
         for (ch = !block->cpl_in_use; ch <= s->fbw_channels; ch++)
-            put_bits(&s->pb, 2, s->exp_strategy[ch][blk]);
+            put_bits(pb, 2, s->exp_strategy[ch][blk]);
         if (s->lfe_on)
-            put_bits(&s->pb, 1, s->exp_strategy[s->lfe_channel][blk]);
+            put_bits(pb, 1, s->exp_strategy[s->lfe_channel][blk]);
     }
 
     /* bandwidth */
     for (ch = 1; ch <= s->fbw_channels; ch++) {
         if (s->exp_strategy[ch][blk] != EXP_REUSE && !block->channel_in_cpl[ch])
-            put_bits(&s->pb, 6, s->bandwidth_code);
+            put_bits(pb, 6, s->bandwidth_code);
     }
 
     /* exponents */
@@ -1795,58 +1795,58 @@  static void output_audio_block(AC3EncodeContext *s, int blk)
             continue;
 
         /* DC exponent */
-        put_bits(&s->pb, 4, block->grouped_exp[ch][0] >> cpl);
+        put_bits(pb, 4, block->grouped_exp[ch][0] >> cpl);
 
         /* exponent groups */
         nb_groups = exponent_group_tab[cpl][s->exp_strategy[ch][blk]-1][block->end_freq[ch]-s->start_freq[ch]];
         for (i = 1; i <= nb_groups; i++)
-            put_bits(&s->pb, 7, block->grouped_exp[ch][i]);
+            put_bits(pb, 7, block->grouped_exp[ch][i]);
 
         /* gain range info */
         if (ch != s->lfe_channel && !cpl)
-            put_bits(&s->pb, 2, 0);
+            put_bits(pb, 2, 0);
     }
 
     /* bit allocation info */
     if (!s->eac3) {
         baie = (blk == 0);
-        put_bits(&s->pb, 1, baie);
+        put_bits(pb, 1, baie);
         if (baie) {
-            put_bits(&s->pb, 2, s->slow_decay_code);
-            put_bits(&s->pb, 2, s->fast_decay_code);
-            put_bits(&s->pb, 2, s->slow_gain_code);
-            put_bits(&s->pb, 2, s->db_per_bit_code);
-            put_bits(&s->pb, 3, s->floor_code);
+            put_bits(pb, 2, s->slow_decay_code);
+            put_bits(pb, 2, s->fast_decay_code);
+            put_bits(pb, 2, s->slow_gain_code);
+            put_bits(pb, 2, s->db_per_bit_code);
+            put_bits(pb, 3, s->floor_code);
         }
     }
 
     /* snr offset */
     if (!s->eac3) {
-        put_bits(&s->pb, 1, block->new_snr_offsets);
+        put_bits(pb, 1, block->new_snr_offsets);
         if (block->new_snr_offsets) {
-            put_bits(&s->pb, 6, s->coarse_snr_offset);
+            put_bits(pb, 6, s->coarse_snr_offset);
             for (ch = !block->cpl_in_use; ch <= s->channels; ch++) {
-                put_bits(&s->pb, 4, s->fine_snr_offset[ch]);
-                put_bits(&s->pb, 3, s->fast_gain_code[ch]);
+                put_bits(pb, 4, s->fine_snr_offset[ch]);
+                put_bits(pb, 3, s->fast_gain_code[ch]);
             }
         }
     } else {
-        put_bits(&s->pb, 1, 0); /* no converter snr offset */
+        put_bits(pb, 1, 0); /* no converter snr offset */
     }
 
     /* coupling leak */
     if (block->cpl_in_use) {
         if (!s->eac3 || block->new_cpl_leak != 2)
-            put_bits(&s->pb, 1, block->new_cpl_leak);
+            put_bits(pb, 1, block->new_cpl_leak);
         if (block->new_cpl_leak) {
-            put_bits(&s->pb, 3, s->bit_alloc.cpl_fast_leak);
-            put_bits(&s->pb, 3, s->bit_alloc.cpl_slow_leak);
+            put_bits(pb, 3, s->bit_alloc.cpl_fast_leak);
+            put_bits(pb, 3, s->bit_alloc.cpl_slow_leak);
         }
     }
 
     if (!s->eac3) {
-        put_bits(&s->pb, 1, 0); /* no delta bit allocation */
-        put_bits(&s->pb, 1, 0); /* no data to skip */
+        put_bits(pb, 1, 0); /* no delta bit allocation */
+        put_bits(pb, 1, 0); /* no data to skip */
     }
 
     /* mantissas */
@@ -1864,13 +1864,13 @@  static void output_audio_block(AC3EncodeContext *s, int blk)
             b = s->ref_bap[ch][blk][i];
             switch (b) {
             case 0:                                          break;
-            case 1: if (q != 128) put_bits (&s->pb,   5, q); break;
-            case 2: if (q != 128) put_bits (&s->pb,   7, q); break;
-            case 3:               put_sbits(&s->pb,   3, q); break;
-            case 4: if (q != 128) put_bits (&s->pb,   7, q); break;
-            case 14:              put_sbits(&s->pb,  14, q); break;
-            case 15:              put_sbits(&s->pb,  16, q); break;
-            default:              put_sbits(&s->pb, b-1, q); break;
+            case 1: if (q != 128) put_bits (pb,   5, q); break;
+            case 2: if (q != 128) put_bits (pb,   7, q); break;
+            case 3:               put_sbits(pb,   3, q); break;
+            case 4: if (q != 128) put_bits (pb,   7, q); break;
+            case 14:              put_sbits(pb,  14, q); break;
+            case 15:              put_sbits(pb,  16, q); break;
+            default:              put_sbits(pb, b-1, q); break;
             }
         }
         if (ch == CPL_CH)
@@ -1917,7 +1917,7 @@  static unsigned int pow_poly(unsigned int a, unsigned int n, unsigned int poly)
 /*
  * Fill the end of the frame with 0's and compute the two CRCs.
  */
-static void output_frame_end(AC3EncodeContext *s)
+static void output_frame_end(AC3EncodeContext *s, PutBitContext *pb)
 {
     const AVCRC *crc_ctx = av_crc_get_table(AV_CRC_16_ANSI);
     int frame_size_58, pad_bytes, crc1, crc2, crc_inv;
@@ -1926,13 +1926,13 @@  static void output_frame_end(AC3EncodeContext *s)
     frame_size_58 = ((s->frame_size >> 2) + (s->frame_size >> 4)) << 1;
 
     /* pad the remainder of the frame with zeros */
-    av_assert2(s->frame_size * 8 - put_bits_count(&s->pb) >= 18);
-    flush_put_bits(&s->pb);
-    frame = s->pb.buf;
-    pad_bytes = s->frame_size - (put_bits_ptr(&s->pb) - frame) - 2;
+    av_assert2(s->frame_size * 8 - put_bits_count(pb) >= 18);
+    flush_put_bits(pb);
+    frame = pb->buf;
+    pad_bytes = s->frame_size - (put_bits_ptr(pb) - frame) - 2;
     av_assert2(pad_bytes >= 0);
     if (pad_bytes > 0)
-        memset(put_bits_ptr(&s->pb), 0, pad_bytes);
+        memset(put_bits_ptr(pb), 0, pad_bytes);
 
     if (s->eac3) {
         /* compute crc2 */
@@ -1969,16 +1969,17 @@  static void output_frame_end(AC3EncodeContext *s)
  */
 static void ac3_output_frame(AC3EncodeContext *s, unsigned char *frame)
 {
+    PutBitContext pb;
     int blk;
 
-    init_put_bits(&s->pb, frame, s->frame_size);
+    init_put_bits(&pb, frame, s->frame_size);
 
-    s->output_frame_header(s);
+    s->output_frame_header(s, &pb);
 
     for (blk = 0; blk < s->num_blocks; blk++)
-        output_audio_block(s, blk);
+        output_audio_block(s, &pb, blk);
 
-    output_frame_end(s);
+    output_frame_end(s, &pb);
 }
 
 int ff_ac3_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
diff --git a/libavcodec/ac3enc.h b/libavcodec/ac3enc.h
index 30812617cc..5e98ad188b 100644
--- a/libavcodec/ac3enc.h
+++ b/libavcodec/ac3enc.h
@@ -41,7 +41,6 @@ 
 #include "codec_internal.h"
 #include "mathops.h"
 #include "me_cmp.h"
-#include "put_bits.h"
 #include "audiodsp.h"
 
 #ifndef AC3ENC_FLOAT
@@ -151,6 +150,8 @@  typedef struct AC3Block {
     int      end_freq[AC3_MAX_CHANNELS];        ///< end frequency bin                  (endmant)
 } AC3Block;
 
+struct PutBitContext;
+
 /**
  * AC-3 encoder private context.
  */
@@ -158,7 +159,6 @@  typedef struct AC3EncodeContext {
     AVClass *av_class;                      ///< AVClass used for AVOption
     AC3EncOptions options;                  ///< encoding options
     AVCodecContext *avctx;                  ///< parent AVCodecContext
-    PutBitContext pb;                       ///< bitstream writer context
     AudioDSPContext adsp;
 #if AC3ENC_FLOAT
     AVFloatDSPContext *fdsp;
@@ -256,7 +256,7 @@  typedef struct AC3EncodeContext {
     void (*encode_frame)(struct AC3EncodeContext *s, uint8_t * const *samples);
 
     /* AC-3 vs. E-AC-3 function pointers */
-    void (*output_frame_header)(struct AC3EncodeContext *s);
+    void (*output_frame_header)(struct AC3EncodeContext *s, struct PutBitContext *pb);
 
     union {
         DECLARE_ALIGNED(32, float,   mdct_window_float)[AC3_BLOCK_SIZE];
diff --git a/libavcodec/eac3enc.c b/libavcodec/eac3enc.c
index c957174a70..8ef3e7e773 100644
--- a/libavcodec/eac3enc.c
+++ b/libavcodec/eac3enc.c
@@ -32,6 +32,7 @@ 
 #include "codec_internal.h"
 #include "eac3enc.h"
 #include "eac3_data.h"
+#include "put_bits.h"
 
 
 static const AVClass eac3enc_class = {
@@ -129,124 +130,124 @@  void ff_eac3_set_cpl_states(AC3EncodeContext *s)
 /**
  * Write the E-AC-3 frame header to the output bitstream.
  */
-static void eac3_output_frame_header(AC3EncodeContext *s)
+static void eac3_output_frame_header(AC3EncodeContext *s, PutBitContext *pb)
 {
     int blk, ch;
     AC3EncOptions *opt = &s->options;
 
-    put_bits(&s->pb, 16, 0x0b77);                   /* sync word */
+    put_bits(pb, 16, 0x0b77);                   /* sync word */
 
     /* BSI header */
-    put_bits(&s->pb,  2, 0);                        /* stream type = independent */
-    put_bits(&s->pb,  3, 0);                        /* substream id = 0 */
-    put_bits(&s->pb, 11, (s->frame_size / 2) - 1);  /* frame size */
-    put_bits(&s->pb, 2, s->bit_alloc.sr_code);      /* sample rate code */
-    put_bits(&s->pb, 2, s->num_blks_code);          /* number of blocks */
-    put_bits(&s->pb, 3, s->channel_mode);           /* audio coding mode */
-    put_bits(&s->pb, 1, s->lfe_on);                 /* LFE channel indicator */
-    put_bits(&s->pb, 5, s->bitstream_id);           /* bitstream id (EAC3=16) */
-    put_bits(&s->pb, 5, -opt->dialogue_level);      /* dialogue normalization level */
-    put_bits(&s->pb, 1, 0);                         /* no compression gain */
+    put_bits(pb,  2, 0);                        /* stream type = independent */
+    put_bits(pb,  3, 0);                        /* substream id = 0 */
+    put_bits(pb, 11, (s->frame_size / 2) - 1);  /* frame size */
+    put_bits(pb, 2, s->bit_alloc.sr_code);      /* sample rate code */
+    put_bits(pb, 2, s->num_blks_code);          /* number of blocks */
+    put_bits(pb, 3, s->channel_mode);           /* audio coding mode */
+    put_bits(pb, 1, s->lfe_on);                 /* LFE channel indicator */
+    put_bits(pb, 5, s->bitstream_id);           /* bitstream id (EAC3=16) */
+    put_bits(pb, 5, -opt->dialogue_level);      /* dialogue normalization level */
+    put_bits(pb, 1, 0);                         /* no compression gain */
     /* mixing metadata*/
-    put_bits(&s->pb, 1, opt->eac3_mixing_metadata);
+    put_bits(pb, 1, opt->eac3_mixing_metadata);
     if (opt->eac3_mixing_metadata) {
         if (s->channel_mode > AC3_CHMODE_STEREO)
-            put_bits(&s->pb, 2, opt->preferred_stereo_downmix);
+            put_bits(pb, 2, opt->preferred_stereo_downmix);
         if (s->has_center) {
-            put_bits(&s->pb, 3, s->ltrt_center_mix_level);
-            put_bits(&s->pb, 3, s->loro_center_mix_level);
+            put_bits(pb, 3, s->ltrt_center_mix_level);
+            put_bits(pb, 3, s->loro_center_mix_level);
         }
         if (s->has_surround) {
-            put_bits(&s->pb, 3, s->ltrt_surround_mix_level);
-            put_bits(&s->pb, 3, s->loro_surround_mix_level);
+            put_bits(pb, 3, s->ltrt_surround_mix_level);
+            put_bits(pb, 3, s->loro_surround_mix_level);
         }
         if (s->lfe_on)
-            put_bits(&s->pb, 1, 0);
-        put_bits(&s->pb, 1, 0);                     /* no program scale */
-        put_bits(&s->pb, 1, 0);                     /* no ext program scale */
-        put_bits(&s->pb, 2, 0);                     /* no mixing parameters */
+            put_bits(pb, 1, 0);
+        put_bits(pb, 1, 0);                     /* no program scale */
+        put_bits(pb, 1, 0);                     /* no ext program scale */
+        put_bits(pb, 2, 0);                     /* no mixing parameters */
         if (s->channel_mode < AC3_CHMODE_STEREO)
-            put_bits(&s->pb, 1, 0);                 /* no pan info */
-        put_bits(&s->pb, 1, 0);                     /* no frame mix config info */
+            put_bits(pb, 1, 0);                 /* no pan info */
+        put_bits(pb, 1, 0);                     /* no frame mix config info */
     }
     /* info metadata*/
-    put_bits(&s->pb, 1, opt->eac3_info_metadata);
+    put_bits(pb, 1, opt->eac3_info_metadata);
     if (opt->eac3_info_metadata) {
-        put_bits(&s->pb, 3, s->bitstream_mode);
-        put_bits(&s->pb, 1, opt->copyright);
-        put_bits(&s->pb, 1, opt->original);
+        put_bits(pb, 3, s->bitstream_mode);
+        put_bits(pb, 1, opt->copyright);
+        put_bits(pb, 1, opt->original);
         if (s->channel_mode == AC3_CHMODE_STEREO) {
-            put_bits(&s->pb, 2, opt->dolby_surround_mode);
-            put_bits(&s->pb, 2, opt->dolby_headphone_mode);
+            put_bits(pb, 2, opt->dolby_surround_mode);
+            put_bits(pb, 2, opt->dolby_headphone_mode);
         }
         if (s->channel_mode >= AC3_CHMODE_2F2R)
-            put_bits(&s->pb, 2, opt->dolby_surround_ex_mode);
-        put_bits(&s->pb, 1, opt->audio_production_info);
+            put_bits(pb, 2, opt->dolby_surround_ex_mode);
+        put_bits(pb, 1, opt->audio_production_info);
         if (opt->audio_production_info) {
-            put_bits(&s->pb, 5, opt->mixing_level - 80);
-            put_bits(&s->pb, 2, opt->room_type);
-            put_bits(&s->pb, 1, opt->ad_converter_type);
+            put_bits(pb, 5, opt->mixing_level - 80);
+            put_bits(pb, 2, opt->room_type);
+            put_bits(pb, 1, opt->ad_converter_type);
         }
-        put_bits(&s->pb, 1, 0);
+        put_bits(pb, 1, 0);
     }
     if (s->num_blocks != 6)
-        put_bits(&s->pb, 1, !(s->avctx->frame_num % 6)); /* converter sync flag */
-    put_bits(&s->pb, 1, 0);                         /* no additional bit stream info */
+        put_bits(pb, 1, !(s->avctx->frame_num % 6)); /* converter sync flag */
+    put_bits(pb, 1, 0);                         /* no additional bit stream info */
 
     /* frame header */
     if (s->num_blocks == 6) {
-        put_bits(&s->pb, 1, !s->use_frame_exp_strategy); /* exponent strategy syntax */
-        put_bits(&s->pb, 1, 0);                     /* aht enabled = no */
+        put_bits(pb, 1, !s->use_frame_exp_strategy); /* exponent strategy syntax */
+        put_bits(pb, 1, 0);                     /* aht enabled = no */
     }
-    put_bits(&s->pb, 2, 0);                         /* snr offset strategy = 1 */
-    put_bits(&s->pb, 1, 0);                         /* transient pre-noise processing enabled = no */
-    put_bits(&s->pb, 1, 0);                         /* block switch syntax enabled = no */
-    put_bits(&s->pb, 1, 0);                         /* dither flag syntax enabled = no */
-    put_bits(&s->pb, 1, 0);                         /* bit allocation model syntax enabled = no */
-    put_bits(&s->pb, 1, 0);                         /* fast gain codes enabled = no */
-    put_bits(&s->pb, 1, 0);                         /* dba syntax enabled = no */
-    put_bits(&s->pb, 1, 0);                         /* skip field syntax enabled = no */
-    put_bits(&s->pb, 1, 0);                         /* spx enabled = no */
+    put_bits(pb, 2, 0);                         /* snr offset strategy = 1 */
+    put_bits(pb, 1, 0);                         /* transient pre-noise processing enabled = no */
+    put_bits(pb, 1, 0);                         /* block switch syntax enabled = no */
+    put_bits(pb, 1, 0);                         /* dither flag syntax enabled = no */
+    put_bits(pb, 1, 0);                         /* bit allocation model syntax enabled = no */
+    put_bits(pb, 1, 0);                         /* fast gain codes enabled = no */
+    put_bits(pb, 1, 0);                         /* dba syntax enabled = no */
+    put_bits(pb, 1, 0);                         /* skip field syntax enabled = no */
+    put_bits(pb, 1, 0);                         /* spx enabled = no */
     /* coupling strategy use flags */
     if (s->channel_mode > AC3_CHMODE_MONO) {
-        put_bits(&s->pb, 1, s->blocks[0].cpl_in_use);
+        put_bits(pb, 1, s->blocks[0].cpl_in_use);
         for (blk = 1; blk < s->num_blocks; blk++) {
             AC3Block *block = &s->blocks[blk];
-            put_bits(&s->pb, 1, block->new_cpl_strategy);
+            put_bits(pb, 1, block->new_cpl_strategy);
             if (block->new_cpl_strategy)
-                put_bits(&s->pb, 1, block->cpl_in_use);
+                put_bits(pb, 1, block->cpl_in_use);
         }
     }
     /* exponent strategy */
     if (s->use_frame_exp_strategy) {
         for (ch = !s->cpl_on; ch <= s->fbw_channels; ch++)
-            put_bits(&s->pb, 5, s->frame_exp_strategy[ch]);
+            put_bits(pb, 5, s->frame_exp_strategy[ch]);
     } else {
         for (blk = 0; blk < s->num_blocks; blk++)
             for (ch = !s->blocks[blk].cpl_in_use; ch <= s->fbw_channels; ch++)
-                put_bits(&s->pb, 2, s->exp_strategy[ch][blk]);
+                put_bits(pb, 2, s->exp_strategy[ch][blk]);
     }
     if (s->lfe_on) {
         for (blk = 0; blk < s->num_blocks; blk++)
-            put_bits(&s->pb, 1, s->exp_strategy[s->lfe_channel][blk]);
+            put_bits(pb, 1, s->exp_strategy[s->lfe_channel][blk]);
     }
     /* E-AC-3 to AC-3 converter exponent strategy (not optional when num blocks == 6) */
     if (s->num_blocks != 6) {
-        put_bits(&s->pb, 1, 0);
+        put_bits(pb, 1, 0);
     } else {
         for (ch = 1; ch <= s->fbw_channels; ch++) {
             if (s->use_frame_exp_strategy)
-                put_bits(&s->pb, 5, s->frame_exp_strategy[ch]);
+                put_bits(pb, 5, s->frame_exp_strategy[ch]);
             else
-                put_bits(&s->pb, 5, 0);
+                put_bits(pb, 5, 0);
         }
     }
     /* snr offsets */
-    put_bits(&s->pb, 6, s->coarse_snr_offset);
-    put_bits(&s->pb, 4, s->fine_snr_offset[1]);
+    put_bits(pb, 6, s->coarse_snr_offset);
+    put_bits(pb, 4, s->fine_snr_offset[1]);
     /* block start info */
     if (s->num_blocks > 1)
-        put_bits(&s->pb, 1, 0);
+        put_bits(pb, 1, 0);
 }
 
 static av_cold int eac3_encode_init(AVCodecContext *avctx)