You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Merge commit 'a2b7eeeb06471979ee39fd3075a04633222678a6'
* commit 'a2b7eeeb06471979ee39fd3075a04633222678a6': hlsproto: Store all durations in AV_TIME_BASE Conflicts: libavformat/hlsproto.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -45,7 +45,7 @@ | ||||
|  */ | ||||
|  | ||||
| struct segment { | ||||
|     int duration; | ||||
|     int64_t duration; | ||||
|     char url[MAX_URL_SIZE]; | ||||
| }; | ||||
|  | ||||
| @@ -56,7 +56,7 @@ struct variant { | ||||
|  | ||||
| typedef struct HLSContext { | ||||
|     char playlisturl[MAX_URL_SIZE]; | ||||
|     int target_duration; | ||||
|     int64_t target_duration; | ||||
|     int start_seq_no; | ||||
|     int finished; | ||||
|     int n_segments; | ||||
| @@ -111,7 +111,8 @@ static int parse_playlist(URLContext *h, const char *url) | ||||
| { | ||||
|     HLSContext *s = h->priv_data; | ||||
|     AVIOContext *in; | ||||
|     int ret = 0, duration = 0, is_segment = 0, is_variant = 0, bandwidth = 0; | ||||
|     int ret = 0, is_segment = 0, is_variant = 0, bandwidth = 0; | ||||
|     int64_t duration = 0; | ||||
|     char line[1024]; | ||||
|     const char *ptr; | ||||
|  | ||||
| @@ -134,14 +135,14 @@ static int parse_playlist(URLContext *h, const char *url) | ||||
|                                &info); | ||||
|             bandwidth = atoi(info.bandwidth); | ||||
|         } else if (av_strstart(line, "#EXT-X-TARGETDURATION:", &ptr)) { | ||||
|             s->target_duration = atoi(ptr); | ||||
|             s->target_duration = atoi(ptr) * AV_TIME_BASE; | ||||
|         } else if (av_strstart(line, "#EXT-X-MEDIA-SEQUENCE:", &ptr)) { | ||||
|             s->start_seq_no = atoi(ptr); | ||||
|         } else if (av_strstart(line, "#EXT-X-ENDLIST", &ptr)) { | ||||
|             s->finished = 1; | ||||
|         } else if (av_strstart(line, "#EXTINF:", &ptr)) { | ||||
|             is_segment = 1; | ||||
|             duration = atoi(ptr); | ||||
|             duration = atof(ptr) * AV_TIME_BASE; | ||||
|         } else if (av_strstart(line, "#", NULL)) { | ||||
|             continue; | ||||
|         } else if (line[0]) { | ||||
| @@ -270,7 +271,6 @@ start: | ||||
|     reload_interval = s->n_segments > 0 ? | ||||
|                       s->segments[s->n_segments - 1]->duration : | ||||
|                       s->target_duration; | ||||
|     reload_interval *= 1000000; | ||||
| retry: | ||||
|     if (!s->finished) { | ||||
|         int64_t now = av_gettime(); | ||||
| @@ -280,7 +280,7 @@ retry: | ||||
|             /* If we need to reload the playlist again below (if | ||||
|              * there's still no more segments), switch to a reload | ||||
|              * interval of half the target duration. */ | ||||
|             reload_interval = s->target_duration * 500000LL; | ||||
|             reload_interval = s->target_duration / 2; | ||||
|         } | ||||
|     } | ||||
|     if (s->cur_seq_no < s->start_seq_no) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user