|  |  | @@ -914,17 +914,24 @@ static int mpegts_init(AVFormatContext *s) | 
		
	
		
			
			|  |  |  | * this range are assigned a calculated pid. */ | 
		
	
		
			
			|  |  |  | if (st->id < 16) { | 
		
	
		
			
			|  |  |  | ts_st->pid = ts->start_pid + i; | 
		
	
		
			
			|  |  |  | } else if (st->id < 0x1FFF) { | 
		
	
		
			
			|  |  |  | ts_st->pid = st->id; | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | ts_st->pid = st->id; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | if (ts_st->pid >= 0x1FFF) { | 
		
	
		
			
			|  |  |  | av_log(s, AV_LOG_ERROR, | 
		
	
		
			
			|  |  |  | "Invalid stream id %d, must be less than 8191\n", st->id); | 
		
	
		
			
			|  |  |  | ret = AVERROR(EINVAL); | 
		
	
		
			
			|  |  |  | goto fail; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | for (j = 0; j < ts->nb_services; j++) { | 
		
	
		
			
			|  |  |  | if (ts->services[j]->pmt.pid > LAST_OTHER_PID) { | 
		
	
		
			
			|  |  |  | av_log(s, AV_LOG_ERROR, | 
		
	
		
			
			|  |  |  | "Invalid PMT PID %d, must be less than %d\n", ts->services[j]->pmt.pid, LAST_OTHER_PID + 1); | 
		
	
		
			
			|  |  |  | ret = AVERROR(EINVAL); | 
		
	
		
			
			|  |  |  | goto fail; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | if (ts_st->pid == ts->services[j]->pmt.pid) { | 
		
	
		
			
			|  |  |  | av_log(s, AV_LOG_ERROR, "Duplicate stream id %d\n", ts_st->pid); | 
		
	
		
			
			|  |  |  | av_log(s, AV_LOG_ERROR, "PID %d cannot be both elementary and PMT PID\n", ts_st->pid); | 
		
	
		
			
			|  |  |  | ret = AVERROR(EINVAL); | 
		
	
		
			
			|  |  |  | goto fail; | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -1888,10 +1895,10 @@ static const AVOption options[] = { | 
		
	
		
			
			|  |  |  | AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, | 
		
	
		
			
			|  |  |  | { "mpegts_pmt_start_pid", "Set the first pid of the PMT.", | 
		
	
		
			
			|  |  |  | offsetof(MpegTSWrite, pmt_start_pid), AV_OPT_TYPE_INT, | 
		
	
		
			
			|  |  |  | { .i64 = 0x1000 }, 0x0010, 0x1f00, AV_OPT_FLAG_ENCODING_PARAM }, | 
		
	
		
			
			|  |  |  | { .i64 = 0x1000 }, FIRST_OTHER_PID, LAST_OTHER_PID, AV_OPT_FLAG_ENCODING_PARAM }, | 
		
	
		
			
			|  |  |  | { "mpegts_start_pid", "Set the first pid.", | 
		
	
		
			
			|  |  |  | offsetof(MpegTSWrite, start_pid), AV_OPT_TYPE_INT, | 
		
	
		
			
			|  |  |  | { .i64 = 0x0100 }, 0x0010, 0x0f00, AV_OPT_FLAG_ENCODING_PARAM }, | 
		
	
		
			
			|  |  |  | { .i64 = 0x0100 }, FIRST_OTHER_PID, LAST_OTHER_PID, AV_OPT_FLAG_ENCODING_PARAM }, | 
		
	
		
			
			|  |  |  | { "mpegts_m2ts_mode", "Enable m2ts mode.", | 
		
	
		
			
			|  |  |  | offsetof(MpegTSWrite, m2ts_mode), AV_OPT_TYPE_BOOL, | 
		
	
		
			
			|  |  |  | { .i64 = -1 }, -1, 1, AV_OPT_FLAG_ENCODING_PARAM }, | 
		
	
	
		
			
				|  |  | 
 |