[FFmpeg-devel] [PATCH 4/6] avcodec/extract_extradata_bsf: use the parsing code from vc1_split()

James Almer jamrial at gmail.com
Sat Mar 25 00:31:45 EET 2017


It's a simplifaction of the same code, originally commited as b4b9a64bdb6.

Signed-off-by: James Almer <jamrial at gmail.com>
---
 libavcodec/extract_extradata_bsf.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/libavcodec/extract_extradata_bsf.c b/libavcodec/extract_extradata_bsf.c
index 89981996f2..57a3d51bef 100644
--- a/libavcodec/extract_extradata_bsf.c
+++ b/libavcodec/extract_extradata_bsf.c
@@ -139,19 +139,15 @@ static int extract_extradata_vc1(AVBSFContext *ctx, AVPacket *pkt,
 {
     ExtractExtradataContext *s = ctx->priv_data;
     uint32_t state = UINT32_MAX;
+    const uint8_t *ptr = pkt->data, *end = pkt->data + pkt->size;
     int has_extradata = 0, extradata_size = 0;
-    int i;
 
-    for (i = 0; i < pkt->size; i++) {
-        state = (state << 8) | pkt->data[i];
-        if (IS_MARKER(state)) {
-            if (state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT) {
-                has_extradata = 1;
-            } else if (has_extradata) {
-                extradata_size = i - 3;
-                break;
-            }
-        }
+    while (ptr < end) {
+        ptr = avpriv_find_start_code(ptr, end, &state);
+        if (state == VC1_CODE_SEQHDR || state == VC1_CODE_ENTRYPOINT) {
+            has_extradata = 1;
+        } else if (has_extradata && IS_MARKER(state))
+            extradata_size = ptr - 4 - pkt->data;
     }
 
     if (extradata_size) {
-- 
2.12.0



More information about the ffmpeg-devel mailing list