This fixes the abnormally high ts overhead in the files produced by the
HLS and segments muxers. See https://trac.ffmpeg.org/ticket/2857 . For
example makes it much more likely that it can produces streams that fit
under the 64kb App store limit.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '28816050e47b6dba430a52e429d21a864cffda8e':
lavf: Set the stream time base hint properly for chained muxers
Conflicts:
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This avoids having to assign oformat, allows returning the
correct error code and allocates priv_data
Based on patch by: Mika Raento <mika.raento@elisa.fi>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Avoid negative durations in case there is a single packet in the current
segment, since in that case the end time is still set to the previous
segment end time.
Make the segment muxer keep segment_list_size segments instead of
segment_list_size + 1 segments. This patch also changes the
documentation for segment_list_size to reduce possible confusion over
how many segments are kept.
this allows the segment list to
be limited to containing only one segment which used to be impossible
because a segment_list_size of 0 kept all the segments and a
segment_list_size of 1 kept 2 segments.
Signed-off-by: Simon Thelen <ffmpeg-dev@c-14.de>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '87a3ea3192bf5e4aafa08bca8686a2b577eae818':
segment: Report the current media sequence
Conflicts:
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '5c08ae4f37281441188447cd04dcaf7cd7ce031f':
segment: Add an option to prepend a string to the list entries
Conflicts:
doc/muxers.texi
libavformat/segment.c
See: 5e278c19c7
Merged-by: Michael Niedermayer <michaelni@gmx.at>
When using the wrap option the EXT-X-MEDIA-SEQUENCE header of the playlist file was reset instead of being incremented.
It is now incremented by one for every media URI removed from the playlist file as the standard states.
Signed-off-by: Willy Aubry <waubry@viotech.net>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
In particular, avoid to leave around the seg->avf pointer to freed
structure, and fix crash with:
ffmpeg -f lavfi -i testsrc -c:v h264 -map 0 -f segment foo-%d.ts
This option allows to add a prefix to the segment list entry filenames.
Also set by default the list entry filenames to the corresponding
segment basename, consistent with the HLS muxer.
Based on an idea by Steven Liu <lingjiujianke@gmail.com>.
The DTS needs to be resynched against the segment start PTS, or the
resulting DTS may result < PTS.
Reported-by: Owen Jones <riots6@gmail.com>
See thread:
Subject: [FFmpeg-user] pts/dts error using reset_timestamps while splitting a DVD
Date: Sat, 19 Jan 2013 08:58:27 +0000
Replace wrong "EXT-X-ALLOWCACHE" with "EXT-X-ALLOW-CACHE", and value 1/0
with YES/NO, as per spec.
Fix trac ticket #2228.
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
The new options reset the timestamps at each new segment, so that the
generated segments will have timestamps starting close to 0.
It is meant to address trac ticket #1425.
From the M3U8 specification:
|The EXT-X-MEDIA-SEQUENCE tag indicates the sequence number of the first
|URI that appears in a Playlist file.
Previously it was using the list index number. Also remove now unused
list_count field.
The segment muxer presumes the use of AVFMT_GLOBALHEADER, ssegment should
be use in case of formats which requires no global headers.
Regression introduced when merging
0826d8513d.
Some muxers do not allow stream if codec_tag is incompatible.
Sometimes the passed input codec's codec_tag is not compatible with the
output muxer.
Because the codec_tag field of the segment muxer cannot be set, ffmpeg.c
doesn't know how to handle these cases.
Signed-off-by: ChanMin Kim <kcm1700@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Since the pointer `oc' is NULL, oc->oformat->name will cause a null
pointer dereference. This patch changes it to seg->oformat->name.
Signed-off-by: Xi Wang <xi.wang@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '88058d9a994f42e4e9ed4e67baf696bbfe53128c':
vc1dec: Set chroma reference field from REFFIELD for 1REF field pictures
segment: support applehttp style list
Conflicts:
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* qatar/master:
x86: vc1: call ff_vc1dsp_init_x86() under if (ARCH_X86)
x86: cavs: call ff_cavsdsp_init_x86() under if (ARCH_X86)
x86: call most of the x86 dsp init functions under if (ARCH_X86)
doc: support the new website layout
doc: remove a warning from filters.texi
doc: initial nut documentation
segment: drop global headers setting
lavu: fix typo in Makefile
Conflicts:
doc/Makefile
doc/filters.texi
doc/t2h.init
libavcodec/fmtconvert.c
libavcodec/proresdsp.c
libavcodec/x86/Makefile
libavcodec/x86/vc1dsp_mmx.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
avconv provides an option to set it externally and there isn't a way for
the outer demuxer to report the inner demuxer flag.
Solves a bad interaction between mpegts and x264, but requires
additional setting for the user.
* commit '65d12900432ac880d764edbbd36818431484a76e':
configure: add --enable-lto option
x86: cpu: Break out test for cpuid capabilities into separate function
x86: ff_get_cpu_flags_x86(): Avoid a pointless variable indirection
build: Factor out mpegaudio dependencies to CONFIG_MPEGAUDIO
segment: Add comments about calls that only are relevant for some muxers
segment: Add an option for omitting the first header and final trailer
Conflicts:
configure
libavcodec/Makefile
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'a854362b40f0e458db5a1fb0d2612a5702ee0ace':
segment: Flush buffered data before finishing a segment
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'f7b240434c015056bc6319ddbdb8483757cc13e2':
segment: Set the resend_headers flag for each segment
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '378a6315b7c48195ffd94e6aa9aa6d663d42b35e':
segment: Add an option for disabling writing of a header/trailer to each segment
Conflicts:
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'eb447d515956b3ce182d9750083131735f00324c':
segment: Free and reinit the muxer before calling avformat_write_header
Conflicts:
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '73871dc96ff78053b9dcd0eb259b7f5a5308ec87':
segment: Use the public av_write_header/av_write_trailer functions
Conflicts:
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '0edae4e6286096023cdd6adea74722fa06029867':
segment: Properly create new AVStreams for the chained muxer
segment: Add a missing space
Conflicts:
libavformat/segment.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This makes sure any buffered data is written to the segment, for
muxers that buffer up data internally (e.g. fragmented mp4).
Signed-off-by: Martin Storsjö <martin@martin.st>
This makes sure new inline headers are emitted when the next
packet is written. This allows segmenting mpegts without calling
write_header/write_trailer (nor freeing/reiniting the muxer)
for each segment.
Signed-off-by: Martin Storsjö <martin@martin.st>
Some segmented formats (such as fragmented mp4) are "bare", as in,
the segment files do not have the same headers/trailers as full normal
files of that format have.
Signed-off-by: Martin Storsjö <martin@martin.st>
This makes sure the muxers are set up in the way they expect
with no data left around from the previous run (which could
cause various issues including memory leaks, depending on the chaine
muxer).
This fixes memory leaks with the mpegts and flv muxers. It also
makes the usage of chained muxers correct.
Signed-off-by: Martin Storsjö <martin@martin.st>
With this change, the segmenter muxer doesn't rely on anything
not available/supported to libavformat external users, making
the segmenter muxer do things just like a normal segmenter
application using libavformat would do.
Signed-off-by: Martin Storsjö <martin@martin.st>
Before, the chained muxer reused the AVStreams array from
the outer muxer, which made it impossible to use the proper
public functions (such as av_write_frame) when calling the
chained muxer.
Signed-off-by: Martin Storsjö <martin@martin.st>
* qatar/master:
ARM: use numeric ID for Tag_ABI_align_preserved
segment: Pass the interrupt callback on to the chained AVFormatContext, too
ARM: bswap: drop armcc version of av_bswap16()
ARM: set Tag_ABI_align_preserved in all asm files
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This might not be needed at the moment, but it's good practice to
pass it to all chained AVFormatContexts, if it would happen to be
used there at a later point.
Signed-off-by: Martin Storsjö <martin@martin.st>
Remove a bogus warning when using segment_list_type csv.
The LIST_TYPE_EXT constant is only used internally, so it can
be removed when the feature (segment_list_type ext) gets removed.
Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
Should also be faster (though I doubt that hardly ever matters
for the usage here).
Also remove the pointer copy. Since we do not need to reset the
pointer to the start of the string, it is not needed anymore.
Signed-off-by: Alexander Strasser <eclipse7@gmx.net>