| 
																	
																	
																		
																	
																	
																 | 
																@@ -54,7 +54,7 @@ struct variant { | 
															
														
														
													
														
															
																 | 
																 | 
																    char url[MAX_URL_SIZE]; | 
																 | 
																 | 
																    char url[MAX_URL_SIZE]; | 
															
														
														
													
														
															
																 | 
																 | 
																}; | 
																 | 
																 | 
																}; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																typedef struct AppleHTTPContext { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																typedef struct HLSContext { | 
															
														
														
													
														
															
																 | 
																 | 
																    char playlisturl[MAX_URL_SIZE]; | 
																 | 
																 | 
																    char playlisturl[MAX_URL_SIZE]; | 
															
														
														
													
														
															
																 | 
																 | 
																    int target_duration; | 
																 | 
																 | 
																    int target_duration; | 
															
														
														
													
														
															
																 | 
																 | 
																    int start_seq_no; | 
																 | 
																 | 
																    int start_seq_no; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -66,7 +66,7 @@ typedef struct AppleHTTPContext { | 
															
														
														
													
														
															
																 | 
																 | 
																    int cur_seq_no; | 
																 | 
																 | 
																    int cur_seq_no; | 
															
														
														
													
														
															
																 | 
																 | 
																    URLContext *seg_hd; | 
																 | 
																 | 
																    URLContext *seg_hd; | 
															
														
														
													
														
															
																 | 
																 | 
																    int64_t last_load_time; | 
																 | 
																 | 
																    int64_t last_load_time; | 
															
														
														
													
														
															
																 | 
																 | 
																} AppleHTTPContext; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} HLSContext; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) | 
																 | 
																 | 
																static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -76,7 +76,7 @@ static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) | 
															
														
														
													
														
															
																 | 
																 | 
																    return len; | 
																 | 
																 | 
																    return len; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static void free_segment_list(AppleHTTPContext *s) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static void free_segment_list(HLSContext *s) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    int i; | 
																 | 
																 | 
																    int i; | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < s->n_segments; i++) | 
																 | 
																 | 
																    for (i = 0; i < s->n_segments; i++) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -85,7 +85,7 @@ static void free_segment_list(AppleHTTPContext *s) | 
															
														
														
													
														
															
																 | 
																 | 
																    s->n_segments = 0; | 
																 | 
																 | 
																    s->n_segments = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static void free_variant_list(AppleHTTPContext *s) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static void free_variant_list(HLSContext *s) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    int i; | 
																 | 
																 | 
																    int i; | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < s->n_variants; i++) | 
																 | 
																 | 
																    for (i = 0; i < s->n_variants; i++) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -109,7 +109,7 @@ static void handle_variant_args(struct variant_info *info, const char *key, | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static int parse_playlist(URLContext *h, const char *url) | 
																 | 
																 | 
																static int parse_playlist(URLContext *h, const char *url) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    AppleHTTPContext *s = h->priv_data; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    HLSContext *s = h->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																    AVIOContext *in; | 
																 | 
																 | 
																    AVIOContext *in; | 
															
														
														
													
														
															
																 | 
																 | 
																    int ret = 0, duration = 0, is_segment = 0, is_variant = 0, bandwidth = 0; | 
																 | 
																 | 
																    int ret = 0, duration = 0, is_segment = 0, is_variant = 0, bandwidth = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																    char line[1024]; | 
																 | 
																 | 
																    char line[1024]; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -175,9 +175,9 @@ fail: | 
															
														
														
													
														
															
																 | 
																 | 
																    return ret; | 
																 | 
																 | 
																    return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static int applehttp_close(URLContext *h) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static int hls_close(URLContext *h) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    AppleHTTPContext *s = h->priv_data; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    HLSContext *s = h->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    free_segment_list(s); | 
																 | 
																 | 
																    free_segment_list(s); | 
															
														
														
													
														
															
																 | 
																 | 
																    free_variant_list(s); | 
																 | 
																 | 
																    free_variant_list(s); | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -185,9 +185,9 @@ static int applehttp_close(URLContext *h) | 
															
														
														
													
														
															
																 | 
																 | 
																    return 0; | 
																 | 
																 | 
																    return 0; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static int applehttp_open(URLContext *h, const char *uri, int flags) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static int hls_open(URLContext *h, const char *uri, int flags) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    AppleHTTPContext *s = h->priv_data; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    HLSContext *s = h->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																    int ret, i; | 
																 | 
																 | 
																    int ret, i; | 
															
														
														
													
														
															
																 | 
																 | 
																    const char *nested_url; | 
																 | 
																 | 
																    const char *nested_url; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -258,13 +258,13 @@ static int applehttp_open(URLContext *h, const char *uri, int flags) | 
															
														
														
													
														
															
																 | 
																 | 
																    return 0; | 
																 | 
																 | 
																    return 0; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																fail: | 
																 | 
																 | 
																fail: | 
															
														
														
													
														
															
																 | 
																 | 
																    applehttp_close(h); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    hls_close(h); | 
															
														
														
													
														
															
																 | 
																 | 
																    return ret; | 
																 | 
																 | 
																    return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static int applehttp_read(URLContext *h, uint8_t *buf, int size) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static int hls_read(URLContext *h, uint8_t *buf, int size) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    AppleHTTPContext *s = h->priv_data; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    HLSContext *s = h->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																    const char *url; | 
																 | 
																 | 
																    const char *url; | 
															
														
														
													
														
															
																 | 
																 | 
																    int ret; | 
																 | 
																 | 
																    int ret; | 
															
														
														
													
														
															
																 | 
																 | 
																    int64_t reload_interval; | 
																 | 
																 | 
																    int64_t reload_interval; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -329,19 +329,19 @@ retry: | 
															
														
														
													
														
															
																 | 
																 | 
																#if FF_API_APPLEHTTP_PROTO | 
																 | 
																 | 
																#if FF_API_APPLEHTTP_PROTO | 
															
														
														
													
														
															
																 | 
																 | 
																URLProtocol ff_applehttp_protocol = { | 
																 | 
																 | 
																URLProtocol ff_applehttp_protocol = { | 
															
														
														
													
														
															
																 | 
																 | 
																    .name           = "applehttp", | 
																 | 
																 | 
																    .name           = "applehttp", | 
															
														
														
													
														
															
																 | 
																 | 
																    .url_open       = applehttp_open, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    .url_read       = applehttp_read, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    .url_close      = applehttp_close, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .url_open       = hls_open, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .url_read       = hls_read, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .url_close      = hls_close, | 
															
														
														
													
														
															
																 | 
																 | 
																    .flags          = URL_PROTOCOL_FLAG_NESTED_SCHEME, | 
																 | 
																 | 
																    .flags          = URL_PROTOCOL_FLAG_NESTED_SCHEME, | 
															
														
														
													
														
															
																 | 
																 | 
																    .priv_data_size = sizeof(AppleHTTPContext), | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .priv_data_size = sizeof(HLSContext), | 
															
														
														
													
														
															
																 | 
																 | 
																}; | 
																 | 
																 | 
																}; | 
															
														
														
													
														
															
																 | 
																 | 
																#endif | 
																 | 
																 | 
																#endif | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																URLProtocol ff_hls_protocol = { | 
																 | 
																 | 
																URLProtocol ff_hls_protocol = { | 
															
														
														
													
														
															
																 | 
																 | 
																    .name           = "hls", | 
																 | 
																 | 
																    .name           = "hls", | 
															
														
														
													
														
															
																 | 
																 | 
																    .url_open       = applehttp_open, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    .url_read       = applehttp_read, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    .url_close      = applehttp_close, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .url_open       = hls_open, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .url_read       = hls_read, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .url_close      = hls_close, | 
															
														
														
													
														
															
																 | 
																 | 
																    .flags          = URL_PROTOCOL_FLAG_NESTED_SCHEME, | 
																 | 
																 | 
																    .flags          = URL_PROTOCOL_FLAG_NESTED_SCHEME, | 
															
														
														
													
														
															
																 | 
																 | 
																    .priv_data_size = sizeof(AppleHTTPContext), | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .priv_data_size = sizeof(HLSContext), | 
															
														
														
													
														
															
																 | 
																 | 
																}; | 
																 | 
																 | 
																}; |