Lines Matching defs:playlist
51 * An apple http stream consists of a playlist with media segment files,
55 * the user supplied the url to a main playlist that only lists the variant
58 * If the main playlist doesn't point at any variants, we still create
86 * Each playlist has its own demuxer. If it currently is active,
90 struct playlist {
131 /* Renditions associated with this playlist, if any.
134 * multiple (playlist-less) renditions associated with them. */
141 * The rendition may either be an external playlist or it may be
143 * playlist is NULL).
147 struct playlist *playlist;
159 struct playlist **playlists;
170 struct playlist **playlists;
192 static void free_segment_list(struct playlist *pls)
208 struct playlist *pls = c->playlists[i];
261 static struct playlist *new_playlist(HLSContext *c, const char *url,
264 struct playlist *pls = av_mallocz(sizeof(struct playlist));
290 struct playlist *pls;
405 /* add the playlist if this is an external rendition */
407 rend->playlist = new_playlist(c, info->uri, url_base);
408 if (rend->playlist)
409 dynarray_add(&rend->playlist->renditions,
410 &rend->playlist->n_renditions, rend);
478 /* used by parse_playlist to allocate a new variant+playlist when the
479 * playlist is detected to be a Media Playlist (not Master Playlist)
481 * allocated the variant and playlist already) */
482 static int ensure_playlist(HLSContext *c, struct playlist **pls, const char *url)
493 * pls = !NULL => parented Media Playlist, playlist+variant allocated */
495 struct playlist *pls, AVIOContext *in)
684 static int read_from_url(struct playlist *pls, uint8_t *buf, int buf_size,
732 static int id3_has_changed_values(struct playlist *pls, AVDictionary *metadata,
761 static void handle_id3(AVIOContext *pb, struct playlist *pls)
803 static void intercept_id3(struct playlist *pls, uint8_t *buf,
903 static int open_input(HLSContext *c, struct playlist *pls)
932 av_log(pls->parent, AV_LOG_VERBOSE, "HLS request for url '%s', offset %"PRId64", playlist %d\n",
1000 static int64_t default_reload_interval(struct playlist *pls)
1009 struct playlist *v = opaque;
1021 /* Check that the playlist is still needed before opening a new
1033 av_log(v->parent, AV_LOG_INFO, "No longer receiving playlist %d\n",
1039 * the last playlist reload, reload the playlists now. */
1046 av_log(v->parent, AV_LOG_WARNING, "Failed to reload playlist %d\n",
1050 /* If we need to reload the playlist again below (if
1075 av_log(v->parent, AV_LOG_WARNING, "Failed to open segment of playlist %d\n",
1101 static int playlist_in_multiple_variants(HLSContext *c, struct playlist *pls)
1130 if (rend->playlist)
1131 /* rendition is an external playlist
1132 * => add the playlist to the variant */
1133 dynarray_add(&var->playlists, &var->n_playlists, rend->playlist);
1144 static void add_metadata_from_renditions(AVFormatContext *s, struct playlist *pls,
1176 static int find_timestamp_in_playlist(HLSContext *c, struct playlist *pls,
1202 static int select_cur_seq_no(HLSContext *c, struct playlist *pls)
1208 /* reload the playlist since it was suspended */
1212 * playlist) and this is a complete file, find the matching segment
1276 av_log(NULL, AV_LOG_WARNING, "Empty playlist\n");
1280 /* If the playlist only contained playlists (Master Playlist),
1281 * parse each individual playlist. */
1284 struct playlist *pls = c->playlists[i];
1291 av_log(NULL, AV_LOG_WARNING, "Empty playlist\n");
1317 /* Open the demuxer for each playlist */
1319 struct playlist *pls = c->playlists[i];
1372 /* Create new AVStreams for each stream in this playlist */
1411 struct playlist *pls = v->playlists[j];
1446 struct playlist *pls = c->playlists[s->streams[i]->id];
1451 struct playlist *pls = c->playlists[i];
1463 av_log(s, AV_LOG_INFO, "Now receiving playlist %d, segment %d\n", i, pls->cur_seq_no);
1470 av_log(s, AV_LOG_INFO, "No longer receiving playlist %d\n", i);
1476 static void fill_timing_for_id3_timestamped_stream(struct playlist *pls)
1501 static AVRational get_timebase(struct playlist *pls)
1509 static int compare_ts_with_wrapdetect(int64_t ts_a, struct playlist *pls_a,
1510 int64_t ts_b, struct playlist *pls_b)
1526 struct playlist *pls = c->playlists[i];
1527 /* Make sure we've got one buffered packet from each open playlist
1579 struct playlist *minpls = minplaylist < 0 ?
1596 struct playlist *pls = c->playlists[minplaylist];
1625 struct playlist *seek_pls = NULL;
1647 /* find the playlist with the specified stream */
1649 struct playlist *pls = c->playlists[i];
1656 /* check if the timestamp is valid for the playlist with the
1667 struct playlist *pls = c->playlists[i];
1688 /* seek the playlist to the given position without taking
1689 * keyframes into account since this playlist does not have the