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().
This commit is contained in:
@@ -215,6 +215,7 @@ void av_register_all(void)
|
|||||||
#endif
|
#endif
|
||||||
REGISTER_DEMUXER (SEGAFILM, segafilm);
|
REGISTER_DEMUXER (SEGAFILM, segafilm);
|
||||||
REGISTER_MUXER (SEGMENT, segment);
|
REGISTER_MUXER (SEGMENT, segment);
|
||||||
|
REGISTER_MUXER (SEGMENT, stream_segment);
|
||||||
REGISTER_DEMUXER (SHORTEN, shorten);
|
REGISTER_DEMUXER (SHORTEN, shorten);
|
||||||
REGISTER_DEMUXER (SIFF, siff);
|
REGISTER_DEMUXER (SIFF, siff);
|
||||||
REGISTER_DEMUXER (SMACKER, smacker);
|
REGISTER_DEMUXER (SMACKER, smacker);
|
||||||
|
@@ -269,7 +269,6 @@ static const AVClass seg_class = {
|
|||||||
.version = LIBAVUTIL_VERSION_INT,
|
.version = LIBAVUTIL_VERSION_INT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
AVOutputFormat ff_segment_muxer = {
|
AVOutputFormat ff_segment_muxer = {
|
||||||
.name = "segment",
|
.name = "segment",
|
||||||
.long_name = NULL_IF_CONFIG_SMALL("segment muxer"),
|
.long_name = NULL_IF_CONFIG_SMALL("segment muxer"),
|
||||||
@@ -280,3 +279,21 @@ AVOutputFormat ff_segment_muxer = {
|
|||||||
.write_trailer = seg_write_trailer,
|
.write_trailer = seg_write_trailer,
|
||||||
.priv_class = &seg_class,
|
.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,
|
||||||
|
};
|
||||||
|
@@ -30,8 +30,8 @@
|
|||||||
#include "libavutil/avutil.h"
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_MAJOR 54
|
#define LIBAVFORMAT_VERSION_MAJOR 54
|
||||||
#define LIBAVFORMAT_VERSION_MINOR 11
|
#define LIBAVFORMAT_VERSION_MINOR 12
|
||||||
#define LIBAVFORMAT_VERSION_MICRO 101
|
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
LIBAVFORMAT_VERSION_MINOR, \
|
LIBAVFORMAT_VERSION_MINOR, \
|
||||||
|
Reference in New Issue
Block a user