Commit Graph
100 Commits
Author SHA1 Message Date
Ronald S. Bultje faccfeec0e Parse frame size code, see "svq3.c: parse frame size" thread on ML.
Originally committed as revision 19583 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-08-04 21:55:47 +00:00
Ronald S. Bultje 73f04f5e7d Make me maintainer of rtp_asf.*
Originally committed as revision 19582 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-08-04 21:43:53 +00:00
Ronald S. Bultje 7a4a64e7ab Remove old_flags variable, which is a duplicate of the flags variable.
Originally committed as revision 19540 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-30 15:05:33 +00:00
Ronald S. Bultje 34bddc39b4 Don't use a pointer-to-flags/timestamp in ff_rm_parse_packet(); the function
used to return packet data, which might update the flags/timestamp to be
used for the next packet data returned by the demuxer. However, that was
separated out into a new function, and the flags/timestamp are thus never
updated within ff_rm_parse_packet() anymore, and thus do not need to be
a pointer.

Originally committed as revision 19539 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-30 15:04:19 +00:00
Ronald S. Bultje acfe8faf29 Cosmetics: remove spaces between function name and arguments in declaration,
and put return type ("static void") on the same line as function name.

Originally committed as revision 19519 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-27 14:32:54 +00:00
Ronald S. Bultje fccb1770e6 Implement support for EOS as used by WMS and other RTSP servers that do not
implement RTCP/bye. See "[PATCH] rtsp.c: EOS support" thread from a few
months back.

Originally committed as revision 19517 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-27 14:03:53 +00:00
Ronald S. Bultje c2f3eec445 Implement RTSP-MS/ASF packet parsing - this completes RTSP-MS support. See
discussion in "[PATCH] RTSP-MS 14/15: ASF packet parsing" thread on mailinglist.

Originally committed as revision 19516 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-27 14:00:10 +00:00
Ronald S. Bultje 2078ca16ee Add handling of EAGAIN at packet boundaries. See "[PATCH] RTSP-MS 14/15:
ASF packet parsing" thread for discussion / reasoning.

Originally committed as revision 19509 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-26 19:09:35 +00:00
Ronald S. Bultje 684aa30251 Add doxy to av_log_missing_feature() etc. stating that the function is
primarily intended for internal use in lavc/lavf, not for use in apps.

Originally committed as revision 19296 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-29 19:17:03 +00:00
Ronald S. Bultje 4811f89bc6 Move av_log_missing_feature() from the internal.h to the public avcodec.h
header file.

Originally committed as revision 19295 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-29 19:11:53 +00:00
Ronald S. Bultje ce863d7f36 Rename ff_log_missing_feature() to av_log_missing_feature().
Originally committed as revision 19294 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-29 19:07:04 +00:00
Ronald S. Bultje 91d19d471b Remove any reference to ASFContext.packet_size and replace it with
AVFormatContext.packet_size. See "[PATCH] asf*.c/h: use
AVFormatContext->packet_size instead of own copy" thread on ML.

Originally committed as revision 19270 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-24 23:04:05 +00:00
Ronald S. Bultje b394438e8a Document making AVFormatContext.packet_size unsigned API change.
Originally committed as revision 19251 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-22 16:54:17 +00:00
Ronald S. Bultje 92400be255 Change packet_size from signed to unsigned, since it never has a negative
value. Currently, this is only used in qcp.c and mpegenc.c, and they are
practically unaffected by this change.

See "[PATCH] make packet_size in AVFormatContext unsigned" thread on ML.

Originally committed as revision 19250 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-22 16:52:02 +00:00
Ronald S. Bultje f4ca612fbd Set restrictions on packet_size, as per ISO-11172 / H-222 specifications
(max packet size should fit in 13 bits as a kB value, so 1<<23, plus the
header which is 10 bytes), and as per mpegenc.c internal assumptions
(min packet size is 20 bytes). See "[PATCH] make packet_size in
AVFormatContext unsigned" thread.

Originally committed as revision 19215 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-17 19:04:02 +00:00
Ronald S. Bultje 277a28e8fc Make asf_get_packet() and asf_parse_packet() static. See "[PATCH] asfdec.c:
make get/parse_packet static" thread from 2 months ago.

