Commit Graph

95 Commits

Author SHA1 Message Date
Michael Niedermayer b33d75fd80 Move declarations in sync() closer to where they are used.
Originally committed as revision 18556 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-17 14:38:52 +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 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
Måns Rullgård c3df4a3bfe rmdec: fix crash at end of file
Originally committed as revision 18018 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-03-16 20:22:39 +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 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
Aurelien Jacobs 1f1ff73156 remove now useless get_str16() from rmdec.c
Originally committed as revision 17397 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-17 21:41:50 +00:00
Aurelien Jacobs 7379d5bc0b use new metadata API in rm (de)muxer
Originally committed as revision 17396 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-17 21:40:38 +00:00
Benoit Fouet 0fd7c133f4 Add a context to av_log() calls.
Originally committed as revision 17377 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-16 16:12:23 +00:00
Diego Biurrun 517ac2434b Use more descriptive format long_names.
Originally committed as revision 17184 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-12 17:26:06 +00:00
Michael Niedermayer 88297e80aa Reformat rdt_demuxer AVCodec struct sanely.
Originally committed as revision 16969 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-03 13:12:20 +00:00
Diego Biurrun 406792e7b0 cosmetics: Remove pointless period after copyright statement non-sentences.
Originally committed as revision 16684 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-19 15:46:40 +00:00
Diego Biurrun 6a5d31ac25 Fix build: Add intreadwrite.h and bswap.h #includes where necessary.
Originally committed as revision 16556 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-11 22:19:48 +00:00
Dominique Leuenberger 6fde7afa8d Fix a compiler warning:
libavformat/rmdec.c:550: warning: assignment makes pointer from integer

Patch by Dominique Leuenberger (dominique-ffmpeg-devel A leuenberger D net)

Originally committed as revision 16489 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-07 23:37:03 +00:00
Michael Niedermayer ce0453aac9 10l set AVPacket.size to the true size of the returned data instead of
the (larger) allocated size. (prevents segfaults due to later failures
from 900MB-sized packets, yes fuzzed file not a valid one)

Originally committed as revision 16404 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-31 02:47:54 +00:00
Michael Niedermayer 188e67eaf4 Fix indention which was off by 1 space.
Originally committed as revision 16403 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-31 01:54:54 +00:00
Michael Niedermayer 0b4ff0c9ef Replace buffer by AVPacket and avoid a memcpy() for video when the number
of allocated slices matches the actual.
Audio still does a copy (marked with FIXME in the code so this is not missed).

Originally committed as revision 16402 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-31 01:53:12 +00:00
Michael Niedermayer fce48f5b0b Merge videobuf and audiobuf.
Originally committed as revision 16401 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-31 00:24:54 +00:00
Michael Niedermayer f48d545736 Simplify the top of rm_assemble_video_frame().
Originally committed as revision 16400 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-30 21:23:02 +00:00
Michael Niedermayer e45673cb3a Add a few error checks to rm_assemble_video_frame()
Originally committed as revision 16399 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-30 20:51:18 +00:00
Michael Niedermayer 51d6852f43 All non zero returns of rm_assemble_video_frame() are errors, check things
accordingly.

Originally committed as revision 16398 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-30 19:49:27 +00:00
Reimar Döffinger 7d204e67e8 av_free() -> av_freep(), patch by Reimar Doffinger, see discussion in
"rmdec.c: double free" thread on mailinglist.

Originally committed as revision 16379 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-28 23:25:17 +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 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 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 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 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 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 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
Michael Niedermayer f23938f5b7 Check sub_packet_size against 0 to avoid div by zero later.
Fixes issue473

Originally committed as revision 15739 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-29 00:16:50 +00:00
Benjamin Larsson 2426bb960a add ok parts to the rm demuxer for SIPRO support
Originally committed as revision 15426 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-26 12:12:25 +00:00
Vitor Sessak b93dd8383a Add support for RVTR fourCC
Originally committed as revision 15386 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-23 06:24:00 +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