Force one stream for raw muxers.
Based on eeb975f5
Fixes ticket #3217.
Reviewed-by: Nicolas George
			
			
This commit is contained in:
		@@ -29,6 +29,16 @@ int ff_raw_write_packet(AVFormatContext *s, AVPacket *pkt)
 | 
				
			|||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int force_one_stream(AVFormatContext *s)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (s->nb_streams != 1) {
 | 
				
			||||||
 | 
					        av_log(s, AV_LOG_ERROR, "%s files have exactly one stream\n",
 | 
				
			||||||
 | 
					               s->oformat->name);
 | 
				
			||||||
 | 
					        return AVERROR(EINVAL);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Note: Do not forget to add new entries to the Makefile as well. */
 | 
					/* Note: Do not forget to add new entries to the Makefile as well. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if CONFIG_AC3_MUXER
 | 
					#if CONFIG_AC3_MUXER
 | 
				
			||||||
@@ -39,6 +49,7 @@ AVOutputFormat ff_ac3_muxer = {
 | 
				
			|||||||
    .extensions        = "ac3",
 | 
					    .extensions        = "ac3",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_AC3,
 | 
					    .audio_codec       = AV_CODEC_ID_AC3,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_NONE,
 | 
					    .video_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -51,6 +62,7 @@ AVOutputFormat ff_adx_muxer = {
 | 
				
			|||||||
    .extensions        = "adx",
 | 
					    .extensions        = "adx",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_ADPCM_ADX,
 | 
					    .audio_codec       = AV_CODEC_ID_ADPCM_ADX,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_NONE,
 | 
					    .video_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -63,6 +75,7 @@ AVOutputFormat ff_cavsvideo_muxer = {
 | 
				
			|||||||
    .extensions        = "cavs",
 | 
					    .extensions        = "cavs",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_CAVS,
 | 
					    .video_codec       = AV_CODEC_ID_CAVS,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -72,6 +85,7 @@ AVOutputFormat ff_cavsvideo_muxer = {
 | 
				
			|||||||
AVOutputFormat ff_data_muxer = {
 | 
					AVOutputFormat ff_data_muxer = {
 | 
				
			||||||
    .name              = "data",
 | 
					    .name              = "data",
 | 
				
			||||||
    .long_name         = NULL_IF_CONFIG_SMALL("raw data"),
 | 
					    .long_name         = NULL_IF_CONFIG_SMALL("raw data"),
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -84,6 +98,7 @@ AVOutputFormat ff_dirac_muxer = {
 | 
				
			|||||||
    .extensions        = "drc",
 | 
					    .extensions        = "drc",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_DIRAC,
 | 
					    .video_codec       = AV_CODEC_ID_DIRAC,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -96,6 +111,7 @@ AVOutputFormat ff_dnxhd_muxer = {
 | 
				
			|||||||
    .extensions        = "dnxhd",
 | 
					    .extensions        = "dnxhd",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_DNXHD,
 | 
					    .video_codec       = AV_CODEC_ID_DNXHD,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -109,6 +125,7 @@ AVOutputFormat ff_dts_muxer = {
 | 
				
			|||||||
    .extensions        = "dts",
 | 
					    .extensions        = "dts",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_DTS,
 | 
					    .audio_codec       = AV_CODEC_ID_DTS,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_NONE,
 | 
					    .video_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -122,6 +139,7 @@ AVOutputFormat ff_eac3_muxer = {
 | 
				
			|||||||
    .extensions        = "eac3",
 | 
					    .extensions        = "eac3",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_EAC3,
 | 
					    .audio_codec       = AV_CODEC_ID_EAC3,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_NONE,
 | 
					    .video_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -135,6 +153,7 @@ AVOutputFormat ff_g722_muxer = {
 | 
				
			|||||||
    .extensions        = "g722",
 | 
					    .extensions        = "g722",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_ADPCM_G722,
 | 
					    .audio_codec       = AV_CODEC_ID_ADPCM_G722,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_NONE,
 | 
					    .video_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -148,6 +167,7 @@ AVOutputFormat ff_g723_1_muxer = {
 | 
				
			|||||||
    .extensions        = "tco,rco",
 | 
					    .extensions        = "tco,rco",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_G723_1,
 | 
					    .audio_codec       = AV_CODEC_ID_G723_1,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_NONE,
 | 
					    .video_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -161,6 +181,7 @@ AVOutputFormat ff_h261_muxer = {
 | 
				
			|||||||
    .extensions        = "h261",
 | 
					    .extensions        = "h261",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_H261,
 | 
					    .video_codec       = AV_CODEC_ID_H261,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -174,6 +195,7 @@ AVOutputFormat ff_h263_muxer = {
 | 
				
			|||||||
    .extensions        = "h263",
 | 
					    .extensions        = "h263",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_H263,
 | 
					    .video_codec       = AV_CODEC_ID_H263,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -186,6 +208,7 @@ AVOutputFormat ff_h264_muxer = {
 | 
				
			|||||||
    .extensions        = "h264",
 | 
					    .extensions        = "h264",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_H264,
 | 
					    .video_codec       = AV_CODEC_ID_H264,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -211,6 +234,7 @@ AVOutputFormat ff_mjpeg_muxer = {
 | 
				
			|||||||
    .extensions        = "mjpg,mjpeg",
 | 
					    .extensions        = "mjpg,mjpeg",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_MJPEG,
 | 
					    .video_codec       = AV_CODEC_ID_MJPEG,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -223,6 +247,7 @@ AVOutputFormat ff_mlp_muxer = {
 | 
				
			|||||||
    .extensions        = "mlp",
 | 
					    .extensions        = "mlp",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_MLP,
 | 
					    .audio_codec       = AV_CODEC_ID_MLP,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_NONE,
 | 
					    .video_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -236,6 +261,7 @@ AVOutputFormat ff_mpeg1video_muxer = {
 | 
				
			|||||||
    .extensions        = "mpg,mpeg,m1v",
 | 
					    .extensions        = "mpg,mpeg,m1v",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_MPEG1VIDEO,
 | 
					    .video_codec       = AV_CODEC_ID_MPEG1VIDEO,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -248,6 +274,7 @@ AVOutputFormat ff_mpeg2video_muxer = {
 | 
				
			|||||||
    .extensions        = "m2v",
 | 
					    .extensions        = "m2v",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_MPEG2VIDEO,
 | 
					    .video_codec       = AV_CODEC_ID_MPEG2VIDEO,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -272,6 +299,7 @@ AVOutputFormat ff_truehd_muxer = {
 | 
				
			|||||||
    .extensions        = "thd",
 | 
					    .extensions        = "thd",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_TRUEHD,
 | 
					    .audio_codec       = AV_CODEC_ID_TRUEHD,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_NONE,
 | 
					    .video_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -284,6 +312,7 @@ AVOutputFormat ff_vc1_muxer = {
 | 
				
			|||||||
    .extensions        = "vc1",
 | 
					    .extensions        = "vc1",
 | 
				
			||||||
    .audio_codec       = AV_CODEC_ID_NONE,
 | 
					    .audio_codec       = AV_CODEC_ID_NONE,
 | 
				
			||||||
    .video_codec       = AV_CODEC_ID_VC1,
 | 
					    .video_codec       = AV_CODEC_ID_VC1,
 | 
				
			||||||
 | 
					    .write_header      = force_one_stream,
 | 
				
			||||||
    .write_packet      = ff_raw_write_packet,
 | 
					    .write_packet      = ff_raw_write_packet,
 | 
				
			||||||
    .flags             = AVFMT_NOTIMESTAMPS,
 | 
					    .flags             = AVFMT_NOTIMESTAMPS,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user