Commit graph

4368 commits

Author SHA1 Message Date
Jan Schmidt
9941d3f0a2 deinterlace: Avoid infinite loop draining frames
When the pipeline is flushed just as we're draining history,
don't loop infinitely, just discard the history and abort.
2010-12-12 10:15:13 +11:00
Sebastian Dröge
e7ac799278 qtdemux: Check if there's actually a seek table before parsing it 2010-12-11 17:49:03 +01:00
Kishore Arepalli
5d9c8996da qtdemux: Implement CONVERT and FORMATS query
Fixes bug #636784.
2010-12-11 17:46:17 +01:00
Tim-Philipp Müller
d73440cb97 matroska-demux: put unrecognised RIFF format IDs into the unknown caps
Extra info can't hurt. Field names aren't necessarily consistent with
what's used elsewhere though (e.g. avidemux), but then neither are the
caps.

https://bugzilla.gnome.org/show_bug.cgi?id=623178
2010-12-11 14:53:28 +00:00
Mark Nauwelaerts
287894a89a rtspsrc: mark DISCONT when resuming PLAY
In particular, when streaming interleaved, this arranges for setting a new
timestamp on outgoing buffer so downstream can appropriate reset
to a change in (rtp)time.
2010-12-10 12:11:15 +01:00
Mark Nauwelaerts
c25625c31c rtspsrc: degrade gracefully upon failing seek and tweak QUERY_SEEKING response 2010-12-10 12:09:49 +01:00
Mark Nauwelaerts
52b5929a2b rtspsrc: add and use auto buffering mode
... which selects BUFFER for a non-live stream, and otherwise SLAVE.

Fixes #633088.
2010-12-10 12:09:32 +01:00
Wim Taymans
6729a3b79c j2kdepay: make the depayloader more resilient
Use 3 adapters, one to accumulate paketization units, another on to accumulate
tiles and a last one to accumulate the final frame.
Don't just blindly flush the adapter on DISCONT but only discard the current
packetization unit.
When we dropped jpeg2000 packets between SOP markers, adjust the SOT header with
the new lenght.
2010-12-09 18:18:24 +01:00
Mark Nauwelaerts
df2982ce7d qtdemux: fix flow return aggregation 2010-12-09 13:57:49 +01:00
Mark Nauwelaerts
5239e19e9c qtdemux: fix handling near end-of-file corner cases
Also, relax some error handling to not bail out completely when something
feels amiss, but consider this EOF and continue with was obtained so far.
2010-12-08 11:37:30 +01:00
Mark Nauwelaerts
d2948bb259 qtdemux: fragmented support; fix offset handling and relax error raising
In particular, accept unknown stream in track fragment, and only error out
if that raises problems later on with respect to offset tracking.

Fixes #620283.
2010-12-07 17:20:00 +01:00
Mark Nauwelaerts
6f8ce30c20 flvdemux: use aac codec-data to adjust samplerate if needed
Based on patch by Fabien Lebaillif-Delamare <fabien@arq-media.com>

Fixes #636621.
2010-12-07 13:12:02 +01:00
Alessandro Decina
c882b3f340 qtdemux: fix compiler warnings on OSX. 2010-12-06 19:59:49 +01:00
David Hoyt
6e7474459a imagefreeze: pass along eos if received before buffer arrives
Fixes #636172.
2010-12-06 15:23:00 +01:00
Andoni Morales Alastruey
fd6bc949c8 matroskamux: try to write timestamps in all the outgoing buffers
Fixes #632654.
2010-12-06 13:01:17 +01:00
Mark Nauwelaerts
1d4496254d progressreport: optionally determine progress using buffer metadata
Based on patch by Leo Singer <lsinger at caltech.edu>

Fixes #629418.
2010-12-06 12:18:31 +01:00
Guillaume Emont
92720fa048 navseek: add basic support to change playback rate
The following keys will now be interpreted by navseek:
 'f' means fast forward: the stream gets played at rate 2.0
 'r' means rewind: the stream gets played at rate -2.0
 'n' means normal: the stream gets played at rate 1.0

