[FFmpeg-devel] [PATCH 51/57] avcodec/h261dec: Simplify decoding GOB header

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Wed Jun 12 16:48:47 EEST 2024


h261_resync() can be completely removed, because
h261_decode_gob_header() checks for a GOB header itself if
gob_start_code_skipped is zero.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
 libavcodec/h261dec.c | 27 +--------------------------
 1 file changed, 1 insertion(+), 26 deletions(-)

diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c
index 2038afc591..f1c1e1a48a 100644
--- a/libavcodec/h261dec.c
+++ b/libavcodec/h261dec.c
@@ -165,31 +165,6 @@ static int h261_decode_gob_header(H261DecContext *h)
     return 0;
 }
 
-/**
- * Decode the group of blocks / video packet header.
- * @return <0 if no resync found
- */
-static int h261_resync(H261DecContext *h)
-{
-    MpegEncContext *const s = &h->s;
-    int ret;
-
-    if (h->gob_start_code_skipped) {
-        ret = h261_decode_gob_header(h);
-        if (ret >= 0)
-            return 0;
-    } else {
-        if (show_bits(&s->gb, 15) == 0) {
-            ret = h261_decode_gob_header(h);
-            if (ret >= 0)
-                return 0;
-        }
-        // OK, it is not where it is supposed to be ...
-    }
-
-    return -1;
-}
-
 /**
  * Decode skipped macroblocks.
  * @return 0
@@ -626,7 +601,7 @@ static int h261_decode_frame(AVCodecContext *avctx, AVFrame *pict,
     s->mb_y = 0;
 
     while (h->gob_number < (s->mb_height == 18 ? 12 : 5)) {
-        if (h261_resync(h) < 0)
+        if (h261_decode_gob_header(h) < 0)
             break;
         h261_decode_gob(h);
     }
-- 
2.40.1



More information about the ffmpeg-devel mailing list