|  |  | @@ -139,39 +139,39 @@ static int srt_read_header(AVFormatContext *s) | 
		
	
		
			
			|  |  |  | av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | while (!url_feof(s->pb)) { | 
		
	
		
			
			|  |  |  | read_chunk(s->pb, &buf); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (buf.len) { | 
		
	
		
			
			|  |  |  | int64_t pos = avio_tell(s->pb); | 
		
	
		
			
			|  |  |  | int64_t pts; | 
		
	
		
			
			|  |  |  | int duration; | 
		
	
		
			
			|  |  |  | const char *ptr = buf.str; | 
		
	
		
			
			|  |  |  | int32_t x1 = -1, y1 = -1, x2 = -1, y2 = -1; | 
		
	
		
			
			|  |  |  | AVPacket *sub; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | pts = get_pts(&ptr, &duration, &x1, &y1, &x2, &y2); | 
		
	
		
			
			|  |  |  | if (pts != AV_NOPTS_VALUE) { | 
		
	
		
			
			|  |  |  | int len = buf.len - (ptr - buf.str); | 
		
	
		
			
			|  |  |  | sub = ff_subtitles_queue_insert(&srt->q, ptr, len, 0); | 
		
	
		
			
			|  |  |  | if (!sub) { | 
		
	
		
			
			|  |  |  | res = AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | goto end; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | sub->pos = pos; | 
		
	
		
			
			|  |  |  | sub->pts = pts; | 
		
	
		
			
			|  |  |  | sub->duration = duration; | 
		
	
		
			
			|  |  |  | if (x1 != -1) { | 
		
	
		
			
			|  |  |  | uint8_t *p = av_packet_new_side_data(sub, AV_PKT_DATA_SUBTITLE_POSITION, 16); | 
		
	
		
			
			|  |  |  | if (p) { | 
		
	
		
			
			|  |  |  | AV_WL32(p,      x1); | 
		
	
		
			
			|  |  |  | AV_WL32(p +  4, y1); | 
		
	
		
			
			|  |  |  | AV_WL32(p +  8, x2); | 
		
	
		
			
			|  |  |  | AV_WL32(p + 12, y2); | 
		
	
		
			
			|  |  |  | read_chunk(s->pb, &buf); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (buf.len) { | 
		
	
		
			
			|  |  |  | int64_t pos = avio_tell(s->pb); | 
		
	
		
			
			|  |  |  | int64_t pts; | 
		
	
		
			
			|  |  |  | int duration; | 
		
	
		
			
			|  |  |  | const char *ptr = buf.str; | 
		
	
		
			
			|  |  |  | int32_t x1 = -1, y1 = -1, x2 = -1, y2 = -1; | 
		
	
		
			
			|  |  |  | AVPacket *sub; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | pts = get_pts(&ptr, &duration, &x1, &y1, &x2, &y2); | 
		
	
		
			
			|  |  |  | if (pts != AV_NOPTS_VALUE) { | 
		
	
		
			
			|  |  |  | int len = buf.len - (ptr - buf.str); | 
		
	
		
			
			|  |  |  | sub = ff_subtitles_queue_insert(&srt->q, ptr, len, 0); | 
		
	
		
			
			|  |  |  | if (!sub) { | 
		
	
		
			
			|  |  |  | res = AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | goto end; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | sub->pos = pos; | 
		
	
		
			
			|  |  |  | sub->pts = pts; | 
		
	
		
			
			|  |  |  | sub->duration = duration; | 
		
	
		
			
			|  |  |  | if (x1 != -1) { | 
		
	
		
			
			|  |  |  | uint8_t *p = av_packet_new_side_data(sub, AV_PKT_DATA_SUBTITLE_POSITION, 16); | 
		
	
		
			
			|  |  |  | if (p) { | 
		
	
		
			
			|  |  |  | AV_WL32(p,      x1); | 
		
	
		
			
			|  |  |  | AV_WL32(p +  4, y1); | 
		
	
		
			
			|  |  |  | AV_WL32(p +  8, x2); | 
		
	
		
			
			|  |  |  | AV_WL32(p + 12, y2); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ff_subtitles_queue_finalize(&srt->q); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | 
 |