shithub: opus

Download patch

ref: b446e96ad1ff1aad301940cb6cdb7455c83e6cfb
parent: 41bf2a0ac60eb03d8d762f33da1b94339fa4ba39
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Mon May 8 13:59:40 EDT 2023

Fix extensions padding for CBR

--- a/src/opus_demo.c
+++ b/src/opus_demo.c
@@ -712,6 +712,11 @@
                    stop = 1;
             }
             len = opus_encode(enc, in, frame_size, data, max_payload_bytes);
+            if (len < 0)
+            {
+                fprintf (stderr, "opus_encode() returned %d\n", len);
+                goto failure;
+            }
             nb_encoded = opus_packet_get_samples_per_frame(data, sampling_rate)*opus_packet_get_nb_frames(data, len);
             remaining = frame_size-nb_encoded;
             for(i=0;i<remaining*channels;i++)
@@ -732,11 +737,6 @@
                opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate_bps));
             }
             opus_encoder_ctl(enc, OPUS_GET_FINAL_RANGE(&enc_final_range));
-            if (len < 0)
-            {
-                fprintf (stderr, "opus_encode() returned %d\n", len);
-                goto failure;
-            }
             curr_mode_count += frame_size;
             if (curr_mode_count > mode_switch_time && curr_mode < nb_modes_in_list-1)
             {
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -2213,6 +2213,8 @@
            ret = opus_packet_pad_impl(data, ret, max_data_bytes, !st->use_vbr, &extension, 1);
        } else if (!st->use_vbr) {
            ret = opus_packet_pad(data, ret, max_data_bytes);
+           if (ret == OPUS_OK)
+              ret = max_data_bytes;
        }
        if (ret < 0)
        {
--