Fixes #631516.
2010-12-03 15:52:08 +01:00
Mark Nauwelaerts
bdb4019678 qtdemux: add support for e(a)c-3 audio 2010-12-03 15:52:08 +01:00
Mark Nauwelaerts
44bf274b60 qtdemux: avoid sending EOS event twice 2010-12-03 15:52:08 +01:00
Mark Nauwelaerts
d4ceb8c7a6 qtdemux: remove dead code trying to update stream duration
On the one hand, it insufficiently checks whether it only updates a dummy
segment.  On the other hand, only doing this at the time the last sampled is
prepared (and sent downstream) is too little too late.
2010-12-03 15:52:08 +01:00
Mark Nauwelaerts
39a3fd40bf qtdemux: fragmented support; handle ismv sample flags 2010-12-03 15:52:08 +01:00
Mark Nauwelaerts
b4fb2ac99c qtdemux: fragmented support; handle ismv stbl atoms
... or lack of some thereof, such as mandatory stsz.  Shuffle some code
in _stbl_init to detect this early enough.
2010-12-03 15:52:08 +01:00
Mark Nauwelaerts
283e2b1bcd qtdemux: fragmented support; compensate for ismv offset handling
... or lack thereof, which according to specs would put media data in
unlikely position.
2010-12-03 15:52:07 +01:00
Mark Nauwelaerts
dfa54ed8cb qtdemux: fragmented support for push mode 2010-12-03 15:52:05 +01:00
Mark Nauwelaerts
d66a3db6b8 qtdemux: fragmented support; proper and incremental moof parsing
That is, parse each moof in one pass (considering all contained streams'
metadata), and do so incrementally as needed for playback rather than
an initial complete scan of all moof (though all moov sample metadata
is fully parsed at startup).
2010-12-03 15:50:33 +01:00
Mark Nauwelaerts
73bbd8e7d3 qtdemux: refactor stream freeing 2010-12-03 15:50:33 +01:00
Mark Nauwelaerts
eb5c958143 qtdemux: delegate linear search for sample to binary search when possible
Also arrange for parsing a sample prior to taking a reference to it,
which requires less memory layout assumptions for correctness.
2010-12-03 15:50:33 +01:00
Mark Nauwelaerts
b7c27029e5 qtdemux: fragmented support; handle moov samples and proper stream duration 2010-12-03 15:50:32 +01:00
Mark Nauwelaerts
4790603d31 qtdemux: fragmented support; consider mvex and handle flags and offset fields 2010-12-03 15:50:32 +01:00
Mark Nauwelaerts
4bcad634f8 qtdemux: fragmented support; forego check for short streams
... as some bogus files may indicate streams of 0 duration in moov,
while indicating the complete movie duration in mvhd (the latter should
be in mehd).
2010-12-03 15:50:32 +01:00
Mark Nauwelaerts
30065f8f01 qtdemux: fragmented support; code cleanups and optimizations in atom parsing
Avoid extra allocation in _parse_trun, add more checks for parsing errors,
add or adjust some debug statement, fix comments, sprinkle some branch
prediction.
2010-12-03 15:50:32 +01:00
Thiago Santos
4f62f49a17 qtdemux: parse_moof should return TRUE on success 2010-12-03 15:50:32 +01:00
Thiago Santos
7dabc7764e qtdemux: Fix iteration bug
Avoid infinite loop when iterating traf
2010-12-03 15:50:32 +01:00
Thiago Santos
f48817522d qtdemux: Refactor trun parsing
The allocation of the samples can be placed out of the loop.
Makes the code clearer.

