* 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>