Commit Graph
100 Commits
Author SHA1 Message Date
Ronald S. Bultje 6e5f27ca80 Fix typo ("Standard-compliant" -> "Standards-compliant"), as noticed by
Diego.

Originally committed as revision 16475 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 16:01:15 +00:00
Ronald S. Bultje 70d4b8ce50 Fix doxy comments missing one '*'.
Originally committed as revision 16473 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 15:13:27 +00:00
Ronald S. Bultje 7a86bafa20 Use the "server" RTSP field to detect whether the server that we're talking
to is a Microsoft Windows Media Server (the field will be "WMServer/version").
See "[PATCH] RTSP-MS 3/15: Add Windows Media Server type" thread on
mailinglist.

Originally committed as revision 16472 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 14:55:47 +00:00
Ronald S. Bultje 74272b1c0c Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
access to these structures in functions that will be located in rtp_asf.c.
See "[PATCH] RTSP-MS 2/15: export RTSPState and RTSPStream" mailinglist
thread.

Originally committed as revision 16471 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 14:53:04 +00:00
Ronald S. Bultje b0d75d6036 Don't use s->pb if a local ByteIOContext was already provided by the calling
function. See mailinglist thread "[PATCH] RTSP-MS 1/15: don't use s->pb in
asf.c".

Originally committed as revision 16470 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 14:50:19 +00:00
Ronald S. Bultje 572c6a3814 Allow subscription to any of the streams, not just the first, available in
this RTSP/RDT session. This basically implies full RDT support, including
stream selection in ffmpeg and multi-stream backupping in ffmpeg (by mapping
each stream to an output). See "[PATCH] RTSP/RDT: subscriptions" thread on
mailinglist.

Originally committed as revision 16469 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 14:48:17 +00:00
Ronald S. Bultje 7c68a17754 Parse the OpaqueData field for every AVStream represented by this "set of
streams" (a single RTSPStream / RDTDemuxContext can represent several
AVStreams, that's just how Real/RDT was designed...). This will fill in
most of the AVStream/AVCodecContext header fields, similar to reading a
RM file header would. See "[PATCH] multi-stream MDPR parsing" thread on
mailinglist.

Originally committed as revision 16468 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 14:45:13 +00:00
Ronald S. Bultje 530bca9439 Parse the bitrate field in the ASMRuleBook ("AverageBandwidth") to fill in
the AVStream->AVCodecContext->bit_rate field, which is not in the MDPR block
(the "OpaqueData" SDP field). This allows clients to choose streams based
on their bitrate, which is what most network-players base stream selection
on. (Of course, it is also possible to select based on anything else, that
is entirely up to the client.) See "[PATCH] rdt.c: ASM rulebook bitrate
reading" thread on mailinglist.

Originally committed as revision 16467 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 14:41:40 +00:00
Ronald S. Bultje 3ca45429fe Parse the ASMRuleBook SDP line to dynamically create one new AVStream for
each "rule" described in the ASMRuleBook. Each rule represents a stream
of identical content compared to other streams in the same rulebook, but
with a possibly different codec/bitrate/etc. See "[PATCH] rdt.c: ASM
rulebook parsing and AVStream creation" thread on mailinglist.

Originally committed as revision 16466 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 14:38:44 +00:00
Ronald S. Bultje c49a3ec30a Fix double free which happens for playback of .rm files after r16365. See
"rmdec.c: double free" discussion on mailinglist, patch with suggestions
from Reimar Doffinger.

Originally committed as revision 16378 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-28 23:23:59 +00:00
Ronald S. Bultje ade8fb4d75 Reindent after r16368.
Originally committed as revision 16369 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-28 05:59:11 +00:00
Ronald S. Bultje a9f84821c5 Add audio_pkt_cnt return value to ff_rm_retrieve_cache(). See discussion in
"[PATCH] oops I broke rdt.c" mailinglist thread.

Originally committed as revision 16368 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-28 05:58:23 +00:00
Ronald S. Bultje 5d88c2647d Change audio_pkt_cnt from an array into a single field, since only a single
member of the array is ever used (compare to RMDemuxContext->audio_pkt_cnt).
See "[PATCH] oops I broke rdt.c" mailinglist thread.

