mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-12 10:15:22 +00:00
lavf/segment: compute max list segment duration
This is useful for the M3U8 format incoming patch.
This commit is contained in:
parent
769500c2a3
commit
4a12d1e8e7
@ -49,6 +49,7 @@ typedef struct {
|
|||||||
char *format; ///< format to use for output segment files
|
char *format; ///< format to use for output segment files
|
||||||
char *list; ///< filename for the segment list file
|
char *list; ///< filename for the segment list file
|
||||||
int list_size; ///< number of entries for the segment list file
|
int list_size; ///< number of entries for the segment list file
|
||||||
|
double list_max_segment_time; ///< max segment time in the current list
|
||||||
ListType list_type; ///< set the list type
|
ListType list_type; ///< set the list type
|
||||||
AVIOContext *list_pb; ///< list file put-byte context
|
AVIOContext *list_pb; ///< list file put-byte context
|
||||||
char *time_str; ///< segment duration specification string
|
char *time_str; ///< segment duration specification string
|
||||||
@ -112,8 +113,14 @@ fail:
|
|||||||
static int segment_list_open(AVFormatContext *s)
|
static int segment_list_open(AVFormatContext *s)
|
||||||
{
|
{
|
||||||
SegmentContext *seg = s->priv_data;
|
SegmentContext *seg = s->priv_data;
|
||||||
return avio_open2(&seg->list_pb, seg->list, AVIO_FLAG_WRITE,
|
int ret;
|
||||||
|
|
||||||
|
ret = avio_open2(&seg->list_pb, seg->list, AVIO_FLAG_WRITE,
|
||||||
&s->interrupt_callback, NULL);
|
&s->interrupt_callback, NULL);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
seg->list_max_segment_time = 0;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void segment_list_close(AVFormatContext *s)
|
static void segment_list_close(AVFormatContext *s)
|
||||||
@ -147,6 +154,7 @@ static int segment_end(AVFormatContext *s)
|
|||||||
} else if (seg->list_type == LIST_TYPE_EXT) {
|
} else if (seg->list_type == LIST_TYPE_EXT) {
|
||||||
avio_printf(seg->list_pb, "%s,%f,%f\n", oc->filename, seg->start_time, seg->end_time);
|
avio_printf(seg->list_pb, "%s,%f,%f\n", oc->filename, seg->start_time, seg->end_time);
|
||||||
}
|
}
|
||||||
|
seg->list_max_segment_time = FFMAX(seg->end_time - seg->start_time, seg->list_max_segment_time);
|
||||||
avio_flush(seg->list_pb);
|
avio_flush(seg->list_pb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user