From 255b3ac27d78be9c8ed57f1c3ba90d28e0ffb63d Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Wed, 28 Aug 2002 21:47:28 +0000
Subject: [PATCH] use extradata for h263_long_vector mode detection

Originally committed as revision 876 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/rv10.c | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c
index 373ae6fc684..e484ee20954 100644
--- a/libavcodec/rv10.c
+++ b/libavcodec/rv10.c
@@ -290,7 +290,7 @@ static int rv10_decode_picture_header(MpegEncContext *s)
     else
         s->pict_type = I_TYPE;
 //printf("h:%d ver:%d\n",h,s->rv10_version);
-if(!marker) printf("marker missing\n");
+    if(!marker) printf("marker missing\n");
     pb_frame = get_bits(&s->gb, 1);
 
 #ifdef DEBUG
@@ -335,12 +335,9 @@ if(!marker) printf("marker missing\n");
     }
     unk= get_bits(&s->gb, 3);	/* ignored */
 //printf("%d\n", unk);
-s->h263_long_vectors =  s->mb_num<100; //FIXME check if this is ok (100 i just guessed)
     s->f_code = 1;
     s->unrestricted_mv = 1;
-#if 0
-    s->h263_long_vectors = 1;
-#endif
+
     return mb_count;
 }
 
@@ -356,7 +353,27 @@ static int rv10_decode_init(AVCodecContext *avctx)
     s->height = avctx->height;
 
     s->h263_rv10 = 1;
-    s->rv10_version = avctx->sub_id;
+    if(avctx->extradata_size >= 8){
+        switch(((uint32_t*)avctx->extradata)[1]){
+        case 0x10000000:
+            s->rv10_version= 0;
+            s->h263_long_vectors=0;
+            break;
+        case 0x10003000:
+            s->rv10_version= 3;
+            s->h263_long_vectors=1;
+            break;
+        case 0x10003001:
+            s->rv10_version= 3;
+            s->h263_long_vectors=0;
+            break;
+        default:
+            fprintf(stderr, "unknown header %X\n", ((uint32_t*)avctx->extradata)[1]);
+        }
+    }else{
+    //  for backward compatibility 
+        s->rv10_version= avctx->sub_id;
+    }
     
     s->flags= avctx->flags;
 
-- 
GitLab