diff options
author | Rodger Combs <rodger.combs@gmail.com> | 2015-06-09 02:32:18 -0500 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-06-09 13:26:00 +0200 |
commit | e60b018c7416a9a0608768703166973f37e5e326 (patch) | |
tree | 933b00c03c526995de60c4fbd7eb2ac6e43eb525 /libavformat | |
parent | e1009665759d4a3938dd2dd07b7e84d8bc9c5290 (diff) | |
download | ffmpeg-e60b018c7416a9a0608768703166973f37e5e326.tar.gz |
lavf/segment: add an option to allow breaking on non-keyframes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/segment.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libavformat/segment.c b/libavformat/segment.c index 1162ea2122..4418d0f338 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -111,6 +111,7 @@ typedef struct SegmentContext { int64_t initial_offset; ///< initial timestamps offset, expressed in microseconds char *reference_stream_specifier; ///< reference stream specifier int reference_stream_index; + int break_non_keyframes; SegmentListEntry cur_entry; SegmentListEntry *segment_list_entries; @@ -780,7 +781,7 @@ static int seg_write_packet(AVFormatContext *s, AVPacket *pkt) pkt->stream_index == seg->reference_stream_index ? seg->frame_count : -1); if (pkt->stream_index == seg->reference_stream_index && - pkt->flags & AV_PKT_FLAG_KEY && + (pkt->flags & AV_PKT_FLAG_KEY || seg->break_non_keyframes) && seg->segment_frame_count > 0 && (seg->cut_pending || seg->frame_count >= start_frame || (pkt->pts != AV_NOPTS_VALUE && @@ -920,6 +921,7 @@ static const AVOption options[] = { { "segment_start_number", "set the sequence number of the first segment", OFFSET(segment_idx), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E }, { "segment_wrap_number", "set the number of wrap before the first segment", OFFSET(segment_idx_wrap_nb), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E }, { "strftime", "set filename expansion with strftime at segment creation", OFFSET(use_strftime), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, E }, + { "break_non_keyframes", "allow breaking segments on non-keyframes", OFFSET(break_non_keyframes), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, E }, { "individual_header_trailer", "write header/trailer to each segment", OFFSET(individual_header_trailer), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, E }, { "write_header_trailer", "write a header to the first segment and a trailer to the last one", OFFSET(write_header_trailer), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, E }, |