Also avoid relying on traf information as it is placed on the
end of the file and might not be acessible on push mode.
2010-12-03 15:50:31 +01:00
Thiago Santos
400f22bfe3 qtdemux: Remove parsing of unused atom
sdtp atom is parsed but not used, so we don't have to
parse it.
2010-12-03 15:50:31 +01:00
Mark Nauwelaerts
19b87dbdbe qtdemux: tweak wam support
... with some comment and portability macros.
2010-12-03 15:50:31 +01:00
Marc-André Lureau
293e6a61b4 qtdemux: support wma & vc-1
https://bugzilla.gnome.org/show_bug.cgi?id=596321
2010-12-03 15:50:31 +01:00
Andoni Morales Alastruey
6f05c5c050 qtdemux: parse fmp4 samples information
The fragmented mp4 format stores the tracks and samples information in the
'moof' boxes, which are appended before each fragment (fragment->'moof'+'mdat').
The 'mfra' box stores the offset of each 'moof' box and their presentation
time. The location of this box can be retrieved from the 'mfro' box, which is
located at the end of the file.
The 'mfra' box is parsed to get the offset of each 'moof' box and their
presentation time.
Each 'moof' box can contain information for one or more tracks inside
'tfhd' boxes. For each track in a 'moof', we have a 'trun' box, which
contains information of each sample (offset and duration) used to build
the samples table.

Based on patch by Marc-André Lureau <mlureau@flumotion.com>

https://bugzilla.gnome.org/show_bug.cgi?id=596321
2010-12-03 15:50:31 +01:00
Marc-André Lureau
e7a1c32a4f qtdemux: add fragmented mp4 fourccs
Adds fourcc's for tfra, tfhd, trun, sdtp, trex, mehd and
their dumps

https://bugzilla.gnome.org/show_bug.cgi?id=596321
2010-12-03 15:50:31 +01:00
Marc-André Lureau
c9b866a994 qtdemux: parse the track id from the track header
Signed-off-by: Andoni Morales Alastruey <amorales@flumotion.com>

https://bugzilla.gnome.org/show_bug.cgi?id=596321
2010-12-03 15:50:31 +01:00
Marc-André Lureau
2fa531ee3c qtdemux: allow pulling atoms with unknown size
Signed-off-by: Andoni Morales Alastruey <amorales@flumotion.com>

https://bugzilla.gnome.org/show_bug.cgi?id=596321
2010-12-03 15:50:30 +01:00
Marc-André Lureau
994313da50 qtdemux: make qtdemux_dump_mvhd parse version 1 correctly
Versions 0 and 1 of mvhd have different sizes of its values
(32bits/64bits). This patch makes it dump them correctly.

Also use the right node in the parameter and not the root node.

https://bugzilla.gnome.org/show_bug.cgi?id=596321
2010-12-03 15:50:30 +01:00
Mark Nauwelaerts
b9048fd953 matroskademux: minor cleanups in setting streamheader on caps 2010-12-03 15:50:30 +01:00
Mark Nauwelaerts
7be2ee8710 matroskademux: normalize empty Cues to no Cues
... to trigger indexless seeking.
2010-12-03 15:50:30 +01:00
Mark Nauwelaerts
e09e80eb2f avidemux: add workaround for buggy list size
Fixes truncated extra-data in hdrl/strl/strf due to buggy containing
list size not accounting for padding in contained chunks.
2010-12-03 15:50:30 +01:00
Mark Nauwelaerts
46c91476eb rtpssrcdemux: do not hold custom PAD_LOCK when pushing downstream 2010-12-03 15:50:21 +01:00
Mark Nauwelaerts
0f2373cbd1 rtspsrc: reset session manager base time when flushing
... as rtpbin uses running time to handle rtpjitterbuffer's buffer mode pauses.
2010-12-03 15:50:17 +01:00
Mark Nauwelaerts
148af2235e rtspsrc: include range request for all streams with non-aggregate control 2010-12-03 15:50:17 +01:00
Mark Nauwelaerts
dedf145316 rtspsrc: fix debug statement 2010-12-03 15:50:17 +01:00
Edward Hervey
13ef2ccc97 avidemux: Parse more variants of numerical IDIT tag 2010-12-03 15:38:00 +01:00