* commit '9257692ac15eff7b07540c1f61cebde0d8823fbd':
lavf: Only initialize s->offset once when using avoid_negative_ts make_zero
Conflicts:
libavformat/mux.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '40ed1cbf147d09fc0894bee160f0b6b6d9159fc5':
movenc: Allow writing a DASH sidx atom at the start of files
Conflicts:
libavformat/movenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3847f3ab58b3b74604807394247bf68827258103':
movenc: Add tfra entries for all tracks in a moof
Merged-by: Michael Niedermayer <michaelni@gmx.at>
When given a stream starting at dts=0, it would previously consider
s->offset as uninitialized and set an offset when the second packet
was written, ending up writing two packets with dts=0. By initializing
this field to AV_NOPTS_VALUE, we make sure that we only initialize it
once, on the first packet.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '2ded57371abead879bcee56da5131e5fac0d17ef':
movenc: Add support for writing sidx atoms for DASH segments
Conflicts:
Changelog
libavformat/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '2d9d6afb8d2f284f5e620ecc19f643d5cd3facb8':
movenc: Factorize adding fragment info into a separate function
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '0f9eb9165bb7d7982fdedf64f6bcec856f1bedd6':
movenc: Include empty tracks in iods when writing fragmented mp4
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This is mapped to the faststart flag (which in this case
perhaps should be called "shift and write index at the
start of the file"), which for fragmented files will
write a sidx index at the start.
When segmenting DASH into files, there's usually one sidx
at the start of each segment (although it's not clear to me
whether that actually is necessary). When storing all of it
in one file, the MPD doesn't necessarily need to describe
the individual segments, but the offsets of the fragments can be
fetched from one large sidx atom at the start of the file. This
allows creating files for the DASH ISO BMFF on-demand profile.
Signed-off-by: Martin Storsjö <martin@martin.st>
Previously only tfra entries were added for the first track in each moof.
The frag_info array used for tfra can also be used for writing
other kinds of fragment indexes, where it's more important to
include all tracks.
When the separate_moof option is enabled (as in ismv), we write
a separate moof for each track, so this doesn't make any difference
in that case.
Signed-off-by: Martin Storsjö <martin@martin.st>
This is mostly to serve as a reference example on how to segment
the output from the mp4 muxer, capable of writing the segment
list in four different ways:
- SegmentTemplate with SegmentTimeline
- SegmentTemplate with implicit segments
- SegmentList with individual files
- SegmentList with one single file per track, and byte ranges
The muxer is able to serve live content (with optional windowing)
or create a static segmented MPD.
In advanced cases, users will probably want to do the segmenting
in their own application code.
Signed-off-by: Martin Storsjö <martin@martin.st>
A flag "dash" is added, which enables the necessary flags for
creating DASH compatible fragments.
When this is enabled, one sidx atom is written for each track
before every moof atom.
Signed-off-by: Martin Storsjö <martin@martin.st>
By calling this after writing the moof the first time (for
calculating the moof size), we can avoid intermediate storage
of tfrf_offset in MOVTrack.
Signed-off-by: Martin Storsjö <martin@martin.st>
When writing fragmented streams with an empty initial moov,
we won't have any samples in any tracks when writing the
moov atom, thus trust that any tracks that are added actually
will be present.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'c64f3615118d757dcf76040fe5407bf2b3883206':
flvenc: Send new metadata when FLAG_METADATA_UPDATED is set.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '4d0cd5f58c892276716f46f4b2702915e5018215':
flvenc: move metadata updates into a single function
Conflicts:
libavformat/flvenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This is a generic solution that will not reqiore modifications when new options are added.
This also fixes problem with current implementation when qmin or qmax=-1.
Only 8 bits was sent and read back as 255.
Fixes#1275Fixes#1461
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
In http_open_cnx, the patch restores the AVDictionary if connection needs to be re-tried
because of a authentication/redirect status code.
Previously, if a 401/407/30x status code was encountered, http_open_cnx would restart at the redo label, but any options
used by the underlying protocol would be missing because they were removed by the first attempt.
Signed-off-by: Brandon Lees <brandon@n-hega.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3a6bb9735053c453f806ceab1d91124648d90aca':
Icecast: Send 100-continue header if possible
See: 17dc39e76b
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This is needed because Icecast since version 2.4.1 doesn't default
to audio/mpeg anymore. AVOption default not used here, since a later
check if -content_type is set is performed and would break.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
This allows for proper error reporting. Only do
this for non-legacy requests as only Icecast >2.4.0
will reply with a proper status.
Libav seems to accept both, 100 and 200 status codes, but
let's stay close to spec.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
According to the DASH spec, Representation IDs should be unique
across all adaptation sets. Fixing that and updating the fate
reference file to reflect this change.
Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Using 100-continue ffmpeg will only send data if the server confirms it,
so if there is an error with auth or mounpoint, this allows that it is
properly reported to the user. Else ffmpeg sends data and just quits at
some point without an error message.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
use a default (audio/mpeg for historical reason) if none. Required since Icecast 2.4.1
Not using AVOption default because this breaks content-type warnings (needs to
detect if no type was set by the user)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This allows selecting if the demuxer should consider all streams to be
found after the first PMT and add further streams during decoding or if it rather
should scan all that are within the analyze-duration and other limits
Fixes Ticket3762
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>