Originally committed as revision 19140 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-09 20:58:32 +00:00
Ronald S. Bultje 1d0036b01f Change another AVERROR(EIO) inot AVERROR_EOF, because it really signals EOF,
not a stream error. This also fixes an infinite loop on EOS during ASF file
playback, and Michael claims he "likes the patch" (ref: [PATCH] RTSP-MS
15/15: move packet_time_start zero value assignment in asf.c" mailinglist
tread).

Originally committed as revision 18552 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-17 14:05:57 +00:00
Ronald S. Bultje 799a0722fc Replace AVERROR(EIO) by AVERROR_EOF on end-of-file. See mailinglist
thread "[PATCH] RTSP-MS 15/15: move packet_time_start zero value
assignment in asf.c".

Originally committed as revision 18531 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-16 00:41:31 +00:00
Ronald S. Bultje 30e79845b4 Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
Real wants OPTIONS) while the connection is idle, otherwise it will
be aborted after a short period (usually a minute). See the thread
"[PATCH] rtsp.c: keep-alive" on the mailinglist.

Originally committed as revision 18525 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-15 13:04:34 +00:00
Ronald S. Bultje e6327fba98 Add a Vorbis payload parser. Implemented by Colin McQuillan as a GSoC
qualification task, see "RTP/Vorbis payload implementation (GSoC qual
task)" thread on mailinglist.

Originally committed as revision 18509 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-14 15:01:46 +00:00
Ronald S. Bultje 373afbaf76 Increase the SDP buffer size (again!) and also increase the temporary
buffer size of the fmtp parameter buffer. For Vorbis RT(S)P, these
contain full Vorbis headers, which can be up to 12kb each, formatted
in base64, so 16kb total. Patch required for proper Vorbis/RTP playback,
submitted as GSoC qualification task in the thread "RTP/Vorbis payload
implementation (GSoC qual task)" by Colin McQuillan m.niloc googlemail
com.

Originally committed as revision 18508 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-14 13:22:40 +00:00
Ronald S. Bultje 2851d2253f Document addition of new avcodec_decode_video2/audio3/subtitle2() API and
the deprecation of the old API calls.

Originally committed as revision 18376 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-08 12:37:29 +00:00
Ronald S. Bultje 4bce3ba480 Reindent after r18372.
Originally committed as revision 18373 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-08 03:06:08 +00:00
Ronald S. Bultje 6e9f56c127 Add waveformat-extensible support in the wav muxer.
Patch (GSoC qualfication task) by Zhentan Feng spyfeng gmail com, see
"[FFmpeg-devel] Add waveformat extensible support in wav muxer (SoC
qualification task)" thread on mailinglist.

Originally committed as revision 18372 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-08 03:04:57 +00:00
Ronald S. Bultje be0395103a Don't strip the first three characters off of any metadata in ASF file.
See "[FFmpeg-devel] [PATCH] asf fix" thread. Patch contributed by
David DeHaven <dave sagetv com>.

Originally committed as revision 18213 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-28 03:54:31 +00:00
Ronald S. Bultje da1e126e0d strchr(string, '\0') returns non-NULL, and is thus not suited for use in
redir_isspace(char) to check if '\0' is a space or not. Therefore, we now
use memchr(), since then we can give the length of the string (i.e. the
length excluding the terminating '\0'). Fixes issue 919, see also the
follow-ups in the "[PATCH] rtsp.c small cleanups" mailinglist thread.

Originally committed as revision 18177 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-24 03:24:59 +00:00
Ronald S. Bultje 2121b160d5 Remove alpha channel from default colorspace tables, since it is unused. See
"qtpalette.h" thread on mailinglist.

Originally committed as revision 18144 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-22 13:05:13 +00:00
Ronald S. Bultje e6b09f4361 Add a @todo with a comment from Kostya so we don't forget to optimize that at
some point in the future.

Originally committed as revision 18142 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-22 12:47:16 +00:00
Ronald S. Bultje cc9aced32f Remove slash-skipping code because the function called right after that
statement (get_word_sep()) already does that all by itself. See summary in
"[PATCH] rtsp.c small cleanups" thread on mailinglist.

