[FFmpeg-cvslog] riffenc: add option to ff_put_bmp_header to ignore extradata

Peter Ross git at videolan.org
Tue Dec 24 08:14:28 CET 2013


ffmpeg | branch: release/1.2 | Peter Ross <pross at xvid.org> | Mon Dec 23 20:37:00 2013 +1100| [7ba102d00814a7654d09c9bdcac6db86c43812ca] | committer: Carl Eugen Hoyos

riffenc: add option to ff_put_bmp_header to ignore extradata

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit fcbb94712d9873a37cdc8b526e368154b5982186)

Conflicts:
	libavformat/riffenc.c

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7ba102d00814a7654d09c9bdcac6db86c43812ca
---

 libavformat/asfenc.c      |    2 +-
 libavformat/avienc.c      |    2 +-
 libavformat/matroskaenc.c |    2 +-
 libavformat/riff.c        |    6 ++++--
 libavformat/riff.h        |    2 +-
 5 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index f3aec9c..0a42401 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -457,7 +457,7 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size,
             avio_wl16(pb, 40 + enc->extradata_size); /* size */
 
             /* BITMAPINFOHEADER header */
-            ff_put_bmp_header(pb, enc, ff_codec_bmp_tags, 1);
+            ff_put_bmp_header(pb, enc, ff_codec_bmp_tags, 1, 0);
         }
         end_header(pb, hpos);
     }
diff --git a/libavformat/avienc.c b/libavformat/avienc.c
index 918992f..98fab80 100644
--- a/libavformat/avienc.c
+++ b/libavformat/avienc.c
@@ -291,7 +291,7 @@ static int avi_write_header(AVFormatContext *s)
             // are not (yet) supported.
             if (stream->codec_id != AV_CODEC_ID_XSUB) break;
         case AVMEDIA_TYPE_VIDEO:
-            ff_put_bmp_header(pb, stream, ff_codec_bmp_tags, 0);
+            ff_put_bmp_header(pb, stream, ff_codec_bmp_tags, 0, 0);
             break;
         case AVMEDIA_TYPE_AUDIO:
             if ((ret = ff_put_wav_header(pb, stream)) < 0) {
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index c506835..6a783e1 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -512,7 +512,7 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo
                 ret = AVERROR(EINVAL);
             }
 
-            ff_put_bmp_header(dyn_cp, codec, ff_codec_bmp_tags, 0);
+            ff_put_bmp_header(dyn_cp, codec, ff_codec_bmp_tags, 0, 0);
         }
 
     } else if (codec->codec_type == AVMEDIA_TYPE_AUDIO) {
diff --git a/libavformat/riff.c b/libavformat/riff.c
index ac1a4ff..bb4d067 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -569,9 +569,9 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc)
 }
 
 /* BITMAPINFOHEADER header */
-void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf)
+void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf, int ignore_extradata)
 {
-    avio_wl32(pb, 40 + enc->extradata_size); /* size */
+    avio_wl32(pb, 40 + (ignore_extradata ? 0 : enc->extradata_size)); /* size */
     avio_wl32(pb, enc->width);
     //We always store RGB TopDown
     avio_wl32(pb, enc->codec_tag ? enc->height : -enc->height);
@@ -586,10 +586,12 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *t
     avio_wl32(pb, 0);
     avio_wl32(pb, 0);
 
+    if (!ignore_extradata) {
     avio_write(pb, enc->extradata, enc->extradata_size);
 
     if (!for_asf && enc->extradata_size & 1)
         avio_w8(pb, 0);
+    }
 }
 
 void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, int *au_ssize, int *au_scale)
diff --git a/libavformat/riff.h b/libavformat/riff.h
index 70b2f76..d381514 100644
--- a/libavformat/riff.h
+++ b/libavformat/riff.h
@@ -46,7 +46,7 @@ void ff_end_tag(AVIOContext *pb, int64_t start);
  */
 int ff_get_bmp_header(AVIOContext *pb, AVStream *st, unsigned *esize);
 
-void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf);
+void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf, int ignore_extradata);
 int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc);
 enum AVCodecID ff_wav_codec_get_id(unsigned int tag, int bps);
 int ff_get_wav_header(AVIOContext *pb, AVCodecContext *codec, int size);



More information about the ffmpeg-cvslog mailing list