summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@amazon.com>2023-05-08 17:59:40 -0400
committerJean-Marc Valin <jmvalin@amazon.com>2023-05-08 17:59:40 -0400
commit4f206c7347937fe43e7f8f91616e1f35b83b7aa4 (patch)
tree6d5c19f8f2f872ce446db797d180959888ab7777
parent61c51875814c65b6d1d877cc80c5920bbeae196a (diff)
downloadopus-4f206c7347937fe43e7f8f91616e1f35b83b7aa4.tar.gz
Fix extensions padding for CBR
-rw-r--r--src/opus_demo.c10
-rw-r--r--src/opus_encoder.c2
2 files changed, 7 insertions, 5 deletions
diff --git a/src/opus_demo.c b/src/opus_demo.c
index 54249b5f..294dd858 100644
--- a/src/opus_demo.c
+++ b/src/opus_demo.c
@@ -712,6 +712,11 @@ int main(int argc, char *argv[])
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 @@ int main(int argc, char *argv[])
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)
{
diff --git a/src/opus_encoder.c b/src/opus_encoder.c
index b3c4208f..e05a65ab 100644
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -2213,6 +2213,8 @@ opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_
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)
{