This makes the encoding of picture descriptions consistent with the
encoding of other text id3 tags and works better with iTunes, which
does not display pictures with some UTF-16 picture descriptions
(including a UTF-16 empty string, i.e. BOM + terminator). It also
saves a few bytes.
Example:
ffmpeg -f lavfi -i sine=b=4 -f lavfi -i smptebars -map 0:a -map 1:v \
-codec:a libmp3lame -codec:v mjpeg -id3v2_version 3 \
-metadata:s:v comment="Cover (front)" -t 3 -y out.mp3
This example does not set a picture description (-metadata:s:v title=)
so an empty string is written in the id3v2.3 APIC frame. Without this
patch, UTF-16 is used and the cover art does not display in iTunes.
With the patch the cover art is displayed. (Note that iTunes does not
display or have a way to set picture descriptions, only the picture
itself, but nevertheless has trouble skipping some UTF-16 descriptions.)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '8e1fe345577a42f99591caf8a06c447613449694':
rtmp: Detect and warn if the user tries to pass librtmp style parameters
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '9d5ec50ead97e088d77317e77b18cef06cb3d053':
ff_socket: put out-of-line and fallback to fcntl() for close-on-exec
Conflicts:
libavformat/network.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Add one copy of the function into each of the libraries, similarly
to what we do for log2_tab. When using static libs, only one
copy of the file_open.o object file gets included, while when
using shared libraries, each of them get a copy of its own.
This fixes DLL builds with a statically linked C runtime, where
each DLL effectively has got its own instance of the C runtime,
where file descriptors can't be shared across runtimes.
On systems not using msvcrt, the function is not duplicated.
Signed-off-by: Martin Storsjö <martin@martin.st>
This supports non-Linux systems (SOCK_CLOEXEC is non-standard) and
older Linux kernels to the extent possible.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'dfc6b5c81491abf7effb97b23af17ccf7adcd132':
file: Move win32 utf8->wchar open wrapper to libavutil
Merged-by: Michael Niedermayer <michaelni@gmx.at>
When libavformat was changed to use the new avpriv_open function
in 51eb213d00, this silently bypassed the existing wrapper for
win32. Move the win32 wrapper into libavutil/file.c to make sure
it gets called everywhere (not just in the libavformat case).
This makes sure that non-ascii file names gets opened properly
(where file names internally are stored as utf8, but they get
converted to wchar_t and opened with _wsopen).
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'f4d371b9737c0405b3bc46d7ca0c856c0a8616b1':
rtsp: Don't include the listen flag in the SDP demuxer flags
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This provides at least some protection against potential accidental
corruption of AVIO buffer workspace.
Signed-off-by: Martin Storsjö <martin@martin.st>
It's only relevant for the RTSP demuxer. Similarly, the custom_io
flag is only present in the SDP demuxer options list.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '62572435d4106098c090fb8f129a9090e41ff1eb':
rtpenc_chain: Check for errors from ffio_fdopen and ffio_open_dyn_packet_buf
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'f542dedf72091af8e6f32a12bd64289c58857c21':
rtspenc: Check the return value from ffio_open_dyn_packet_buf
Merged-by: Michael Niedermayer <michaelni@gmx.at>
'Fixes' ticket #2526 insofar as it stops 2.5.8 from crashing and
tells the user to upgrade to 2.6 if they want to make video input
work. A real solution to #2526 would be to get video input from
2.5.8 to work right.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Also clear the AVIOContext handle after freeing, to avoid
possible dangling pointers if the later call fails.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '255d9c570e117f0fcb8e51fa2c5996f3c4b2052b':
riff: Move demuxing code to a separate file.
Conflicts:
configure
libavformat/riff.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3dd5c95deef51d7fbf6f4458ba42d1335d2f1472':
riff: Move muxing code to a separate file
Conflicts:
configure
libavformat/riff.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'abe5268c3328bf0e8fcfb7dc6e231b8920177c3a':
tcp: Use a different log message and level if there's more addresses to try
Conflicts:
libavformat/tcp.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '2a0ec47bd70ebb79e8b2d2f956feeb3a813df798':
unix: Convert from AVERROR to errno range before comparing error codes
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '971cce7ebb48a58e72e4dc57b3008e2682bcf4e7':
riff.h: Remove stray extern declaration for non-existing symbol
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c84ea750cf765c9d8845fca5546eb0ae25b9c855':
mpegts: Make discard_pid() faster for single-program streams
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'cabb1681697555e2c319c37c1f30f149207e9434':
mpegts: Remove one memcpy per packet
Conflicts:
libavformat/mpegts.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'daf1e0d3de03bd424016e2a7520e4e94ece5c0ac':
avio: Add an internal function for reading without copying
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This lowers the level of warnings printed if trying to connect
to a host name that provides both v6 and v4 addresses but the
service only is available on the v4 address (often occurring for
'localhost', with servers that aren't v6-aware).
Signed-off-by: Martin Storsjö <martin@martin.st>
Changes since v1 of the patch:
- enable option by default
- add documentation
- move up PTS override code after PES header parsing, to ensure we use the
last PCR before the first packet of the teletext PES packet.
The option overrides teletext packet PTS and DTS values with the timestamps
calculated from the PCR of the first program which the teletext stream is part
of and is not discarded.
Using the same teletext PID for multiple programs is possible, therefore we
need some kind of heuristics to know which program PCR we should synchronize
to. Using the first non-discarded PCR pid among the programs of the teletext
stream seemed like a good choice.
The patch does not do PCR interpolation to estimate the PCR of the teltetext
packet, it just uses the last PCR of the program, which may cause a slight
error (0.1 sec) in the teletext packet pts-es.
Based on a patch by Reimar Döffinger.
http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2012-September/131610.html
Signed-off-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The common case of the pointer having increased by one packet (which results
in no change to the modulus) can be detected with a 64-bit subtraction,
which is far cheaper than a division on many platforms.
Before After
Mean StdDev Mean StdDev Change
Divisions 248.3 8.8 51.5 7.4 +381.7%
Overall 2773.2 25.6 2372.5 43.1 +16.9%
Signed-off-by: Martin Storsjö <martin@martin.st>
When a stream contains a single program, there's no point in doing a
PID -> program lookup. Normally the one and only program isn't disabled,
so no packets should be discarded.
Before After
Mean StdDev Mean StdDev Change
discard_pid() 73.8 9.4 20.2 1.5 +264.8%
Overall 2300.8 28.0 2253.1 20.6 +2.1%
Signed-off-by: Martin Storsjö <martin@martin.st>
This was being performed to ensure that a complete packet was held in
contiguous memory, prior to parsing the packet. However, the source buffer
is typically large enough that the packet was already contiguous, so it is
beneficial to return the packet by reference in most cases.
Before After
Mean StdDev Mean StdDev Change
memcpy 720.7 32.7 649.8 25.1 +10.9%
Overall 2372.7 46.1 2291.7 21.8 +3.5%
Signed-off-by: Martin Storsjö <martin@martin.st>
As long as there is enough contiguous data in the avio buffer,
just return a pointer to it instead of copying it to the caller
provided buffer.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '7950e519bb094897f957b9a9531cc60ba46cbc91':
Disable deprecation warnings for cases where a replacement is available
Conflicts:
libavcodec/avpacket.c
libavcodec/pthread.c
libavcodec/utils.c
libavdevice/v4l2.c
libavfilter/avfiltergraph.c
libavfilter/buffersrc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b5a138652ff8a5b987d3e1191e67fd9f6575527e':
Give less generic names to global library option arrays
Conflicts:
libavcodec/options_table.h
libavfilter/avfilter.c
libavformat/options_table.h
libswscale/options.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'ee37d5811caa8f4ad125a37fe6ce3f9e66cd72f2':
rtpproto: Allow specifying a separate rtcp port in ff_rtp_set_remote_url
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b7e6da988bfd5def40ccf3476eb8ce2f98a969a5':
rtpproto: Move rtpproto specific function declarations to a separate header
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '892b0be1dfbdeaf71235fb6c593286e4f5c7e4ec':
rtpproto: Simplify the rtp_read function by looping over the fds
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '2e814d0329aded98c811d0502839618f08642685':
rtpenc: Simplify code by introducing a macro for rescaling NTP timestamps
Merged-by: Michael Niedermayer <michaelni@gmx.at>
A separate rtcp port can already be set when opening the rtp
protocol normally, but when doing port setup as in RTSP (where
we first need to open the local ports and pass them to the peer,
and only then receive the remote peer port numbers), we didn't
check the same url parameter as in the normal open routine.
Signed-off-by: Martin Storsjö <martin@martin.st>
I doubt that anyone ever would try to send a 1 byte packet
via the RTP protocol, but check just in case - it shouldn't
crash at least.
Signed-off-by: Martin Storsjö <martin@martin.st>
Interruptibility of file operations is strongly desirable in case of
slow storage access, e.g. mounted network share.
This commit introduces possibility to limit data quantity transferred by
'file' protocol at once. By default, old behaviour is preserved and data
is still tried to be transferred without block size limitation.
Note that file I/O operation still may block (or even freeze) inside of
single read(2) or write(2) operation.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* qatar/master:
hls: Call avformat_find_stream_info() on the chained demuxers
Conflicts:
libavformat/hls.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '1f57d60129b0e297cd197c6031c4439b30a6b503':
rtsp: Support RFC4570 (source specific multicast) more properly.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '74972220909787af5a3ffe66f7fa8041827c2bd2':
rtpproto: Support more than one SSM include address, support excludes
Conflicts:
libavformat/rtpproto.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '7d99c92945e4b2d12ed2126365482e1900340da0':
udp: Keep track of include and exclude sources separately
Conflicts:
libavformat/udp.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3357bccc5cb31795f248cd72dc480025f3075a5b':
udp: Allow specifying multicast include/blocks as host names as well
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This allows the chained demuxer (or more precisely, the lavf
utility code) to better fill in timestamps on packets from
these, especially for cases where one stream is a raw ADTS
stream.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '06205b5efdcf0bc4c5463bfdd02f09b5f79fc4cd':
hls: Free packets when skipping packets when seeking
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'a2b7eeeb06471979ee39fd3075a04633222678a6':
hlsproto: Store all durations in AV_TIME_BASE
Conflicts:
libavformat/hlsproto.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c44191039944526dd7eb6e536990b555837961f5':
hls: Store all durations in AV_TIME_BASE
Conflicts:
libavformat/hls.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e1d5b244761cf69db655ad7ece1dbf2c13dd4fce':
hls: Store first_timestamp in units of AV_TIME_BASE
Conflicts:
libavformat/hls.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This ensures that we dont write into one struct and read the other without
realizing that they arent identical.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Add support for domain names, for multiple source addresses,
for exclusions, and for session level specification of addresses.
Signed-off-by: Martin Storsjö <martin@martin.st>
This allows us to explicitly fail if the caller tried to set
both inclusions and exclusions at the same time.
Signed-off-by: Martin Storsjö <martin@martin.st>
Previously this only allowed literal IP addresses. When these
are conveyed in a SDP file as in RFC4570, host names are allowed
as well.
Signed-off-by: Martin Storsjö <martin@martin.st>
Also parse segment durations as floating point, which is allowed
since HLS version 3.
This is based on a patch by Zhang Rui.
Signed-off-by: Martin Storsjö <martin@martin.st>
When first_timestamp was stored as-is, its actual time base
wasn't known later in the seek function.
Additionally, the logic (from 795d9594cf) for scaling it
based on stream_index is flawed - stream_index in the seek
function only specifies which stream the seek timestamp refers
to, but obviously doesn't say anything about which stream
first_timestamp belongs to.
In the cases where stream_index was >= 0 and all streams had the
same time base, this didn't matter in practice.
Seeking taking first_timestamp into account is problematic
when one variant is mpegts (with real timestamps) and one variant
is raw ADTS (with timestamps only being accumulated packet
duration), where the variants start at totally different timestamps.
Signed-off-by: Martin Storsjö <martin@martin.st>
* qatar/master:
hls: Create an AVProgram for each variant
Conflicts:
libavformat/hls.c
See: 23db5418ed
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '9d64f236292ba28018dd9afd2d57f8f944b33f81':
hls: Respect the different stream time bases when comparing dts
Conflicts:
libavformat/hls.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c11e33a3d9665dd1fc5dbdecdd03a4860ac6a622':
hls: Set stream offset before opening a chained demuxer
Conflicts:
libavformat/hls.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'cdd2d73d315ecaf19ff49e64c91923275f1bda68':
hls: Don't check discard flags until the parent demuxer's streams actually exist
hls: Copy the time base from the chained demuxer
Conflicts:
libavformat/hls.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'eb33ba04e03d9f36e23fffd442510c824be709c3':
hls: Return all packets from a previous variant before moving on to the next one
Conflicts:
libavformat/hls.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Without the information, an application may choose audio from one
variant and video from another variant, which leads to fetching two
variants from the network. This enables av_find_best_stream() to find
matching audio and video streams, so that only one variant is fetched.
Signed-off-by: Martin Storsjö <martin@martin.st>
Also adjust the streams timestamps according to their start
timestamp when comparing. This helps getting correctly interleaved
packets if one stream lacks timestamps (such as a plain ADTS
stream when the other variants are full mpegts) when the others
have timestamps that don't start from zero.
This probably doesn't work properly if such a stream is
temporarily disabled (via the discard flags) and then reenabled,
and such streams are hard to correctly sync against the other
streams as well - but this works better than before at least.
The segment number restriction makes sure all variants advance
roughly at the same pace as well.
Signed-off-by: Martin Storsjö <martin@martin.st>
If passing the end of one segment while initializing the
chained demuxer, the parent demuxer's streams aren't set up
yet, so we can't recheck the discard flags.
Signed-off-by: Martin Storsjö <martin@martin.st>
This serves as a safeguard; normally we want to use the dts
comparison to interleave packets from all active variants. If that
dts comparison for some reason doesn't work as intended, make sure
that all packets in all variants for a certain sequence number have
been returned before moving on to the next one.
Signed-off-by: Martin Storsjö <martin@martin.st>
Incomplete crypted files would lead to a read after buffer boundary
otherwise.
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
Derived from VLC's http module.
Original authors:
Antoine Cellerier <dionoea@videolan.org>
Sébastien Escudier <sebastien-devel@celeos.eu>
Rémi Duraffort <ivoire@videolan.org>
Rémi Denis-Courmont <remi@remlab.net>
Francois Cartegnie <fcvlcdev@free.fr>
Normally, http servers shouldn't send this to us since we
don't advertise it with an Accept-Encoding header, but some
servers still do it anyway.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'c8f0b20b4a6bb6691928789d83e4b02896969848':
avidec: Let the inner dv demuxer take care of discarding
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '86f042dcabde2a5386dbd95ab0451b274987d253':
wtv: Make WTV_SECTOR_BITS a 64 bit constant
Conflicts:
libavformat/wtv.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This makes sure that values that are left-shifted by this constant
end up casted to 64 bit before shifting, avoiding overflow if the
value ends up larger than 2 GB.
Signed-off-by: Martin Storsjö <martin@martin.st>
This is a minimal change to matroskaenc that implements CueRelativePosition in the output.
Most players will probably ignore this additional information, but it is in the
matroska spec, and it'd be nice to be able to make use of it.
Signed-off-by: Bernt Habermeier <bernt@wulfram.com>
Tested-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This causes a race condition with VLC. Its plausible that other
applications also would have races with it and its just fixing a memleak when
the user application forgets to free the codec. It causes more
problems than it solves in its current form, thus the revert.
Better solutions are welcome
This reverts commit 0f229f9b91.
* commit '36fb0d02a1faa11eaee51de01fb4061ad6092af9':
rtsp: Support multicast source filters (RFC 4570)
rtpproto: Check the source IP if one single source has been specified
rtpproto: Support IGMPv3 source specific multicast inclusion
Conflicts:
libavformat/rtpproto.c
libavformat/rtsp.c
libavformat/rtsp.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This also fixes the case where negative chapter ids where input
And fixes the case where remuxing from mkv changed chapter ids
Found-by: Luca Barbato
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This supports inclusion of one single IP address for now,
at the media level. Specifying the filter at the session level
(instead of at the media level), multiple source addresses,
exclusion, or using FQDNs instead of plain IP addresses is not
supported (yet at least).
Signed-off-by: Martin Storsjö <martin@martin.st>
If another peer is sending unicast packets to the same port that
we are listening on, those packets can end up being received despite
using source specific multicast. For those cases, manually check the
source address of received packets against the intended source address.
This only handles the case when the source list is one single IP
address for now, which probably is the most common case.
Based on a patch by Ed Torbett.
Signed-off-by: Martin Storsjö <martin@martin.st>
Blocking/exclusion is not supported yet.
The rtp protocol parameter takes the same form as the existing
sources parameter for the udp protocol.
Signed-off-by: Martin Storsjö <martin@martin.st>
Passes Source-Specific Multicast parameters read from an sdp file through to the UDP socket code,
allowing source-specific multicast streams to be correctly received. As an integral part of this
change, additional checking (currently only enabled in the case of SSM streams, but probably
useful in similar scenarios) has been added to the RTP protocol handler to distinguish UDP packets
arriving from multiple sources to the same port and process only the expected packets
(those transmitted from the expected UDP source address). This resolves an issue identified
when multiple instances of FFmpeg subscribe to different Source-Specific Multicast streams
but with each sharing the same destination port.
Signed-off-by: Edward Torbett <ed.torbett@simulation-systems.co.uk>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
It's the official (or recommended) name for comment/description entries.
See https://www.xiph.org/vorbis/doc/v-comment.html
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Some players, like foobar2000 or modern versions of WMP, create WAV
files using the ITRK tag for track instead of IPRT
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* https://github.com/lukaszmluki/ffmpeg:
ftp: warning about pure-ftp server used as and output
ftp: comments
ftp: remove unused headers
ftp: fix interrupt callback misuse
Merged-by: Michael Niedermayer <michaelni@gmx.at>
FTP protocol used interrupt callback to simulate nonblock
operation which is a misuse of this callback.
This commit make FTP protocol fully blocking and removes
invalid usage of interrutp callback
Also adds support for multiline responses delimited with dashes
Tags must have at least one SimpleTag element to be spec conformant.
Updated lavf-mkv and seek-lavf-mkv FATE references as the tests were affected by
this.
Fixes ticket #2785
Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '31931520df35a6f9606fe8293c8a39e2d1fabedf':
mov: Do not allow updating the time scale after it has been set
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '5b4eb243bce10a3e8345401a353749e0414c54ca':
mov: Seek back if overreading an individual atom
Conflicts:
libavformat/mov.c
See: 6093960ae3
Merged-by: Michael Niedermayer <michaelni@gmx.at>
If either of the deltas is too large for the multiplications to
succeed, don't use this for setting the avg frame rate.
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Cc: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
The time scale is set in mdhd, and later validated in the
enclosing trak atom once all of its children have been parsed.
A loose mdhd atom outside of a trak atom could update the time
scale of the last stream without any validation.
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Cc: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '1dd1b2332ebbac710d8e0214cec7595e118f2105':
rtsp: Include an User-Agent header field in all requests
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* cehoyos/master:
Suggest recompilation with openssl or gnutls if the https protocol is not found.
lavf/utils.c: Avoid a null pointer dereference on oom after duration_error allocation.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
avconv uses private and internal fields from libavformat, we thus must
match the layout even of the fields marked non public.
Otherwise ffmpegs libavformat could not be used as a dropin replacement
on debian/ubuntu
The current soname of libavformat was not part of any release nor are any
fields marked public moved thus in theory
no installed shared lib ABI breakage should occur. Still the need for this
change is unfortunate and chilling.
If you installed shared libs from a recent development version of libavformat
that is more recent than the last release. You probably want to check or rebuild
applications that linked to it.
minor versions of avformat & avdevice are bumped to allow detecting this
as both use the updated struct
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'a87a0acf9b5d27aad032e61eef4973e62a4a6830':
movenc: Make sure the RTP hint tracks have nondecreasing DTS
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The Matroska muxer now allows WebVTT subtitle tracks to be written
while in WebM muxing mode.
WebVTT subtitle tracks have four kinds: "subtitles", "captions",
"descriptions", and "metadata". Each text track kind has a distinct
Mastroska CodecID and track type, as described in the temporal
metadata guidelines here:
http://wiki.webmproject.org/webm-metadata/temporal-metadata/webvtt-in-webm
When the stream has codec id AV_CODEC_ID_WEBVTT, the stream packet is
serialized per the temporal metadata guidelines cited above. The
WebVTT cue is written as a Matroska block group. The block frame
comprises the WebVTT cue id, followed by the cue settings, followed by
the cue text. (The block timestamp is synthesized from the cue
timestamp.)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This allows to read a live isml movie and segment it using the
smoothstreaming muxer, which requires the bitrates to be known for each stream.
Signed-off-by: Alexandre Sicard <alexandre.sicard@smartjog.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The RTP timestamps can be decreasing for codecs with B-frames. For
these cases, make sure the timestamps in the MP4 file track itself
are nondecreasing, and add an offset to the RTP packet hint instead
to produce the intended RTP timestamp.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'f054e309c58894450a5d18cce9799ef58aab9f14':
qdm2: use init_static_data
westwood_vqa: do not free extradata on error in read_header
Conflicts:
libavformat/westwood_vqa.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This fixes speex in rtmp
Fixes Ticket2409
the nellymoser in flv case actually needs larger analyzeduration. The code
previously just failed to calculate the duration
If this causes any problems, like premature analyze/probe end, please report!
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This fixes crashes when playing back certain RealRTSP streams.
When invoked from the RTP depacketizer, the full realmedia
demuxer isn't invoked, but only certain functions from it, where
a separate AVIOContext is passed in as parameter (for the buffer
containing the data to parse). The functions called from within
those entry points should only be using that parameter, not
s->pb. In the depacketizer case, s is the RTSP context, where ->pb
is null.
Cc: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
This makes sure the ffurl_read_complete function actually
returns the number of bytes read, as the documentation of the
function says, even if the underlying protocol uses AVERROR_EOF
instead of 0.
Signed-off-by: Martin Storsjö <martin@martin.st>
A sid 0 would be mismatched to the attachment.
Prevent NULL pointer dereference.
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
* commit '6516632967da5e6bd7d6136e8678f826669ed26e':
tests: Only run noproxy test if networking is enabled
fifo: K&R formatting cosmetics
Conflicts:
libavformat/Makefile
libavutil/fifo.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
start_granule should be applied to the stream referenced in the fisbone packet, not to the
Skeleton stream.
This was broken in d1f05dd183 and produced bogus warnings about
multiple fisbone in the same stream on files with more than one stream.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The toc is inexact and not using it can thus make sense.
Using it is faster though, thus the opposite can similarly makes sense
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This should be closer to how tcp behaved longer ago and should
fix the issue with idle connections timing out.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The method guess_ni_flag needs to divide timestamps in the index
by sample_size if it is set in order to compare different streams correctly.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Data is appended in fill_buffer() when there is sufficient space left
and the data pointer only reset when needed.
Previously the data pointer was more often reset, loosing more seekback
space than otherwise needed.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The sample from ticket #2691 currently does not trigger "Consider increasing
the value for analzeduration and probesize" because the audio streams are
only added after calling estimate_timings(). Attached patch moves the message
below this function call.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* qatar/master:
oggdec: do not fall back on binary search in the generic code.
Conflicts:
libavformat/oggdec.c
tests/ref/seek/lavf-ogg
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Allow applications to request reading streamcast metadata. This uses
AVOptions as API, and requires the application to explicitly request
and read metadata. Metadata can be updated mid-stream; if an
application is interested in that, it has to poll for the data by
reading the "icy_metadata_packet" option in regular intervals.
There doesn't seem to be a nice way to transfer the metadata in a nicer
way. Converting the metadata to ID3v2 tags might be a nice idea, but
the libavformat mp3 demuxer doesn't seem to read these tags mid-stream,
and even then we couldn't guarantee that tags are not inserted in the
middle of mp3 packet data.
This commit provides the minimum to enable applications to retrieve
this information at all.
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>