Commit Graph

9024 Commits

Author SHA1 Message Date
Xi Wang
3b81bba3bc mxfdec: fix NULL checking in mxf_get_sorted_table_segments()
The following out-of-memory check is broken.

    *sorted_segments  = av_mallocz(...);
    if (!sorted_segments) { ... }

The correct NULL check should use *sorted_segments.

Signed-off-by: Xi Wang <xi.wang@gmail.com>
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2013-01-04 20:43:42 -05:00
Martin Storsjö
53c25ee073 aviobuf: Discard old buffered, previously read data in ffio_read_partial
This makes RTP custom IO work properly with pure read-only
AVIOContexts as well.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-01-03 15:17:10 +02:00
Martin Storsjö
e96406eda4 rtsp: Add support for depacketizing RTP data via custom IO
To use this, set sdpflags=custom_io to the sdp demuxer. During
the avformat_open_input call, the SDP is read from the AVFormatContext
AVIOContext (ctx->pb) - after the avformat_open_input call,
during the av_read_frame() calls, the same ctx->pb is used for reading
packets (and sending back RTCP RR packets).

Normally, one would use this with a read-only AVIOContext for the
SDP during the avformat_open_input call, then close that one and
replace it with a read-write one for the packets after the
avformat_open_input call has returned.

This allows using the RTP depacketizers as "pure" demuxers, without
having them tied to the libavformat network IO.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-01-03 15:15:27 +02:00
Martin Storsjö
3f95f0dda5 rtpdec: Move the URLContext used for RTCP RR out from the context, to a parameter
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-01-03 15:14:34 +02:00
Martin Storsjö
a0b7e28907 aviobuf: Partial support for reading in read/write contexts
So far, aviocontexts are used either in pure-read or pure-write
mode - full read/write mode doesn't work well (and implementing it
is a much larger, not totally trivial change).

This patch allows using avio_read and ffio_read_partial on
read/write aviocontexts, where the read operations are passed
through directly unbuffered, while writes are buffered as usual.

This is enough to support the operations needed by packet based
data transfer like in udp/rtp, where aviocontext is the only
public API for hooking up custom IO.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-01-03 15:14:09 +02:00
Clément Bœsch
3048fae63c build: Avoid detecting bogus components named 'x'
The function find_things() in configure is confused by component
registration calls as part of multiline macros defining combined
component registration.  Coalesce those macros into one line to
work around the issue.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-01-03 15:11:25 +02:00
Martin Storsjö
c1ea44c54d rtmp: Add support for limelight authentication
Limelight is a not too uncommon CDN. The authentication scheme is
pretty similar to the adobe authentication, but is even closer to
normal http digest authentication (but not close enough to warrant
sharing code) than the adobe version.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-31 13:39:09 +02:00
Martin Storsjö
08225d0126 rtmp: Add support for adobe authentication
This is mostly used to authenticate the client when publishing.
Tested with wowza and akamai.

Some but not all servers support resending a new connect invoke
within the same connection, so always reconnect for sending a new
connection attempt. This matches what other applications do as well.

The authentication scheme is structurally pretty similar to http
digest authentication, but uses base64 instead of hex strings.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-31 13:39:08 +02:00
Martin Storsjö
33f28a3be3 rtmp: Add a function for writing AMF strings based on two substrings
This avoids having to concatenate them into one buffer before writing
them as AMF.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-31 13:39:07 +02:00
Martin Storsjö
c76daa89ab rtmp: Return a proper error code in handle_invoke_error
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-31 13:39:06 +02:00
Luca Barbato
30a7648730 hlsenc: make segment number unsigned
It will overflow if somebody keeps streaming for a time long enough.
2012-12-29 17:26:30 +01:00
Kanglin
27a15e0af6 hlsenc: make EXT-X-MEDIA-SEQUENCE always increase 2012-12-29 17:26:30 +01:00
Luca Barbato
9b1370aced hlsenc: do not add timestamps in different timebases
start_time is in stream timebase units while end_time is
in AV_TIME_BASE ones.
2012-12-29 17:26:30 +01:00
Kanglin
0d8cc7a3b2 hlsenc: use the correct AV_TIME_BASE macro
recording_time is in AV_TIME_BASE units.
2012-12-29 17:26:30 +01:00
Luca Barbato
0448f26c97 hlsenc: keep the playlist to the correct number of items
Consider the corner case with a list size larger than the wrap
number.
2012-12-29 17:26:30 +01:00
Luca Barbato
ae85d6c9c0 hlsenc: use the segment filename in the playlist entry
Avoid calling av_get_frame_filename twice, once to generate the
segment filename and once to generate the playlist.
2012-12-29 17:26:29 +01:00
Luca Barbato
6dd93ee6f1 hlsenc: check append_entry return value 2012-12-29 17:26:29 +01:00
Luca Barbato
66f7b4862f hlsenc: use the basename to generate the list entries
The segment path is desumed from the playlist path, recording a
relative path in the playlist while serving the file could lead
to misleading results.
2012-12-29 17:26:29 +01:00
Diego Biurrun
c73c87b412 cosmetics: Prettyprint codec/format/filter registration files 2012-12-28 19:18:13 +01:00
Diego Biurrun
5ad2f0bfb2 build: Add rtpenc_chain extra config option
Also fixes linking in various configs with only individual parts enabled
because the RTP muxer chaining code depends on the general RTP code,
which is now accounted for.
2012-12-28 19:18:13 +01:00
Martin Storsjö
4a9f7d2bf9 hlsenc: Don't duplicate a string constant
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-24 00:02:48 +02:00
Stefano Sabatini
3193b13aa1 hlsenc: Allocate enough space for the pattern string
If s->filename doesn't contain any period/filename extension to strip
away, the buffer will be too small to fit both strings. This isn't
any buffer overflow since the concatenation uses av_strlcat with
the right buffer size.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-24 00:02:45 +02:00
Diego Biurrun
f3298f1299 Return proper error code after av_log_ask_for_sample() 2012-12-23 18:56:56 +01:00
Luca Barbato
ba064ebe48 oggdec: check memory allocation 2012-12-23 12:19:15 +01:00
Luca Barbato
f5f1cf5224 oggdec: K&R cosmetic formatting 2012-12-23 12:19:08 +01:00
Luca Barbato
7e98956e72 hlsenc: correctly report target duration 2012-12-23 12:13:41 +01:00
Martin Storsjö
c7d4de3d73 rtpdec_vp8: Don't return known-broken packets
This is built on the assumption that the first partition of each
VP8 packet is essential for decoding any later packet - if this
partition is broken/missed, the arithmetic coder gets out of sync
and decoding the bitstream in further packet ends up with total
garbage. If packets of a frame are lost, make sure the first
partition is intact (return only this part of the packet, nothing
else), otherwise stop returning data until the next keyframe is
received.

