|  |  | @@ -353,7 +353,8 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) | 
		
	
		
			
			|  |  |  | if (!s->is_mpeg2 && | 
		
	
		
			
			|  |  |  | (st->codecpar->codec_id == AV_CODEC_ID_AC3 || | 
		
	
		
			
			|  |  |  | st->codecpar->codec_id == AV_CODEC_ID_DTS || | 
		
	
		
			
			|  |  |  | st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE)) | 
		
	
		
			
			|  |  |  | st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE || | 
		
	
		
			
			|  |  |  | st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD)) | 
		
	
		
			
			|  |  |  | av_log(ctx, AV_LOG_WARNING, | 
		
	
		
			
			|  |  |  | "%s in MPEG-1 system streams is not widely supported, " | 
		
	
		
			
			|  |  |  | "consider using the vob or the dvd muxer " | 
		
	
	
		
			
				|  |  | @@ -363,7 +364,12 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) | 
		
	
		
			
			|  |  |  | stream->id = ac3_id++; | 
		
	
		
			
			|  |  |  | } else if (st->codecpar->codec_id == AV_CODEC_ID_DTS) { | 
		
	
		
			
			|  |  |  | stream->id = dts_id++; | 
		
	
		
			
			|  |  |  | } else if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE) { | 
		
	
		
			
			|  |  |  | } else if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16BE || | 
		
	
		
			
			|  |  |  | st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD) { | 
		
	
		
			
			|  |  |  | if (st->codecpar->bits_per_coded_sample != 16) { | 
		
	
		
			
			|  |  |  | av_log(ctx, AV_LOG_ERROR, "Only 16 bit LPCM streams can be muxed.\n"); | 
		
	
		
			
			|  |  |  | goto fail; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | stream->id = lpcm_id++; | 
		
	
		
			
			|  |  |  | for (j = 0; j < 4; j++) { | 
		
	
		
			
			|  |  |  | if (lpcm_freq_tab[j] == st->codecpar->sample_rate) | 
		
	
	
		
			
				|  |  | @@ -1150,6 +1156,19 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) | 
		
	
		
			
			|  |  |  | return AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | pkt_desc->pts            = pts; | 
		
	
		
			
			|  |  |  | pkt_desc->dts            = dts; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (st->codecpar->codec_id == AV_CODEC_ID_PCM_DVD) { | 
		
	
		
			
			|  |  |  | if (size < 3) { | 
		
	
		
			
			|  |  |  | av_log(ctx, AV_LOG_ERROR, "Invalid packet size %d\n", size); | 
		
	
		
			
			|  |  |  | return AVERROR(EINVAL); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | /* Skip first 3 bytes of packet data, which comprise PCM header | 
		
	
		
			
			|  |  |  | and will be written fresh by this muxer. */ | 
		
	
		
			
			|  |  |  | buf += 3; | 
		
	
		
			
			|  |  |  | size -= 3; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | pkt_desc->unwritten_size = | 
		
	
		
			
			|  |  |  | pkt_desc->size           = size; | 
		
	
		
			
			|  |  |  | if (!stream->predecode_packet) | 
		
	
	
		
			
				|  |  | 
 |