RES_SM in WMV3 is really two flags, so split it in decoder
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 26 Sep 2010 13:54:35 +0000 (13:54 +0000)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 26 Sep 2010 13:54:35 +0000 (13:54 +0000)
Originally committed as revision 25208 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/vc1.c
libavcodec/vc1.h

index cca345d..d9d7d51 100644 (file)
@@ -306,11 +306,16 @@ int vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitConte
     {
         v->zz_8x4 = wmv2_scantableA;
         v->zz_4x8 = wmv2_scantableB;
     {
         v->zz_8x4 = wmv2_scantableA;
         v->zz_4x8 = wmv2_scantableB;
-        v->res_sm = get_bits(gb, 2); //reserved
-        if (v->res_sm)
+        v->res_y411   = get_bits1(gb);
+        v->res_sprite = get_bits1(gb);
+        if (v->res_y411)
         {
             av_log(avctx, AV_LOG_ERROR,
         {
             av_log(avctx, AV_LOG_ERROR,
-                   "Reserved RES_SM=%i is forbidden\n", v->res_sm);
+                   "Old interlaced mode is not supported\n");
+            return -1;
+        }
+        if (v->res_sprite) {
+            av_log(avctx, AV_LOG_ERROR, "WMVP is not supported\n");
             return -1;
         }
     }
             return -1;
         }
     }
index d5f0e05..e5a9cba 100644 (file)
@@ -160,7 +160,8 @@ typedef struct VC1Context{
 
     /** Simple/Main Profile sequence header */
     //@{
 
     /** Simple/Main Profile sequence header */
     //@{
-    int res_sm;           ///< reserved, 2b
+    int res_sprite;       ///< reserved, sprite mode
+    int res_y411;         ///< reserved, old interlaced mode
     int res_x8;           ///< reserved
     int multires;         ///< frame-level RESPIC syntax element present
     int res_fasttx;       ///< reserved, always 1
     int res_x8;           ///< reserved
     int multires;         ///< frame-level RESPIC syntax element present
     int res_fasttx;       ///< reserved, always 1