Originally committed as revision 18128 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 21:02:08 +00:00
Ronald S. Bultje 78f731de92 Reindent something where a if () --> { <-- is on a newline rather than on the
same line as the if. See summary in "[PATCH] rtsp.c small cleanups" thread on
mailinglist.

Originally committed as revision 18127 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 21:00:51 +00:00
Ronald S. Bultje 7d09a993d1 Free metadata if already allocated; fixes a memleak if the header occurs twice
in a stream (e.g. malicious input, broken file, etc.). See summary in "[PATCH]
rtsp.c small cleanups" thread on mailinglist.

Originally committed as revision 18126 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 20:59:59 +00:00
Ronald S. Bultje 6a8c8b36b9 Fix silly bug in hex_to_data() where it compares a string pointer for whether
it is '\0' rather than its content (char *p; if (p == '\0') instead of if
(*p == '\0')). See summary in "[PATCH] rtsp.c small cleanups" thread on
mailinglist.

Originally committed as revision 18125 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 20:58:41 +00:00
Ronald S. Bultje 64917dd3df Remove useless comment about something that is deprecated. See summary in
"[PATCH] rtsp.c small cleanups" thread on mailinglist.

Originally committed as revision 18124 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 20:56:57 +00:00
Ronald S. Bultje 36aa7bc27f Use skip_spaces() in the "redir" demuxer instead of "while (isspace(&p)) p++".
See summary in "[PATCH] rtsp.c small cleanups" thread on mailinglist.

Originally committed as revision 18123 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 20:55:52 +00:00
Ronald S. Bultje 1ef36a7035 Merge functional code from get_word() and get_word_sep() into a single
function, since they both do approximately the same thing. At the same time,
remove redir_isspace() altogether since code elsewhere (including
get_word_sep()) uses strchr() for the same purpose. See summary in "[PATCH]
rtsp.c small cleanups" thread.

Originally committed as revision 18122 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 20:54:47 +00:00
Ronald S. Bultje 7e726132c2 Allow (and parse) incoming server messages (notices) interleaved with TCP
data packets or in addition to UDP data packets, over the RTSP/TCP connection.
See discussion in [PATCH] rtsp.c: read TCP server notifications/messages"
thread on mailinglist.

Originally committed as revision 18121 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 20:46:36 +00:00
Ronald S. Bultje 9c610b7667 Add a @todo item to use ByteIOContext instead of URLContext at some point in
the future, requested by Luca in "[PATCH] rtsp.c: read TCP server
notifications/messages" thread.

Originally committed as revision 18120 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 20:44:46 +00:00
Ronald S. Bultje 8b9794e542 Remove index writing in RM muxer, since it is broken (multiple streams per
single index chunk) and is always empty anyway. See "[PATCH] rmenc.c: remove
index writing" thread.

Originally committed as revision 18119 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 20:34:24 +00:00
Ronald S. Bultje 83c0ba3dad Don't allow to sync on packets of zero-size length, since these are never
valid. See "[PATCH] rmdec.c: prevent zero-length packets" thread.

Originally committed as revision 18118 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 19:19:09 +00:00
Ronald S. Bultje e75e603c1a Move "- 12" statement up a bit. See "[PATCH] rmdec.c: prevent zero-length
packets" thread.

Originally committed as revision 18117 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-21 19:18:07 +00:00
Ronald S. Bultje cf16c17a69 Add byte reordering for the SIPRO audio codec. See "rmdec.c: add SIPR codec
try #2" thread. Patch originally by Vladimir Voroshilov.

Originally committed as revision 18062 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-20 01:22:51 +00:00
Ronald S. Bultje e9fce261a6 Assign the x-pf-asf payload string to be decoded by rtp_asf.c, and add a
SDP line handler that parses the streamID in the SDP so that ASF stream
data can be matched to their respective streams in the RTSP demuxer. See
"[PATCH] RTSP-MS 12/15: ASF payload support" thread on mailinglist.

Originally committed as revision 18061 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-20 01:11:08 +00:00
Ronald S. Bultje 79ff11d78f Fix wrong @file tag.
Originally committed as revision 18026 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-17 18:35:58 +00:00
Ronald S. Bultje c4a3d03299 Reindent after r18023.
Originally committed as revision 18024 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-17 12:35:55 +00:00
Ronald S. Bultje 1a30d5415f Add RTP/ASF header parsing, which is part of the SDP of these streams. See
patch discussion in "[PATCH] RTSP-MS 10/15: ASF header parsing" thread.

Originally committed as revision 18023 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-17 12:34:57 +00:00
Ronald S. Bultje 508fe07ab3 More reindent, forgotten in previous commit.
Originally committed as revision 18014 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 13:23:29 +00:00
Ronald S. Bultje 2d6f301470 Parse index chunk so that seeking in modern .rm files becomes a lot faster.
Has been tested against streamed / non-seekable input and passes make
seektest. See "[PATCH] rmdec.c: parse INDX chunk" thread on mailinglist.

Originally committed as revision 18013 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 13:03:23 +00:00
Ronald S. Bultje c882927957 Reindent after r18010.
Originally committed as revision 18011 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 13:01:02 +00:00
Ronald S. Bultje 55d330f913 Mark the first output audio frame as keyframe (separate patch from previous,
as requested by Kostya). See "[PATCH] rmdec.c: remove cache access
duplication".

Originally committed as revision 18010 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 12:59:18 +00:00
Ronald S. Bultje c5efef7be9 Remove packet returning in ff_rm_parse_packet() if we're using the packet
cache, since this can already be accessed through ff_rm_retrieve_cache().
See "[PATCH] rmdec.c: remove cache access duplication" thread.

Originally committed as revision 18009 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 12:57:49 +00:00
Ronald S. Bultje 7268f0bd8e Reindent after r18005.
Originally committed as revision 18007 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 12:50:12 +00:00
Ronald S. Bultje 6a2d3fc30b Merge code for packet reading in "old" (.ra, audio-only) Realmedia files and
the newer (.rm, audio/video) files. See "[PATCH] rmdec.c: merge old/new
packet reading code" thread on mailinglist.

Originally committed as revision 18005 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 12:47:34 +00:00
Ronald S. Bultje 7a160bca83 Fix index generation in the way that it was supposed to be used. See the
discussion in the ML thread "[PATCH] rmdec.c: merge old/new packet reading
code".

Over time, this code broke somewhat, e.g. seq was never actually written
into (and was thus always 1, therefore the seq condition was always true),
whereas it was supposed to be set to the sequence number of the video slice
in case the video frame is divided over multiple RM packets (slices). The
problem of this is that packets other than those containing the beginning
of a video frame would be indexed as well.
Secondly, flags&2 is supposed to be true for video keyframes and for these
audio packets containing the start of a block. For some codecs (e.g. AAC),
that is every single packet, whereas for others (e.g. cook), that is the
packet containing the first of a series of scrambled packets that are to be
descrambled together. Indexing any of the following would lead to incomplete
and thus useless frames. Problem here is that flags would be reset to 2 to
indicate that the first packet is ready to be returned, and in addition if
no data was left to be returned (which is always true for the first packet),
then we wouldn't actually write the index entry anyway.
All in all, the idea was good and it probably worked at some point, but that
is long ago. This patch should at the very least make it likely for this code
to be executed again at the right times, i.e. the way it was originally
intended to be used.

Originally committed as revision 17993 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-15 20:14:25 +00:00
Ronald S. Bultje b5b9ff2a1f Correctly skip complete INDX chunks, i.e. read the 32-bit header correctly
and if the size is broken (20 bytes, header-only), calculate the expected
size and skip the index entries anyway. See "[PATCH] rmdec.c: correctly
skip indexes" thread.

Originally committed as revision 17924 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-10 12:55:29 +00:00
Ronald S. Bultje b8cc5a9fdf Prevent (negative) overflow of rm->remaining_len. This evaluation really only
has two possible outcomes: either len and rm->remaining_len are the same, in
which case we care about the outcome and it is zero, or rm->remaining_len is
currently not in use and we don't care about the outcome. In that case, len
is positive and rm->remaining_len is zero, which leads to a negative result.
This is confusing and could eventually lead to a sign-flip if we skip a lot
of packets (unlikely, but still). Therefore, just always set it to zero.

Originally committed as revision 17919 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-09 22:03:47 +00:00
Ronald S. Bultje 7ccefd08f6 Revert to r17908.
Originally committed as revision 17918 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-09 22:02:06 +00:00
Ronald S. Bultje 88c4339bda Move MOVContext and related structures from mov.c to isom.h. See "[PATCH]
move MOVContext from mov.c to isom.h" thread on ML.

Originally committed as revision 17915 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-09 21:53:00 +00:00
Ronald S. Bultje 0ecf9cc900 Prevent (negative) overflow of rm->remaining_len. This evaluation really only
has two possible outcomes: either len and rm->remaining_len are the same, in
which case we care about the outcome and it is zero, or rm->remaining_len is
currently not in use and we don't care about the outcome. In that case, len
is positive and rm->remaining_len is zero, which leads to a negative result.
This is confusing and could eventually lead to a sign-flip if we skip a lot
of packets (unlikely, but still). Therefore, just always set it to zero.

Originally committed as revision 17910 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-09 13:08:19 +00:00
Ronald S. Bultje 21b3752932 Replace separate packet parsing for "old_format" .ra files by a call to
ff_rm_parse_packet(). See "[PATCH] Make RM demuxer behave better with -an
option" thread, which sort-of turned into an aggregate of unrelated rmdec.c
cleanups.

Originally committed as revision 17909 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-09 12:46:32 +00:00
Ronald S. Bultje dc3685e129 Move frame discarding out of the ff_rm_parse_packet() loop, and respect
rm->audio_pkt_cnt in case multiple packets should be read before the next
syncpoint in the file, so that ffplay -an on a file containing AAC audio
works. See "[PATCH] Make RM demuxer behave better with -an option" thread
on mailinglist.

Originally committed as revision 17908 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-09 12:42:53 +00:00
Ronald S. Bultje 37b7dac184 Reorder alphabetically after r17902.
Originally committed as revision 17906 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-09 12:06:47 +00:00
Ronald S. Bultje 743b389074 rtpmap is case-insensitive, see comment from Luca in "[PATCH] rtsp.c:
keep-alive" thread.

Originally committed as revision 17862 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-07 15:20:55 +00:00
Ronald S. Bultje 57f94f54c4 Oops, very silly typo.
Originally committed as revision 17853 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-06 03:12:33 +00:00
Ronald S. Bultje 29b9f58b37 Split rtsp_send_cmd() into two functions, one for the actual sending of the
command and a second, new function to read the reply to this command. This
will make it possible to read server notices that are not in response to a
command in future versions, such as EOS or interrupt notices. See "[PATCH]
rtsp.c: split rtsp_send_cmd() in a send- and a receive-function" thread.

Originally committed as revision 17797 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-04 00:57:37 +00:00
Ronald S. Bultje bc8763cda9 Rename "fd1" variable ro "fd". There were previously two variables (fd1 and
fd2) and one was just removed, so naming the other "fd1" is counter-intuitive.
See "[RFC] rtsp.c EOF support" thread.

Originally committed as revision 17780 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 17:06:18 +00:00
Ronald S. Bultje f0a8039464 Add url_get_file_handle(), which is used to get the file descriptor
associated with the I/O handle (e.g. the fd returned by open()). See
"[RFC] rtsp.c EOF support" thread.

There were previously some URI-specific implementations of the same idea,
e.g. rtp_get_file_handles() and udp_get_file_handle(). All of these are
deprecated by this patch and will be removed at the next major API bump.

Originally committed as revision 17779 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 17:04:51 +00:00
Ronald S. Bultje 2fea965070 Reindent after r17777.
Originally committed as revision 17778 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 16:53:04 +00:00
Ronald S. Bultje f830c9a487 Make RTSP-MS-over-UDP negotiation work. See "[PATCH] RTSP-MS 8/15: fix
RTSP-MS UDP" thread on mailinglist.

Basically, UDP setup needs to be done in a particular order (first rtx
on two UDP ports (one for RTP, one for RTCP), then the other streams over
one, single port for all of them together). Not doing this correctly results
in a "461" error (invalid transport) during setup.

Originally committed as revision 17777 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 16:52:35 +00:00
Ronald S. Bultje 090438cc81 Recognize the "application" data type, which is required for WMS/UDP
sessions.

This type is used in RTP/ASF (served by WMS servers), and is required to
make UDP sessions work, but breaks TCP sessions. Therefore, we disable setup
for application streams in TCP/WMS streams.

See discussion in "[PATCH] RTSP-MS 8/15: fix RTSP-MS UDP" thread.

Originally committed as revision 17776 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 16:48:56 +00:00
Ronald S. Bultje f989d39752 Remove size_t cast in setting s->priv_data directly to the (integer) file
descriptor returned by open(). This removes some dubious doublecasts such
as priv_data = (void *) (size_t) some_integer, and is always safe on systems
we care about because sizeof(int)<=sizeof(void*). See comments from Mans and
Michael in "[RFC] rtsp.c EOF support" thread.

Originally committed as revision 17768 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 13:57:09 +00:00
Ronald S. Bultje eafb17d140 Don't let finalize_packet() touch pkt->stream_index. Instead, let individual
payload handlers take care of that themselves at their own option. What this
patch really does is "fix" a bug in MS-RTSP protocol where incoming packets
are always coming in over the connection (UDP) or interleave-id (TCP) of
the stream-id of the first ASF packet in the RTP packet. However, RTP packets
may contain multiple ASF packets (and usually do, from what I can see), and
therefore this leads to playback bugs. The intended stream-id per ASF packet
is given in the respective ASF packet header. The ASF demuxer will correctly
read this and set pkt->stream_index, but since the "stream" parameter can
not be known to rtpdec.c or any of the RTP/RTSP code, the "st" parameter
in all these functions is basically invalid. Therefore, using st->id as
pkt->stream_index leads to various playback bugs. The result of this patch
is that pkt->stream_index is left untouched for RTP/ASF (and possibly for
other payloads that have similar behaviour).

The patch was discussed in the "[PATCH] rtpdec.c: don't overwrite
pkt->stream_index in finalize_packet()" thread on the mailinglist.

Originally committed as revision 17767 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 13:51:34 +00:00
Ronald S. Bultje 95f03cf31f Reindent after r17764.
Originally committed as revision 17765 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 13:42:16 +00:00
Ronald S. Bultje f3e71942e7 In the current implementation of rtp_parse_packet(), finalize_packet() is
called for all packets with an internal handler function but only for
non-first packets from dynamic payload parse_packet() handlers. This patch
fixes that. Bug was noticed by Luca in "[PATCH] rtpdec.c: don't overwrite
pkt->stream_index in finalize_packet()" thread.

Originally committed as revision 17764 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 13:41:50 +00:00
Ronald S. Bultje d176f90387 Reduce allocated length of the HTTP authentication request field buffer, as
noticed by Stefano and Luca in the "[PATCH]RTSP Basic Authentication"
mailinglist thread.

av_base64_encode() was recently changed. The previous implementation required
12 extra bytes (ceil(len(src)/3.)*4+12), whereas the new one is guaranteed to
fit in an exact buffer (ceil(len(src)/3.)*4), plus one extra byte for the
trailing zero. This change fixes no bug, it just slightly decreases the
amount of allocated memory.

Originally committed as revision 17761 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-03 13:26:17 +00:00
Ronald S. Bultje 2d243fb3fc Rename movenc.c MOVContext to MOVMuxContext, since MOVContext is already used
in mov.c for the demuxer. See "[PATCH] rename movenc.c MOVContext to
MOVMuxContext" thread on the mailinglist.

Originally committed as revision 17659 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-28 16:02:29 +00:00
Ronald S. Bultje 144ae29dde Implement marker bit, which is used for several RTP payloads currently
under review. See "[FFmpeg-devel] RTP mark bit not passed to parse_packet"
thread on mailinglist.

Originally committed as revision 17616 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-26 14:24:50 +00:00
Ronald S. Bultje a68d44ed6f Don't (ab)use PKT_FLAG_* in RTP code, since the two have virtually nothing
in common except for this one value. Change was requested by Luca in the
"[FFmpeg-devel] RTP mark bit not passed to parse_packet" thread.

Originally committed as revision 17615 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-26 14:23:05 +00:00
Ronald S. Bultje 26d6b3e230 Document rtsp.h, see "[PATCH] document rtsp.h" thread.
Originally committed as revision 17614 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-26 14:15:41 +00:00
Ronald S. Bultje a9e534d561 Rename RTSPHeader to RTSPMessageHeader to reflect more clearly what the
structure is meant to represent. See "[PATCH] rtsp.[ch]: RTSPHeader ->
RTSPServerResponse" and "[PATCH] document rtsp.h" threads on ML.

Originally committed as revision 17504 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-21 22:26:44 +00:00
Ronald S. Bultje d541a7d2d1 Change sizeof(struct_type) to sizeof(variable).
Originally committed as revision 17474 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-21 14:40:19 +00:00
Ronald S. Bultje 2a1d51c573 Rename RTSP_*_LAST to RTSP_*_NB in line with PIX_FMT_* in lavc. See "[PATCH]
document rtsp.h" mailinglist thread.

Originally committed as revision 17381 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-16 16:27:35 +00:00
Ronald S. Bultje 3b0fc60592 Don't install rtsp.h. It is intended to be private, it depends on rtp code
which isn't installed anyway (so it doesn't work).

