[FFmpeg-devel] [PATCH] avformat/matroskaenc: add allow_raw_vfw and disable it by default

wm4 nfxjfg at googlemail.com
Sat Feb 14 16:28:08 CET 2015


On Sat, 14 Feb 2015 16:20:58 +0100
Michael Niedermayer <michaelni at gmx.at> wrote:

> Based on complaint by wm4
> 
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
>  libavformat/matroskaenc.c |   14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
> index eb6e859..fc6371b 100644
> --- a/libavformat/matroskaenc.c
> +++ b/libavformat/matroskaenc.c
> @@ -123,6 +123,8 @@ typedef struct MatroskaMuxContext {
>  
>      uint32_t chapter_id_offset;
>      int wrote_chapters;
> +
> +    int allow_raw_vfw;
>  } MatroskaMuxContext;
>  
>  
> @@ -879,8 +881,15 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv,
>                  break;
>              }
>          }
> -        if (codec->codec_id == AV_CODEC_ID_RAWVIDEO && !codec->codec_tag)
> -            native_id = 0;
> +        if (codec->codec_id == AV_CODEC_ID_RAWVIDEO && !codec->codec_tag) {
> +            if (mkv->allow_raw_vfw) {
> +                native_id = 0;
> +            } else {
> +                av_log(s, AV_LOG_ERROR, "Raw RGB is not supported nativly in Matroska, you can use AVI or NUT or\n"
> +                                        "If you would like to store it anyway using VFW mode, enable allow_raw_vfw (-allow_raw_vfw 1)\n");
> +                return AVERROR(EINVAL);
> +            }
> +        }
>      }
>  
>      if (codec->codec_type == AVMEDIA_TYPE_AUDIO && codec->initial_padding && codec->codec_id == AV_CODEC_ID_OPUS) {
> @@ -1992,6 +2001,7 @@ static const AVOption options[] = {
>      { "cluster_time_limit",  "Store at most the provided number of milliseconds in a cluster.",                               OFFSET(cluster_time_limit), AV_OPT_TYPE_INT64, { .i64 = -1 }, -1, INT64_MAX, FLAGS },
>      { "dash", "Create a WebM file conforming to WebM DASH specification", OFFSET(is_dash), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS },
>      { "dash_track_number", "Track number for the DASH stream", OFFSET(dash_track_number), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 127, FLAGS },
> +    { "allow_raw_vfw", "allow RAW VFW mode", OFFSET(allow_raw_vfw), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS },
>      { NULL },
>  };
>  

Well, better than enabling it by default, so +1.


More information about the ffmpeg-devel mailing list