Originally committed as revision 16367 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-28 05:55:09 +00:00
Ronald S. Bultje 886e89d0d0 Add RMStream object as function argument to public functions so that non-.rm
AVStreams can be used to call these public rmdec.c functions as well, as is
the case for RDT/RTSP streams. See mailinglist discussion in "[PATCH] rdt.c:
don't reuse the same AVStream in both RTSP and RM demuxer" thread.

Originally committed as revision 16366 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-28 00:21:11 +00:00
Ronald S. Bultje ba61472911 Implement RMStream stream-specific private data object in the RM demuxer.
This allows multiple video or audio streams per .rm file. See mailinglist
thread "[PATCH] rmdec.c: implement RMVideo/AudioStream".

Originally committed as revision 16365 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-28 00:18:38 +00:00
Ronald S. Bultje 1d217cdb3f Make asf_get_packet() and asf_parse_packet() public for use in RTSP-MS and
give them a ff_ prefix. See "[PATCH] asf.c: make functions of interest for
MS-RTSP public" thread on ML.

Originally committed as revision 16205 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-18 01:28:29 +00:00
Ronald S. Bultje d7fb5a18fc Add a ByteIOContext argument to ASF functions that will be shared with the
RTSP stack for RTSP-MS support. This way, they can read input from any given
input source. See discussion in "[PATCH] add gb argument to ASF functions of
interest to MS-RTSP" ML thread.

Originally committed as revision 16204 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-18 01:25:43 +00:00
Ronald S. Bultje b9b2b8c93b Use get_buffer() and url_fskip() for some loops of get_byte()s. See discussion in ML thread
"[PATCH] rmdec.c: use get_buffer and skip_bytes instead of loops of get_byte".

Originally committed as revision 16139 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-14 22:26:28 +00:00
Ronald S. Bultje 127ed7b07b Reindent something that looks weird.
Originally committed as revision 16138 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-14 22:24:58 +00:00
Ronald S. Bultje b965ff352f Add comment to indicate why the SDP line buffer is as big as it is.
Originally committed as revision 16137 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-14 22:23:59 +00:00
Ronald S. Bultje e322d3f5be Increase SDP line buffer size because ASF headers in RTSP-MS are very big. See ML discussion
in "rtsp.c: increase SDP line buffer size" thread.

Originally committed as revision 16136 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-14 22:23:14 +00:00
Ronald S. Bultje 1edddc99dc Split RMContext into RMDemux/MuxContext and make them private in rmdec/enc.c.
Reason for this is that there are no shared entries in the demuxer/muxer
context, making it a mystery as to why it was shared between the two. See
"[PATCH] clean rmdemux/muxcontext" patch on mailinglist.

Originally committed as revision 16111 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-13 21:40:20 +00:00
Ronald S. Bultje a15ebf34c7 Don't access RMContext directly in rdt.c. Rather, use the return value of
ff_rm_parse_packet() to indicate whether more audio packets are available
in the demuxer from the last RM frame, and save that in the RDT parsing
context. See patch/discussion in "[PATCH] rdt.c: don't access RMContext"
on ML.

Originally committed as revision 16110 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-13 21:37:27 +00:00
Ronald S. Bultje f27544fd5b Separate the packet fetching from the data reading, so that the data reading
function is assured to parse at most one packet. This makes this function
useful for ASF data packet parsing in a "push-mode" in addition to the
current "pull-mode", and therefore allows for use of these functions in,
for example, the RTSP demuxer (for MS-RTSP support). Tested to give identical
output before and after for regular ASF playback, also see discussion in the
ML thread "[PATCH] asf.c: move packet_time_start=0 statement". Testsuite also
works after the patch, tested by Benoit Fouet.

Originally committed as revision 16108 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-13 17:18:11 +00:00
Ronald S. Bultje 76f940b21e Fix indenting.
Originally committed as revision 16056 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-11 18:48:08 +00:00
Ronald S. Bultje dc50773dc5 Remove static variable and a printf using it. See "[PATCH] asf.c: move
packet_time_start=0 statement" thread on ML.

Originally committed as revision 16025 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-06 20:28:38 +00:00
Ronald S. Bultje 7b2a070800 Change function prototype of the sdp_parse_a_line in DynamicProtocolHandler.
This function is called in rtsp.c for each a= line in the SDP of the Describe
response after m= RTSP stream descriptors. The function prototype used to
take an AVStream argument. For RDT, however, every RTSPStream represents
a set of streams of identical content, and can thus represent multiple
AVStreams. Therefore, it should not take an AVStream as argument. This
patch modifies it to accept a AVFormatContext (of the RTSP/SDP demuxer)
instead. See discussion in "[PATCH/RFC] change function prototype of
parse_sdp_a_line" thread on ML.

