[SCM] libav/experimental: aspect (ext. par too) support for h263 and mpeg4 (inc. build becouse of new vars)

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:33:19 UTC 2013


The following commit has been merged in the experimental branch:
commit 050fe8bab5e772f04e271c069e9d85c17f08e94f
Author: Alex Beregszaszi <alex at rtfs.hu>
Date:   Fri Sep 13 19:31:32 2002 +0000

    aspect (ext. par too) support for h263 and mpeg4 (inc. build becouse of new vars)
    
    Originally committed as revision 941 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 18973c6..acedeba 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -5,8 +5,8 @@
 
 #define LIBAVCODEC_VERSION_INT 0x000406
 #define LIBAVCODEC_VERSION     "0.4.6"
-#define LIBAVCODEC_BUILD       4622
-#define LIBAVCODEC_BUILD_STR   "4622"
+#define LIBAVCODEC_BUILD       4623
+#define LIBAVCODEC_BUILD_STR   "4623"
 
 enum CodecID {
     CODEC_ID_NONE, 
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index e9c2b3f..26758a6 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -187,12 +187,17 @@ void h263_encode_picture_header(MpegEncContext * s, int picture_number)
             /* Custom Picture Format (CPFMT) */
 		
 	    if (s->aspect_ratio_info)
-            put_bits(&s->pb,4,s->aspect_ratio_info);
+        	put_bits(&s->pb,4,s->aspect_ratio_info);
 	    else
-            put_bits(&s->pb,4,2); /* Aspect ratio: CIF 12:11 (4:3) picture */
+        	put_bits(&s->pb,4,2); /* Aspect ratio: CIF 12:11 (4:3) picture */
             put_bits(&s->pb,9,(s->width >> 2) - 1);
             put_bits(&s->pb,1,1); /* "1" to prevent start code emulation */
             put_bits(&s->pb,9,(s->height >> 2));
+	    if (s->aspect_ratio_info == FF_ASPECT_EXTENDED)
+	    {
+		put_bits(&s->pb, 8, s->aspected_width);
+		put_bits(&s->pb, 8, s->aspected_height);
+	    }
         }
         
         /* Unlimited Unrestricted Motion Vectors Indicator (UUI) */
@@ -1361,6 +1366,11 @@ static void mpeg4_encode_vol_header(MpegEncContext * s)
         put_bits(&s->pb, 4, s->aspect_ratio_info);/* aspect ratio info */
     else
         put_bits(&s->pb, 4, 1);		/* aspect ratio info= sqare pixel */
+    if (s->aspect_ratio_info == FF_ASPECT_EXTENDED)
+    {
+	put_bits(&s->pb, 8, s->aspected_width);
+	put_bits(&s->pb, 8, s->aspected_height);
+    }
 
     if(s->low_delay){
         put_bits(&s->pb, 1, 1);		/* vol control parameters= yes */
@@ -3158,7 +3168,7 @@ static int h263_decode_block(MpegEncContext * s, DCTELEM * block,
             if (s->h263_rv10 && level == -128) {
                 /* XXX: should patch encoder too */
                 level = get_bits(&s->gb, 12);
-                level= (level + ((-1)<<11)) ^ ((-1)<<11); //sign extension
+		level= (level + ((-1)<<11)) ^ ((-1)<<11); //sign extension
             }
         } else {
             run = rl->table_run[code];
@@ -3547,10 +3557,10 @@ int h263_decode_picture_header(MpegEncContext *s)
                 skip_bits1(&s->gb);
                 height = get_bits(&s->gb, 9) * 4;
                 dprintf("\nH.263+ Custom picture: %dx%d\n",width,height);
-                if (s->aspect_ratio_info == EXTENDED_PAR) {
+                if (s->aspect_ratio_info == FF_ASPECT_EXTENDED) {
                     /* aspected dimensions */
-                    skip_bits(&s->gb, 8); /* width */
-                    skip_bits(&s->gb, 8); /* height */
+		    s->aspected_width = get_bits(&s->gb, 8);
+		    s->aspected_height = get_bits(&s->gb, 8);
                 }
             } else {
                 width = h263_format[format][0];
@@ -3817,9 +3827,9 @@ int mpeg4_decode_picture_header(MpegEncContext * s)
         }
 //printf("vo type:%d\n",s->vo_type);
         s->aspect_ratio_info= get_bits(&s->gb, 4);
-	if(s->aspect_ratio_info == EXTENDED_PAR){
-            skip_bits(&s->gb, 8); //par_width
-            skip_bits(&s->gb, 8); // par_height
+	if(s->aspect_ratio_info == FF_ASPECT_EXTENDED){	    
+	    s->aspected_width = get_bits(&s->gb, 8); // par_width
+	    s->aspected_height = get_bits(&s->gb, 8); // par_height
         }
 
         if ((s->vol_control_parameters=get_bits1(&s->gb))) { /* vol control parameter */
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
index 90b5a70..ffecbc9 100644
--- a/libavcodec/h263dec.c
+++ b/libavcodec/h263dec.c
@@ -193,6 +193,11 @@ uint64_t time= rdtsc();
         avctx->width = s->width;
         avctx->height = s->height;
         avctx->aspect_ratio_info= s->aspect_ratio_info;
+	if (s->aspect_ratio_info == FF_ASPECT_EXTENDED)
+	{
+	    avctx->aspected_width = s->aspected_width;
+	    avctx->aspected_height = s->aspected_height;
+	}
         if (MPV_common_init(s) < 0)
             return -1;
     }

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list