In the process, also remove public/private API comments from rtsp headers
because they are unnecessary.

Originally committed as revision 17379 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-16 16:24:01 +00:00
Ronald S. Bultje 1a45a9f4c0 Add "AVFormatContext *ctx" (that being the RTSP demuxer's) as first argument
to the parse_packet() function pointer in RTPDynamicProtocolHandlers. This
allows these functions to peek back and retrieve values from the demuxer's
context (or RTSPState). The ASF/RTP payload parser will use this to be able
to parse SDP values (which occur even before the payload ID is given), store
them in the RTSPState and then retrieve them while parsing payload data. See
"[PATCH] RTSP-MS 13/15: add RTSP demuxer AVFormatContext to parse_packet()
function pointer (was: transport context)" mailinglist thread.

Originally committed as revision 17015 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-06 01:37:19 +00:00
Ronald S. Bultje 0a861b6f8b Rename "tx_ctx" and "cur_tx" variables to "transport_priv" and
"cur_transport_priv", as discussed in the "[PATCH] rtsp.h: rename tx
variables" thread.

Originally committed as revision 17012 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-05 22:34:55 +00:00
Ronald S. Bultje b516ecdd12 Delete an enum and a function typedef that aren't used anywhere, and
move move a struct/typedef in rtsp.h that is only used in ffserver.c into
ffserver.c. See "[PATCH] rtsp.h: move/remove unused thingies" thread on ML.

Originally committed as revision 17005 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-05 17:00:10 +00:00
Ronald S. Bultje 1262d638da Move enum RTSPTransport up a bit, so that all fields that are assigned a value
of this type can be properly attributed as such (in this case, transport in
the RTSPTransportField struct). See "[PATCH] RTSP-MS 10/15: ASF header parsing"
thread on mailinglist.

Originally committed as revision 16989 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-04 17:17:20 +00:00
Ronald S. Bultje d1c6e47c16 Fix the Transport: line in the SETUP request so that it works with WMS
servers when trying to set up a session over TCP:
- add the interleave property
- add unicast, only for WMS (since it is normally only UDP, but WMS expects it
   for UDP and TCP)
- add mode=play
See discussion in "[PATCH] RTSP-MS 9/15: add interleave property to the TCP
transport line of the SETUP request" thread on mailinglist.

Originally committed as revision 16913 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-01 13:37:45 +00:00
Ronald S. Bultje cb760a4790 Skip m= blocks in the SDP if the media type is unknown. This prevents
subsequent a= lines from the m= block to be applied to the previous
m= line, thus breaking otherwise functional RTP streams. See discussion in
[PATCH] RTSP-MS 7/15: parse and allow unknown m= line codes" thread on
mailinglist.

Originally committed as revision 16737 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-24 04:56:18 +00:00
Ronald S. Bultje 9211bcddb4 Reindent to properly fit a 80 chars terminal.
Originally committed as revision 16511 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-09 23:44:52 +00:00
Ronald S. Bultje ff16f551cf Reindent after r16509.
Originally committed as revision 16510 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-09 23:36:39 +00:00
Ronald S. Bultje 83d14c85da Apply rtpmap: SDP lines to the last m= line only, since they generally just
come directly after each m= line if required. See "[PATCH] RTSP-MS 5-6/15:
parse only the last m= line stream per rtpmap line" thread on ML.

Originally committed as revision 16509 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-09 23:36:17 +00:00
Ronald S. Bultje e49906c321 Increase buffer size for RTP packet data because some ASF streams use a
manual, non-standard blocksize which is bigger than RTP_MAX_PACKET_LENGTH.
See "[PATCH] RTSP-MS 4/15: blocksize detection" thread on mailinglist.

Originally committed as revision 16502 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-09 01:30:14 +00:00
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