Store aspect ratio in avis.
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 2 Mar 2008 19:51:31 +0000 (19:51 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 2 Mar 2008 19:51:31 +0000 (19:51 +0000)
Originally committed as revision 12290 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/avienc.c

index 6b62f76..6e8901e 100644 (file)
@@ -283,6 +283,38 @@ static int avi_write_header(AVFormatContext *s)
             end_tag(pb, avi->indexes[i].indx_start);
         }
 
             end_tag(pb, avi->indexes[i].indx_start);
         }
 
+        if(   stream->codec_type == CODEC_TYPE_VIDEO
+           && stream->sample_aspect_ratio.num>0
+           && stream->sample_aspect_ratio.den>0){
+            int vprp= start_tag(pb, "vprp");
+            AVRational dar = av_mul_q(stream->sample_aspect_ratio,
+                                      (AVRational){stream->width, stream->height});
+            int num, den;
+            av_reduce(&num, &den, dar.num, dar.den, 0xFFFF);
+
+            put_le32(pb, 0); //video format  = unknown
+            put_le32(pb, 0); //video standard= unknown
+            put_le32(pb, lrintf(1.0/av_q2d(stream->time_base)));
+            put_le32(pb, stream->width );
+            put_le32(pb, stream->height);
+            put_le16(pb, num);
+            put_le16(pb, den);
+            put_le32(pb, stream->width );
+            put_le32(pb, stream->height);
+            put_le32(pb, 1); //progressive FIXME
+
+            put_le32(pb, stream->height);
+            put_le32(pb, stream->width );
+            put_le32(pb, stream->height);
+            put_le32(pb, stream->width );
+            put_le32(pb, 0);
+            put_le32(pb, 0);
+
+            put_le32(pb, 0);
+            put_le32(pb, 0);
+            end_tag(pb, vprp);
+        }
+
         end_tag(pb, list2);
     }
 
         end_tag(pb, list2);
     }