|  |  | @@ -35,6 +35,8 @@ typedef struct SRTContext{ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static int srt_write_header(AVFormatContext *avf) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | SRTContext *srt = avf->priv_data; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (avf->nb_streams != 1 || | 
		
	
		
			
			|  |  |  | avf->streams[0]->codec->codec_type != AVMEDIA_TYPE_SUBTITLE) { | 
		
	
		
			
			|  |  |  | av_log(avf, AV_LOG_ERROR, | 
		
	
	
		
			
				|  |  | @@ -50,6 +52,7 @@ static int srt_write_header(AVFormatContext *avf) | 
		
	
		
			
			|  |  |  | return AVERROR(EINVAL); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | avpriv_set_pts_info(avf->streams[0], 64, 1, 1000); | 
		
	
		
			
			|  |  |  | srt->index = 1; | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -58,7 +61,6 @@ static int srt_write_packet(AVFormatContext *avf, AVPacket *pkt) | 
		
	
		
			
			|  |  |  | SRTContext *srt = avf->priv_data; | 
		
	
		
			
			|  |  |  | int write_ts = avf->streams[0]->codec->codec_id != AV_CODEC_ID_SRT; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | srt->index++; | 
		
	
		
			
			|  |  |  | if (write_ts) { | 
		
	
		
			
			|  |  |  | int64_t s = pkt->pts, e, d = pkt->duration; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -66,8 +68,9 @@ static int srt_write_packet(AVFormatContext *avf, AVPacket *pkt) | 
		
	
		
			
			|  |  |  | /* For backward compatibility, fallback to convergence_duration. */ | 
		
	
		
			
			|  |  |  | d = pkt->convergence_duration; | 
		
	
		
			
			|  |  |  | if (s == AV_NOPTS_VALUE || d < 0) { | 
		
	
		
			
			|  |  |  | av_log(avf, AV_LOG_ERROR, "Insufficient timestamps.\n"); | 
		
	
		
			
			|  |  |  | return AVERROR(EINVAL); | 
		
	
		
			
			|  |  |  | av_log(avf, AV_LOG_WARNING, | 
		
	
		
			
			|  |  |  | "Insufficient timestamps in event number %d.\n", srt->index); | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | e = s + d; | 
		
	
		
			
			|  |  |  | avio_printf(avf->pb, "%d\n%02d:%02d:%02d,%03d --> %02d:%02d:%02d,%03d\n", | 
		
	
	
		
			
				|  |  | @@ -81,6 +84,7 @@ static int srt_write_packet(AVFormatContext *avf, AVPacket *pkt) | 
		
	
		
			
			|  |  |  | if (write_ts) | 
		
	
		
			
			|  |  |  | avio_write(avf->pb, "\n\n", 2); | 
		
	
		
			
			|  |  |  | avio_flush(avf->pb); | 
		
	
		
			
			|  |  |  | srt->index++; | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | 
 |