Originally committed as revision 16024 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-06 18:41:17 +00:00
Ronald S. Bultje 022f0b7c01 Do not access s->gb directly in functions that have a local copy of that
variable. See "[PATCH] asf.c: don't access AVFormatContext->pb" thread on
ML.

Originally committed as revision 16023 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-06 18:35:52 +00:00
Ronald S. Bultje 7960e18fdf Implement rule-number parsing, the initial step in stream (and bitrate)
selection. See discussion in ML thread "[PATCH] RDT/Realmedia patches #2".

Originally committed as revision 15966 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-01 00:08:42 +00:00
Ronald S. Bultje 4f60285658 Change RDTDemuxContext->st into an array of streams, which will make future
patches adding stream-selection easier in code. See discussion in ML thread
"[PATCH] RDT/Realmedia patches #2".

Originally committed as revision 15964 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-30 22:24:35 +00:00
Ronald S. Bultje 79a1f3c023 document ff_rdt_parse_open(). See ML discussion in "[PATCH] RDT/Realmedia
patches #2" thread.

Originally committed as revision 15963 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-30 20:40:04 +00:00
Ronald S. Bultje e0d1eabf14 Change function prototype from taking an AVStream to taking an index to the
stream itself, plus a name change to signify that there may be multiple
AVStreams per RDT set. See discussion in "[PATCH] RDT/Realmedia patches #2"
thread on ML.

Originally committed as revision 15962 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-30 20:39:16 +00:00
Ronald S. Bultje 63f412f902 Document 'ic' variable. See "[PATCH] RDT/Realmedia patches #2" thread in ML.
Originally committed as revision 15916 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-23 16:54:31 +00:00
Ronald S. Bultje 9168f7e671 Change type of prev_stream_id from uint32_t to int, since it has a max size
of 16bits. See discussion in "[PATCH] RDT/Realmedia patches #2" thread on ML.

Originally committed as revision 15864 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-17 18:10:02 +00:00
Ronald S. Bultje 90e0450fa8 Reindent after r15853.
Originally committed as revision 15854 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-17 14:32:56 +00:00
Ronald S. Bultje 43af8b2b42 Read optional components of the RDT packet header, such as extended setID
and streamID and the length. of the packet in case of packet concatenation.
Discussed in ML thread "[PATCH] RDT/Realmedia patches #2".

Originally committed as revision 15853 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-17 14:32:01 +00:00
Ronald S. Bultje 6bafd6f53e Change header reading implementation to using get_bits() instead of directly
accessing the data array. This allows to easily read optionally available
header bits without causing pains. See discussion in "[PATCH] RDT/Realmedia
patches #2" thread on ML.

Originally committed as revision 15852 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-17 14:30:31 +00:00
Ronald S. Bultje e269ab791d Prefix all ff_rdt_parse_header() arguments with a p, preparing for local
variables to temporary hold the values. Discussed in ML thread "[PATCH]
RDT/Realmedia patches #2".

Originally committed as revision 15851 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-17 14:28:12 +00:00
Ronald S. Bultje a4b8cb3c55 Fix memleak caused by the fact that url_open_buf() allocates a context
when calling, but url_close_buf() doesn't free it. The better solution
is to not allocate it at all, init it with init_put_byte() and then
not have to close it at all. In the case where we do need to hold it
around for longer than within the function context, we allocate it with
av_alloc_put_byte() and free it with av_free() instead. Discussed in ML
thread "[PATCH] fix small memleak in rdt.c".

Originally committed as revision 15850 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-17 14:23:20 +00:00
Ronald S. Bultje fcc995a533 Add ByteIOContext argument to public ff_rm_* functions so that we can
specify the data source as function argument instead of in s->pb before
calling the function. Discussed in ML thread "[PATCH] fix small memleak
in rdt.c".

Originally committed as revision 15849 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-17 14:20:00 +00:00
Ronald S. Bultje e3b7216b9b Change status packet skipping to be more spec-compliant. See discussion in
"[PATCH] RDT/Realmedia patches #2" thread on ML.

Originally committed as revision 15836 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-15 20:45:26 +00:00
Ronald S. Bultje 108cd24793 Make function comment a bit more linguistically correct.
Originally committed as revision 15835 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-15 20:43:57 +00:00
Ronald S. Bultje 3d883ad5f3 Reindent after r15833.
Originally committed as revision 15834 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-15 20:42:41 +00:00
Ronald S. Bultje 114732f4c7 Add is_keyframe param to ff_rdt_parse_header(). See ML discussion in
"[PATCH] RDT/Realmedia patches #2" thread.

Originally committed as revision 15833 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-15 20:41:59 +00:00
Ronald S. Bultje 6ff1f61530 Call check_back_and_send_rr() function only in case of RTP as a transport.
Don't call it for RDT, since it is unneeded and it doesn't provide a
RTPDemuxContext, leading to some memory errors. See "[PATCH] fix small
memory error in rtsp.c" thread on ML.

Originally committed as revision 15828 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-15 14:44:48 +00:00
Ronald S. Bultje 239dec21ab Rename variables in ff_rdt_parse_header() and callers to match the
comment documentation in that function. See discussion on ML in the
"[PATCH] RDT/Realmedia patches #2" thread.

Originally committed as revision 15825 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-15 02:22:47 +00:00
Ronald S. Bultje 9e16439287 Add comment describing the RDT packet header. See discussion in "[PATCH]
RDT/Realmedia patches #2" thread on the mailinglist.

Originally committed as revision 15823 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-11-14 18:37:58 +00:00
Ronald S. Bultje 5c918b2775 Reindent after r15544.
Originally committed as revision 15545 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-04 04:19:46 +00:00
Ronald S. Bultje accc248f28 Implement RDTDemuxContext, which contains RDT-specific data (similar to
RTPDemuxContext for RTP) for these streams where the transport protocol
is RDT (as served by Realmedia servers).

Originally committed as revision 15544 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-04 04:19:15 +00:00
Ronald S. Bultje 5465b0d474 Make RTPDemuxContext opaque in rtsp.c, renaming it to tx_ctx (tx=transport)
and making its type a void pointer. See discussion in "RDT/Realmedia patches
#2" thread on ML.

Originally committed as revision 15543 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-04 04:17:59 +00:00
Ronald S. Bultje 99a1d1915e Remove access into RTPDemuxContext in rtsp.c, which allows making it opaque
(and thus preparing for the introduction of RDTDemuxContext) in a next patch.
See discussion in "RDT/Realmedia patches #2" thread on ML.

Originally committed as revision 15542 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-04 04:16:44 +00:00
Ronald S. Bultje 9b932b8ac0 Change function prototype of RTPDynamicPayloadHandler.parse_packet() to
not use RTPDemuxContext, but rather take a pointer to the payload context
directly. This allows using payload handlers regardless over the transport
over which they were sent, and prepares for the introduction of a future
RDTDemuxContext. See discussion in "RDT/Realmedia patches #2" thread on ML.

Originally committed as revision 15541 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-04 04:15:06 +00:00
Ronald S. Bultje ed0aacc76e Rename RTP payload contexts to PayloadContext, suggested by Luca in
"RDT/Realmedia patches #2" thread on ML.

Originally committed as revision 15540 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-04 04:11:12 +00:00
Ronald S. Bultje 3ff2a06228 Use parse_packet vfunc in RTPDynamicProtocolHandler instead of hardcoding
the use of rdt_parse_packet(). See "RDT/Realmedia patches #2" thread on ML.

Originally committed as revision 15497 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 12:38:41 +00:00
Ronald S. Bultje 985b05d3c9 This patch refactors RDT packet header parsing so that it can be used in
rtsp.c to detect the ID of the packet source also in case of TCP streams.
This allows proper playback of RDT streams with multiple stream types, e.g.
audio + video. Accepted by LucaB in "RDT/Realmedia patches #2" thread on ML.

Originally committed as revision 15496 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 12:37:07 +00:00
Ronald S. Bultje f5f1e97f33 Reindent after previous patches.
Originally committed as revision 15485 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 13:27:19 +00:00
Ronald S. Bultje 119b466811 Implement a RTSPTransport field, which allows proper separation of server
types and their non-standard extensions, and the data they serve. Practically,
this patch allows Real servers to serve normal non-RDT (standard RTP) data.
See discussion on ML in "Realmedia patch" thread.

Originally committed as revision 15484 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 13:26:20 +00:00
Ronald S. Bultje ab63fb0360 Remove access to rdt_data struct in functions called outside of the
DynamicProtocol* context. Doing so could lead to problems if we're accessing
Real servers serving non-RDT data (or the other way around). Temporarily,
this patch adds a _subscribe2() function which will soon be removed in one
of the subsequent commits. OK'ed by Luca in "Realmedia patch" thread on ML.

Originally committed as revision 15483 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 13:23:33 +00:00
Ronald S. Bultje eee2cbff77 Send improper UDP SETUP request, which is what Realmedia servers expect.
See discussion on ML in "Realmedia patch" thread.

Originally committed as revision 15482 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 13:20:23 +00:00
Ronald S. Bultje 90abbdba1e Rename RTSPProtocol to RTSPLowerTransport, so that its name properly tells us
that it only describes the lower-level transport (TCP vs. UDP) and not the
actual data layout (e.g. RDT vs. RTP). See discussion in "Realmedia patch"
thread on ML.

Originally committed as revision 15481 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 13:18:41 +00:00
Ronald S. Bultje 2834c365d2 Reindent after r15317.
Originally committed as revision 15318 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-14 13:56:12 +00:00
Ronald S. Bultje 2e889ae4b9 Rename RTSP_SERVER_RDT to RTSP_SERVER_REAL, because RDT (the transport
protocol) is not strictly related to the server type (Real servers can
stream both RDT and RTP).

Originally committed as revision 15317 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-14 13:55:21 +00:00
Ronald S. Bultje a6789dca1b Reindent after r15927, see discussion in "[PATCH] rtsp cleanup part 1:
remove duplicate code" thread on ML.

Originally committed as revision 15298 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-11 17:43:44 +00:00
Ronald S. Bultje ee0cb67fa3 Factorize out common code for opening of the RTP parsing context between
SDP and RTSP into a new function. See discussion on ML in "[PATCH] rtsp
cleanup part 1: remove duplicate code" thread.

Originally committed as revision 15297 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-11 17:43:04 +00:00
Ronald S. Bultje 4fce284c08 Implement RDT-specific data parsing routines. After these changes, simple
playback of RTSP/RDT streams should work. See discussion in "Realmedia patch"
thread on ML.

Originally committed as revision 15237 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-07 01:25:47 +00:00
Ronald S. Bultje 99b2ac0797 Reindent after previous patch.
Originally committed as revision 15236 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-07 01:24:01 +00:00
Ronald S. Bultje 1256d16b6c Implement a RDT-specific SET_PARAMETER command that subscribes to the
first stream in a RTSP/RDT session. See discussion in "Realmedia patch"
thread on ML.

Originally committed as revision 15235 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-07 01:22:18 +00:00
Ronald S. Bultje ff13ba92fd Add dynamic payload handlers to rdt.c. These follow the same API as the ones
in rtpdec.c, so that they can be shared and used in the same way in rtsp.c.
The handlers, since they are specific for RDT, are registered in rdt.c and
a new registration function is thus called from allformats.c.

The dynamic payload handler also implements RDT-specific SDP-line parsing for
OpaqueData and StartTime, which are specific for RDT and needed for proper
playback. OpaqueData contains one or a list ("MLTI") of "MDPR" chunks that
can be parsed by the rmdec.c function ff_rm_read_mdpr_codecdata(). To use
this function, we create a new rdt_demuxer, which has the same private data
as the rm_demuxer. The resulting AVFormatContext created with _open_stream()
can thus be used to call functions in the RM demuxer.

See discussion in "Realmedia patch" thread on ML.

Originally committed as revision 15234 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-07 01:21:24 +00:00
Ronald S. Bultje 0369d2b045 Give register_dynamic_payload_handler() in rtpdec.c a ff_ prefix and export
it so that I can use it in rdt.c as well. See discussion in "Realmedia patch"
thread on ML.

Originally committed as revision 15233 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-07 01:19:26 +00:00
Ronald S. Bultje 0ad306bc81 Remove unused code that used to handle protocol concatenation, i.e. trying
multiple protocols at the same time. We now cycle protocols individually
to autodetect, making this code no longer needed, and thus the support code
for it in make_setup_request() can be removed. See "[PATCH] remove transport
concatenation dead code" on mailinglist.

