segment: Add a missing space

Signed-off-by: Martin Storsjö <martin@martin.st>
segment: Add an option for omitting the first header and final trailer

This allows writing totally bare segments, without any header/trailer
included anywhere.

Signed-off-by: Martin Storsjö <martin@martin.st>
segment: Properly create new AVStreams for the chained muxer

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>
segment: Use the public av_write_header/av_write_trailer functions

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>
segment: Free and reinit the muxer before calling avformat_write_header

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>
segment: Add an option for disabling writing of a header/trailer to each segment

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>
segment: Set the resend_headers flag for each segment

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>
segment: Flush buffered data before finishing a segment

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>
segment: Add comments about calls that only are relevant for some muxers

Signed-off-by: Martin Storsjö <martin@martin.st>
build: Factor out mpegaudio dependencies to CONFIG_MPEGAUDIO

A new hidden config variable is added for the codecs that depend on the
mpegaudio parts.
x86: ff_get_cpu_flags_x86(): Avoid a pointless variable indirection
x86: cpu: Break out test for cpuid capabilities into separate function
configure: add --enable-lto option

This works with gcc.  Other compilers might need to have a flag
mapping added.

Signed-off-by: Mans Rullgard <mans@mansr.com>
x86: Add YASM implementations of cpuid and xgetbv from x264

This allows detecting CPU features with builds that have neither
gcc inline assembly nor the right compiler intrinsics enabled.
x86: Drop CPU detection intrinsics

Now that there is CPU detection in YASM, there will always be one of
inline or external assembly enabled, which obviates the need to fall
back on CPU detection through compiler intrinsics.
x86: get_cpu_flags: add necessary ifdefs around function body

ff_get_cpu_flags_x86() requires cpuid(), which is conditionally defined
elsewhere in the file.  Surrounding the function body with ifdefs allows
building even when cpuid is not defined.  An empty cpuflags mask is
returned in this case.
h264: don't touch H264Context->ref_count[] during MB decoding

The variable is copied to subsequent threads at the same time, so this
may cause wrong ref_count[] values to be copied to subsequent threads.

This bug was found using TSAN.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Merge commit '0edae4e6286096023cdd6adea74722fa06029867'

* 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>
Merge commit '73871dc96ff78053b9dcd0eb259b7f5a5308ec87'

* commit '73871dc96ff78053b9dcd0eb259b7f5a5308ec87':
  segment: Use the public av_write_header/av_write_trailer functions

Conflicts:
	libavformat/segment.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
Merge commit 'eb447d515956b3ce182d9750083131735f00324c'

* commit 'eb447d515956b3ce182d9750083131735f00324c':
  segment: Free and reinit the muxer before calling avformat_write_header

Conflicts:
	libavformat/segment.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>