From a9a7e215e5207e674338b7ca9eb74e96ae5faf99 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Fri, 13 Jan 2012 15:38:13 +0100 Subject: [PATCH] lavf/segment: add stream_segment variant of the segment muxer This simplifies usage for segment streaming formats with no global headers, tipically MPEG 2 transport stream "ts" files. The seg class duplication is required in order to avoid an infinite loop in libavformat/utils.c:format_child_next_class(). --- libavformat/allformats.c | 1 + libavformat/segment.c | 19 ++++++++++++++++++- libavformat/version.h | 4 ++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/libavformat/allformats.c b/libavformat/allformats.c index c3b8bb479f..c8b9abf9f1 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -215,6 +215,7 @@ void av_register_all(void) #endif REGISTER_DEMUXER (SEGAFILM, segafilm); REGISTER_MUXER (SEGMENT, segment); + REGISTER_MUXER (SEGMENT, stream_segment); REGISTER_DEMUXER (SHORTEN, shorten); REGISTER_DEMUXER (SIFF, siff); REGISTER_DEMUXER (SMACKER, smacker); diff --git a/libavformat/segment.c b/libavformat/segment.c index 4a33c6588e..19d8855c57 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -269,7 +269,6 @@ static const AVClass seg_class = { .version = LIBAVUTIL_VERSION_INT, }; - AVOutputFormat ff_segment_muxer = { .name = "segment", .long_name = NULL_IF_CONFIG_SMALL("segment muxer"), @@ -280,3 +279,21 @@ AVOutputFormat ff_segment_muxer = { .write_trailer = seg_write_trailer, .priv_class = &seg_class, }; + +static const AVClass sseg_class = { + .class_name = "stream_segment muxer", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, +}; + +AVOutputFormat ff_stream_segment_muxer = { + .name = "stream_segment,ssegment", + .long_name = NULL_IF_CONFIG_SMALL("streaming segment muxer"), + .priv_data_size = sizeof(SegmentContext), + .flags = AVFMT_NOFILE, + .write_header = seg_write_header, + .write_packet = seg_write_packet, + .write_trailer = seg_write_trailer, + .priv_class = &sseg_class, +}; diff --git a/libavformat/version.h b/libavformat/version.h index 34b8a075b1..7057e2ccce 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -30,8 +30,8 @@ #include "libavutil/avutil.h" #define LIBAVFORMAT_VERSION_MAJOR 54 -#define LIBAVFORMAT_VERSION_MINOR 11 -#define LIBAVFORMAT_VERSION_MICRO 101 +#define LIBAVFORMAT_VERSION_MINOR 12 +#define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \