diff mbox series

[FFmpeg-devel,1/1] opus_silk: reset midonly flag after skipping LBRR

Message ID 20220831183207.2703227-1-tmatth@videolan.org
State New
Headers show
Series [FFmpeg-devel,1/1] opus_silk: reset midonly flag after skipping LBRR | 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

Tristan Matthews Aug. 31, 2022, 6:32 p.m. UTC
Fix suggested by Mark Harris. Fixes ticket #9890
---
 libavcodec/opus_silk.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Tristan Matthews Sept. 15, 2022, 5:59 p.m. UTC | #1
On Wed, Aug 31, 2022 at 2:32 PM Tristan Matthews <tmatth@videolan.org> wrote:
>
> Fix suggested by Mark Harris. Fixes ticket #9890
> ---
>  libavcodec/opus_silk.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/libavcodec/opus_silk.c b/libavcodec/opus_silk.c
> index 8523b55ada..0b4438388e 100644
> --- a/libavcodec/opus_silk.c
> +++ b/libavcodec/opus_silk.c
> @@ -828,11 +828,16 @@ int ff_silk_decode_superframe(SilkContext *s, OpusRangeCoder *rc,
>
>      /* decode the LBRR frames */
>      for (i = 0; i < nb_frames; i++) {
> +        int skipped = 0;
>          for (j = 0; j < coded_channels; j++)
>              if (redundancy[j] & (1 << i)) {
>                  int active1 = (j == 0 && !(redundancy[1] & (1 << i))) ? 0 : 1;
>                  silk_decode_frame(s, rc, i, j, coded_channels, 1, active1, 1);
> +                skipped = 1;
>              }
> +        /* reset midonly if needed */
> +        if (skipped)
> +            s->midonly = 0;
>      }
>
>      for (i = 0; i < nb_frames; i++) {
> --
> 2.34.1
>

Ping
diff mbox series

Patch

diff --git a/libavcodec/opus_silk.c b/libavcodec/opus_silk.c
index 8523b55ada..0b4438388e 100644
--- a/libavcodec/opus_silk.c
+++ b/libavcodec/opus_silk.c
@@ -828,11 +828,16 @@  int ff_silk_decode_superframe(SilkContext *s, OpusRangeCoder *rc,
 
     /* decode the LBRR frames */
     for (i = 0; i < nb_frames; i++) {
+        int skipped = 0;
         for (j = 0; j < coded_channels; j++)
             if (redundancy[j] & (1 << i)) {
                 int active1 = (j == 0 && !(redundancy[1] & (1 << i))) ? 0 : 1;
                 silk_decode_frame(s, rc, i, j, coded_channels, 1, active1, 1);
+                skipped = 1;
             }
+        /* reset midonly if needed */
+        if (skipped)
+            s->midonly = 0;
     }
 
     for (i = 0; i < nb_frames; i++) {