]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/avienc.c
give AVInput/OutputFormat structs consistent names
[ffmpeg] / libavformat / avienc.c
index 4d97ad79b8e5e3312eedae3f81ba7a1a923013d6..c9b6c08d30f67baf519647100df70b020bacc495 100644 (file)
@@ -140,6 +140,7 @@ const CodecTag codec_bmp_tags[] = {
     { CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '1') },
     { CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '2') },
     { CODEC_ID_MPEG2VIDEO, MKTAG('m', 'p', 'g', '2') },
+    { CODEC_ID_MPEG2VIDEO, MKTAG('M', 'P', 'E', 'G') },
     { CODEC_ID_MPEG1VIDEO, MKTAG('P', 'I', 'M', '1') },
     { CODEC_ID_MPEG1VIDEO, MKTAG('V', 'C', 'R', '2') },
     { CODEC_ID_MPEG1VIDEO, 0x10000001 },
@@ -149,6 +150,8 @@ const CodecTag codec_bmp_tags[] = {
     { CODEC_ID_MJPEG, MKTAG('L', 'J', 'P', 'G') },
     { CODEC_ID_LJPEG, MKTAG('L', 'J', 'P', 'G') },
     { CODEC_ID_MJPEG, MKTAG('J', 'P', 'G', 'L') }, /* Pegasus lossless JPEG */
+    { CODEC_ID_MJPEG, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - decoder */
+    { CODEC_ID_JPEGLS, MKTAG('M', 'J', 'L', 'S') }, /* JPEG-LS custom FOURCC for avi - encoder */
     { CODEC_ID_HUFFYUV, MKTAG('H', 'F', 'Y', 'U') },
     { CODEC_ID_FFVHUFF, MKTAG('F', 'F', 'V', 'H') },
     { CODEC_ID_CYUV, MKTAG('C', 'Y', 'U', 'V') },
@@ -181,6 +184,7 @@ const CodecTag codec_bmp_tags[] = {
     { CODEC_ID_SNOW, MKTAG('S', 'N', 'O', 'W') },
     { CODEC_ID_4XM, MKTAG('4', 'X', 'M', 'V') },
     { CODEC_ID_FLV1, MKTAG('F', 'L', 'V', '1') },
+    { CODEC_ID_FLASHSV, MKTAG('F', 'S', 'V', '1') },
     { CODEC_ID_SVQ1, MKTAG('s', 'v', 'q', '1') },
     { CODEC_ID_TSCC, MKTAG('t', 's', 'c', 'c') },
     { CODEC_ID_ULTI, MKTAG('U', 'L', 'T', 'I') },
@@ -198,6 +202,7 @@ const CodecTag codec_bmp_tags[] = {
     { CODEC_ID_TRUEMOTION2, MKTAG('T', 'M', '2', '0') },
     { CODEC_ID_CSCD, MKTAG('C', 'S', 'C', 'D') },
     { CODEC_ID_ZMBV, MKTAG('Z', 'M', 'B', 'V') },
+    { CODEC_ID_KMVC, MKTAG('K', 'M', 'V', 'C') },
     { CODEC_ID_RAWVIDEO, 0 },
     { CODEC_ID_NONE, 0 },
 };
@@ -376,8 +381,8 @@ static int avi_write_header(AVFormatContext *s)
     put_le32(pb, s->nb_streams); /* nb streams */
     put_le32(pb, 1024 * 1024); /* suggested buffer size */
     if(video_enc){
-    put_le32(pb, video_enc->width);
-    put_le32(pb, video_enc->height);
+        put_le32(pb, video_enc->width);
+        put_le32(pb, video_enc->height);
     } else {
         put_le32(pb, 0);
         put_le32(pb, 0);
@@ -611,22 +616,21 @@ static int avi_write_idx1(AVFormatContext *s)
         file_size = url_ftell(pb);
         nb_frames = 0;
         for(n=0;n<s->nb_streams;n++) {
-            if (avi->frames_hdr_strm[n] != 0) {
+            assert(avi->frames_hdr_strm[n]);
                 stream = s->streams[n]->codec;
                 url_fseek(pb, avi->frames_hdr_strm[n], SEEK_SET);
                 ff_parse_specific_params(stream, &au_byterate, &au_ssize, &au_scale);
                 if (au_ssize == 0) {
                     put_le32(pb, avi->packet_count[n]);
-                    nb_frames += avi->packet_count[n];
                 } else {
                     put_le32(pb, avi->audio_strm_length[n] / au_ssize);
                 }
-            }
-       }
-       if (avi->frames_hdr_all != 0) {
-           url_fseek(pb, avi->frames_hdr_all, SEEK_SET);
-           put_le32(pb, nb_frames);
+            if(stream->codec_type == CODEC_TYPE_VIDEO)
+                nb_frames = FFMAX(nb_frames, avi->packet_count[n]);
        }
+        assert(avi->frames_hdr_all);
+        url_fseek(pb, avi->frames_hdr_all, SEEK_SET);
+        put_le32(pb, nb_frames);
        url_fseek(pb, file_size, SEEK_SET);
     }
     return 0;
@@ -758,7 +762,7 @@ static int avi_write_trailer(AVFormatContext *s)
     return res;
 }
 
-static AVOutputFormat avi_oformat = {
+static AVOutputFormat avi_muxer = {
     "avi",
     "avi format",
     "video/x-msvideo",
@@ -773,7 +777,7 @@ static AVOutputFormat avi_oformat = {
 
 int avienc_init(void)
 {
-    av_register_output_format(&avi_oformat);
+    av_register_output_format(&avi_muxer);
     return 0;
 }
 #endif //CONFIG_MUXERS