Alternatively, one would simply not return any packets at all
until the next keyframe, if packet loss is detected.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-21 14:14:47 +02:00
Martin Storsjö
90c784cc13 rtpdec: Pass the sequence number to depacketizers
This allows depacketizers to figure out if packets have been lost.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-21 14:14:40 +02:00
Diego Biurrun
511cf612ac miscellaneous typo fixes 2012-12-21 00:18:34 +01:00
Martin Storsjö
a925f723a9 rtp: Don't read priv_data unless it is allocated
This makes all users of rtpenc_chain (rtsp muxer, sapenc, mov
rtp hinting) work again, broken since 8034130e0.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-20 14:25:49 +02:00
Björn Axelsson
1eaff98c83 flvenc: Check whether seeking back to the header succeeded
The FLV muxer tries to update the header in write_trailer, which is
impossible if writing to a pipe or network stream. Don't write header
data if seeking to the header fails.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-20 12:37:42 +02:00
Jernej Virag
e30e8e311e sapenc: Pass the title on to the chained muxers
This makes sure it ends up in the SDP, providing a proper session name
in the SAP announcements.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-20 12:37:34 +02:00
Janne Grunau
bb2bab92e7 mov: handle h263 and flv1 for codec_tag 'H','2','6','3'
The sample in https://bugzilla.libav.org/show_bug.cgi?id=393 and
samples/F4V/H263_NM_f.mp4 both have codec_tag H263 for different
codecs. H263 is apparently used by Flash Media Server for Sorensen
Spark videos.

Patch based on commit 5442083b1c by
Carl Eugen Hoyos. Fixes bug 393.
2012-12-19 14:50:14 +01:00
Diego Biurrun
523c7bd23c misc typo, style and wording fixes 2012-12-18 13:36:51 +01:00
Derek Buitenhuis
26e4f0c70f doxy: Clarify what avpriv_set_pts_info does
The "pts for a given stream" was nonsensical.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2012-12-17 11:20:00 -05:00
Diego Biurrun
c35f0e8495 au: Reorder code so that both muxer and demuxer are under #ifdefs
This reduces code size when either piece has been disabled.
2012-12-17 17:02:22 +01:00
Diego Biurrun
81c7c817a4 cosmetics: Use consistent names for multiple inclusion guards. 2012-12-17 17:02:22 +01:00
Martin Storsjö
e798085f96 rtpdec_vp8: Cosmetics: Fix bad alignment/indentation
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-16 21:33:20 +02:00
Martin Storsjö
3b2e8d1d21 rtpenc: Allow including a SDES/CNAME block in RTCP SR packets
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-16 21:32:58 +02:00
Martin Storsjö
65e053271a rtpenc_vp8: Include the picture number in VP8 packets
This makes it easier for receivers to decide what to do if data
is lost.

Refactor calculating the max payload size, to avoid hardcoding the
header size in too many places, reducing the number of lines that
have to be touched if the header is adjusted further.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-16 21:32:13 +02:00
Martin Storsjö
29d2595ad7 rtpproto: Remove unused defines
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-12 16:01:24 +02:00
Martin Storsjö
f3f60dcbdd rtpdec_mpeg4: Cosmetic cleanup
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-12 12:18:50 +02:00
Martin Storsjö
584a017925 rtpdec: Cosmetic cleanup of the header
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-12 12:18:44 +02:00
Martin Storsjö
abf74a1169 rtpdec: Get rid of a useless _s suffix on a struct name
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-12 12:18:38 +02:00
Martin Storsjö
7941159df6 rtpdec/enc: Remove outdated/useless/misleading comments
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-12 12:18:33 +02:00
Martin Storsjö
d6ec745246 rtpdec: Improve some comments
The previous comment about the buffer was wildly inaccurate and
misleading.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-12 12:18:28 +02:00
Martin Storsjö
e66d448c75 rtpdec: Remove unused context variables
These stem from back when both the rtp muxer and rtp depacketizing
shared the same struct.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-12 12:18:22 +02:00
Martin Storsjö
81ef519252 rtpdec: Limit writing to the buffer size
This fixes potential buffer overwrites.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-12-12 12:18:16 +02:00
Justin Ruggles
d04c17c913 swfdec: cosmetics: fix indentation 2012-12-11 09:37:17 -05:00
Justin Ruggles
e70c5b034c swfdec: do better validation of tag length
Avoids trying to read a packet with 0 or negative size.
Avoids a potential infinite loop due to seeking backwards.

Partially based on a patch by Michael Niedermayer.
2012-12-11 09:36:26 -05:00