diff h263.c @ 2572:c22ad129a91b libavcodec

support omiting various headers in mpeg4 as WMP seems to have difficulty with them based upon 27_WMP_compatibility_with_ISOMPEG4.patch by (Calcium | calcium nurs or jp) indention fixed uses workaround_bugs instead of strict_std_compliancy as WMP is not the reference implementation
author michael
date Wed, 23 Mar 2005 11:39:38 +0000
parents 84a8f374bf63
children 0d88e3f89379
line wrap: on
line diff
--- a/h263.c	Tue Mar 22 18:28:15 2005 +0000
+++ b/h263.c	Wed Mar 23 11:39:38 2005 +0000
@@ -2021,7 +2021,8 @@
             s->avctx->extradata= av_malloc(1024);
             init_put_bits(&s->pb, s->avctx->extradata, 1024);
             
-            mpeg4_encode_visual_object_header(s);
+            if(!(s->workaround_bugs & FF_BUG_MS))
+                mpeg4_encode_visual_object_header(s);
             mpeg4_encode_vol_header(s, 0, 0);
 
 //            ff_mpeg4_stuffing(&s->pb); ?
@@ -2320,9 +2321,13 @@
 
     put_bits(&s->pb, 1, 0);		/* random access vol */
     put_bits(&s->pb, 8, s->vo_type);	/* video obj type indication */
-    put_bits(&s->pb, 1, 1);		/* is obj layer id= yes */
-      put_bits(&s->pb, 4, vo_ver_id);	/* is obj layer ver id */
-      put_bits(&s->pb, 3, 1);		/* is obj layer priority */
+    if(s->workaround_bugs & FF_BUG_MS) {
+        put_bits(&s->pb, 1, 0);        /* is obj layer id= no */
+    } else {
+        put_bits(&s->pb, 1, 1);        /* is obj layer id= yes */
+        put_bits(&s->pb, 4, vo_ver_id);    /* is obj layer ver id */
+        put_bits(&s->pb, 3, 1);        /* is obj layer priority */
+    }
     
     aspect_to_info(s, s->avctx->sample_aspect_ratio);
 
@@ -2332,10 +2337,14 @@
         put_bits(&s->pb, 8, s->avctx->sample_aspect_ratio.den);
     }
 
-    put_bits(&s->pb, 1, 1);		/* vol control parameters= yes */
-    put_bits(&s->pb, 2, 1);		/* chroma format YUV 420/YV12 */
-    put_bits(&s->pb, 1, s->low_delay);
-    put_bits(&s->pb, 1, 0);		/* vbv parameters= no */
+    if(s->workaround_bugs & FF_BUG_MS) { //
+        put_bits(&s->pb, 1, 0);        /* vol control parameters= no @@@ */
+    } else {
+        put_bits(&s->pb, 1, 1);        /* vol control parameters= yes */
+        put_bits(&s->pb, 2, 1);        /* chroma format YUV 420/YV12 */
+        put_bits(&s->pb, 1, s->low_delay);
+        put_bits(&s->pb, 1, 0);        /* vbv parameters= no */
+    }
 
     put_bits(&s->pb, 2, RECT_SHAPE);	/* vol shape= rectangle */
     put_bits(&s->pb, 1, 1);		/* marker bit */
@@ -2405,7 +2414,8 @@
             if(s->strict_std_compliance < 2 || picture_number==0) //HACK, the reference sw is buggy
                 mpeg4_encode_vol_header(s, 0, 0);
         }
-        mpeg4_encode_gop_header(s);
+        if(!(s->workaround_bugs & FF_BUG_MS))
+            mpeg4_encode_gop_header(s);
     }
     
     s->partitioned_frame= s->data_partitioning && s->pict_type!=B_TYPE;