OSDN Git Service

lavf/mpegenc: Print a warning if ac3, pcm_s16be or dts are muxed into mpeg1.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Sun, 24 Nov 2013 09:37:52 +0000 (10:37 +0100)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Sun, 24 Nov 2013 09:37:52 +0000 (10:37 +0100)
Some media players don't play the resulting files.
The warning should help users to avoid the issues described in ticket #1720.

libavformat/mpegenc.c

index 2c7fff2..ccf3ec2 100644 (file)
@@ -346,6 +346,15 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
 
         switch(st->codec->codec_type) {
         case AVMEDIA_TYPE_AUDIO:
+            if (!s->is_mpeg2 &&
+                (st->codec->codec_id == AV_CODEC_ID_AC3 ||
+                 st->codec->codec_id == AV_CODEC_ID_DTS ||
+                 st->codec->codec_id == AV_CODEC_ID_PCM_S16BE))
+                 av_log(ctx, AV_LOG_WARNING,
+                        "%s in MPEG-1 system streams is not widely supported, "
+                        "consider using the vob or the dvd muxer "
+                        "to force a MPEG-2 program stream.\n",
+                        avcodec_get_name(st->codec->codec_id));
             if        (st->codec->codec_id == AV_CODEC_ID_AC3) {
                 stream->id = ac3_id++;
             } else if (st->codec->codec_id == AV_CODEC_ID_DTS) {