AVFormatContext *avf;
char *format; ///< format to use for output segment files
char *list; ///< filename for the segment list file
- int list_count; ///< list counter
int list_flags; ///< flags affecting list generation
int list_size; ///< number of entries for the segment list file
double list_max_segment_time; ///< max segment time in the current list
oc = seg->avf;
}
+ seg->segment_idx++;
if (seg->segment_idx_wrap)
seg->segment_idx %= seg->segment_idx_wrap;
if (av_get_frame_filename(oc->filename, sizeof(oc->filename),
- s->filename, seg->segment_idx++) < 0) {
+ s->filename, seg->segment_idx) < 0) {
av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->filename);
return AVERROR(EINVAL);
}
if (seg->list_type == LIST_TYPE_M3U8) {
avio_printf(seg->list_pb, "#EXTM3U\n");
avio_printf(seg->list_pb, "#EXT-X-VERSION:3\n");
- avio_printf(seg->list_pb, "#EXT-X-MEDIA-SEQUENCE:%d\n", seg->list_count);
+ avio_printf(seg->list_pb, "#EXT-X-MEDIA-SEQUENCE:%d\n", seg->segment_idx);
avio_printf(seg->list_pb, "#EXT-X-ALLOWCACHE:%d\n",
!!(seg->list_flags & SEGMENT_LIST_FLAG_CACHE));
if (seg->list_flags & SEGMENT_LIST_FLAG_LIVE)
(int)ceil(seg->list_max_segment_time));
avio_printf(seg->list_pb, "#EXT-X-ENDLIST\n");
}
- seg->list_count++;
avio_close(seg->list_pb);
}
oc = seg->avf;
if (av_get_frame_filename(oc->filename, sizeof(oc->filename),
- s->filename, seg->segment_idx++) < 0) {
+ s->filename, seg->segment_idx) < 0) {
ret = AVERROR(EINVAL);
goto fail;
}
.name = "segment",
.long_name = NULL_IF_CONFIG_SMALL("segment"),
.priv_data_size = sizeof(SegmentContext),
- .flags = AVFMT_NOFILE,
+ .flags = AVFMT_NOFILE|AVFMT_GLOBALHEADER,
.write_header = seg_write_header,
.write_packet = seg_write_packet,
.write_trailer = seg_write_trailer,