Originally committed as revision 15172 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-03 04:47:44 +00:00
Ronald S. Bultje e9dea59f16 Implement Realmedia/RTSP-compatible SETUP command. This includes calculation
of the "RealChallenge2" response, which is some sort of authentication. See
discussion in "Realmedia patch" thread on ffmpeg-devel.

Originally committed as revision 15170 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-03 04:44:58 +00:00
Ronald S. Bultje 1599503043 Move av_set_pts_info() inside the mdpr_read_codecdata() call, so that it is
shared between the RM demuxer and the RTSP/RDT parser; both use the same
timebase. See discussion in "[PATCH] rmdec.c: move av_set_pts_info()" on ML.

Originally committed as revision 15164 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-03 00:07:34 +00:00
Ronald S. Bultje 79d5045d33 Use chunk-size in function calling mdpr_read_codecdata() rather than in the
function itself. This way, old-style (.ra4) RTSP/RDT OpaqueData chunks can
be parsed using this function as well (they don't have the size bits). See
discussion on ML in "[PATCH] rmdec.c - small read_mdpr_codecdata() API
modification".

Originally committed as revision 15163 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-03 00:05:55 +00:00
Ronald S. Bultje 5f86057ffd Remove useless "else" case in if X { A; return }; else { B }. See discussion
in "Realmedia patch" thread on mailinglist.

Originally committed as revision 15142 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-01 13:51:24 +00:00
Ronald S. Bultje d6bb9ebdc6 Some RTSP streams use SDP lines longer than 1024 bytes, so the SDP line
buffer needs to be increased. See discussion in "Realmedia patch" thread
on mailinglist.

Originally committed as revision 15141 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-01 13:47:53 +00:00
Ronald S. Bultje 897ade1ba9 Implement Realmedia-compatible DESCRIBE command.
Originally committed as revision 15140 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-01 13:46:50 +00:00
Ronald S. Bultje 1cf151e9ae Send RTSP OPTIONS command to detect server type.
Originally committed as revision 15125 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-31 17:32:58 +00:00
Ronald S. Bultje 30aa6aed4a Read RealChallenge1 field from the server.
Originally committed as revision 15124 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-31 17:32:02 +00:00
Ronald S. Bultje e077604335 Implement RTSPServerType enum as a way to identify the flavour of RTSP that
the server will send to us (standard-compliant RTP or Realmedia-style RDT).

Originally committed as revision 15123 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-31 17:30:15 +00:00
Ronald S. Bultje 75128a2273 Revert back to old version (r15103).
Originally committed as revision 15122 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-31 17:23:01 +00:00
Ronald S. Bultje 158efd74fe Implement RTSP/Realmedia-compatible OPTIONS command. See "Realmedia patch"
thread on mailinglist for discussion. This patch also implements a
RTSPServerType enum, which allows the RTSP to keep track of what kind of a
stream we're handling: standard-compliant RTP or a proprietary derivative.
This will be used in subsequent patches to implement more Realmedia-specific
extensions required to receive and parse data coming from a Realmedia server.

Originally committed as revision 15104 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-31 03:12:13 +00:00
Ronald S. Bultje 452d3edb37 Change implementation for ff_data_to_hex(), this is faster. See discussion on
mailinglist in "Realmedia patch" thread.

Originally committed as revision 15006 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-28 12:00:58 +00:00
Ronald S. Bultje f1c80e3578 Export data_to_hex() as private API in lavf, rename to ff_data_to_hex() and
move it from sdp.c into utils.c. Also add new header internal.h specifically
for lavf-specific internal API. See discussion in "Realmedia patch" thread
on mailinglist.

Originally committed as revision 15002 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-27 23:43:28 +00:00
Ronald S. Bultje 8646b9070b Use RTPDynamicProtocol parse_sdp_a_line() handlers in case of unknown SDP
lines. This allows "private" SDP tags to be forwarded to the specific handler,
allowing protocol-specific handling of SDP data. See mailinglist discussion
in the "Realmedia patch" thread.

Originally committed as revision 14987 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-27 00:33:22 +00:00
Ronald S. Bultje f23a9759ce Remove check for @ in tcp.c which removes the authorization data from the
actual hostname. This functionality already exists (and always existed) in
url_split() and is therefore useless. See discussion in "[PATCH] tcp.c/udp.c
memleak?" thread on ffmpeg-devel.

Originally committed as revision 14946 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-24 16:22:40 +00:00
Ronald S. Bultje a3303add3c Cosmetics after previous patches.
Originally committed as revision 14926 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-23 18:52:26 +00:00
Ronald S. Bultje 8b9af28da4 On failure, return directly because the fail: case does nothing. This also
allows easier control of the actual return value.

Originally committed as revision 14925 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-23 18:49:16 +00:00
Ronald S. Bultje 47f944a2ef Move malloc() down until after all initializations, so that the resource is
only allocated if initialization worked. This means that on failure, we
don't have to deallocate it.

Originally committed as revision 14924 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-23 18:46:30 +00:00
Ronald S. Bultje e6c1381982 Fix memleak on some OSes in case network initialization fails. See
"[PATCH] tcp.c/udp.c memleak?" for discussion.

Originally committed as revision 14923 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-23 17:39:56 +00:00
Ronald S. Bultje ad33bfefc7 Remove useless comments. See "[PATCH] tcp.c/udp.c memleak?" for discussion.
Originally committed as revision 14922 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-23 17:39:10 +00:00
Ronald S. Bultje ba99cfc213 Implement url_open_protocol(), which is basiclly the former url_open()
but which opens a URLProtocol instead of a filename. url_open() is
reimplemented to call url_open_protocol(). See discussion on
"url_open_protocol" on ffmpeg-devel.

Originally committed as revision 14857 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-19 23:44:23 +00:00
Ronald S. Bultje 3f3fe38d25 Set AVStream.discard, so that demuxers can choose which stream to select if that is a serverside option (as is the case for RTSP). See "Realmedia patch" thread on mailinglist.
Originally committed as revision 14825 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-18 17:09:34 +00:00
Ronald S. Bultje 1e2802c5cf Reindent after r14059, see "[PATCH] allow empty params for
av_open_input_stream()".

Originally committed as revision 14060 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-03 12:12:03 +00:00
Ronald S. Bultje e145ce2027 Allow NULL for read_header in AVInputFormat. See discussion in "[PATCH] allow
empty params for av_open_input_stream()".

Originally committed as revision 14059 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-03 12:10:54 +00:00
Ronald S. Bultje 7e6ca34f27 Reindent after rtsp-alternate-protocol* patches.
Originally committed as revision 12506 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-03-19 14:08:16 +00:00
Ronald S. Bultje 8792f52a9b Change protocol_mask into protocol, since we always just try a single one per
iteration in make_setup_request(), and cycling between the different protocols
is now done in the calling function, therefore the need for a mask goes away.
This also makes the function somewhat simpler to read.

Discussed and approved in "[PATCH] RTSP alternate protocol 3/4".

Originally committed as revision 12505 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-03-19 14:07:31 +00:00
Ronald S. Bultje 8a8754d80f Allow cycling between different protocols (TCP, UDP or multicast) so that if
one doesn't work, we can try the next one (i.e. trial-error protocol auto-
probing).

Discussed and approved in "[PATCH] RTSP alternate protocol 2-3/3".

Originally committed as revision 12504 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-03-19 14:05:08 +00:00
Ronald S. Bultje 53620bba51 Split the SETUP request into a separate function, as a prelude into allowing
multiple SETUPs to be send to cycle protocols rather than bailing if one
fails.

Discussed and approved in "[PATCH] RTSP alternate protocol 1/3".

Originally committed as revision 12476 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-03-17 12:16:39 +00:00
Ronald S. Bultje f841a0fca1 Add a flags field to the RTPDynamicPayloadPacketHandlerProc (PKT_FLAG_*).
This can be used later by RDT to get the flags from the RTP packet and
use that for the RealMedia packet (such as whether this RTP packet
represents a keyframe or not). For discussion, see "[PATCH] Realmedia
/ RTSP (RDT)".

Originally committed as revision 11557 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-01-18 20:48:32 +00:00
Ronald S. Bultje f739b36d16 Reindent after r11493 (always use parse_packet() vfunc in rtp_parse_packet()),
see "[PATCH] Realmedia / RTSP (RDT)" thread on ML.

Originally committed as revision 11494 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-01-10 13:54:30 +00:00