Commit graph

319 commits

Author SHA1 Message Date
Thiago Santos 40abf68562 qtdemux: Downgrade warning message to debug 2009-07-27 21:39:57 -03:00
Mark Nauwelaerts 977796fd07 qtdemux: sprinkle some more const 2009-07-08 11:20:30 +02:00
Mark Nauwelaerts a4d586daac qtdemux: perform some more (careful) data buffering
Once buffering has started (with an mdat atom), continue buffering
until moov atom is reached, which handles cases with multiple
mdat atoms.  Also keep adapter/offset better in sync with upstream
and fix some debug statements.  Fixes #587426.
2009-07-08 11:20:27 +02:00
Tim-Philipp Müller 2bcf52dde7 qtdemux: error out instead of dividing by 0
Error out if timescale is 0.
2009-07-01 13:07:48 +01:00
Tim-Philipp Müller f6a1211495 Revert "qtdemux: Make sure we don't blacklist streams by wrongly comparing their"
This reverts commit 5503a59a57.

Reverting this since it causes regressions with a lot of sample files
I have, all of which worked fine with the last -good release (#586891).
2009-07-01 09:32:42 +01:00
Tim-Philipp Müller ae27524be0 qtdemux: comment out unused structure 2009-07-01 09:24:38 +01:00
Tim-Philipp Müller 8fa148d2f1 qtdemux: more size checks, and use g_try_new0() instead of g_new0()
Whenever we alloc something based on a user-supplied size, we should
really use g_try_new(), otherwise we can easily be made to abort by
passing a ridiculously large number to us for allocing. Fixes
problems with some fuzzed files.
2009-07-01 09:24:38 +01:00
Tim-Philipp Müller 405aae4568 qtdemux: guard against bogus atom sizes and short reads
Check the possibly 64-bit atom size more carefully before casting it
to an int and passing it to gst_pad_pull_range(), otherwise we might
end up pulling 0 bytes, getting an empty buffer as requested and
dereferencing not available data whilst thinking we actually asked
for and got 0x1000000000000 bytes. Similar fix for push mode operation
where neededbytes ends up being 0 bytes, which makes us assert. Fixes
crash with broken or fuzzed file (NB #122378).
2009-07-01 09:24:38 +01:00
Tim-Philipp Müller c730912f67 qtdemux: use 0x prefix when logging numbers in hex 2009-07-01 09:24:38 +01:00
Tim-Philipp Müller 1fb30a154a qtdemux: don't process track_num/track_count tags with a 0 value
Number/count values of 0 mean they're not set. Don't put those in the
taglist.
2009-06-26 13:29:27 +01:00
Julien Moutte 5503a59a57 qtdemux: Make sure we don't blacklist streams by wrongly comparing their
duration with entire clip duration.
2009-06-25 13:23:40 +02:00
Edward Hervey 4780d17894 qtdemux: Remove dead assignments and unused variables.
Also add branch likeliness macros.
2009-06-25 07:41:44 +02:00
Edward Hervey b9d7f2527e qtdemux: Fix uninitialized variables. Fixes build on macosx 2009-06-25 07:41:43 +02:00
Edward Hervey 86c2299ed1 qtdemux: Another round of G_*LIKELY micro-optimisations. 2009-06-24 12:48:32 +02:00
Edward Hervey 30dd458567 qtdemux: Take last sample duration for dummy segment calculation.
This fixes the cases where files without EDL wouldn't output their
last buffer.
2009-06-24 12:48:32 +02:00
Edward Hervey 279be94321 qtdemux: Add GST_MEMDUMP statements for unknown atoms.
This is to help developers track down and implement unhandled atoms faster.
2009-06-24 12:37:38 +02:00
Tim-Philipp Müller da4c1c9227 qtdemux: don't leak cover art 2009-06-23 15:35:37 +01:00
Tim-Philipp Müller ace09d40bd qtdemux: use GST_MEMDUMP 2009-06-22 10:49:03 +01:00
Tim-Philipp Müller b8176ee9cc qtdemux: post container-format tags 2009-06-22 10:49:01 +01:00
Mark Nauwelaerts 71eb4a4dfa qtdemux: map some tags to COMPOSER rather than ARTIST 2009-06-17 12:31:40 +02:00
Mark Nauwelaerts 0d2db95453 qtdemux: fix some 3GP tag extraction (keywords, genre, location) 2009-06-17 12:31:37 +02:00
Mark Nauwelaerts 0f0117aabb qtdemux: extract pixel-aspect-ratio information 2009-06-17 12:31:32 +02:00
Wim Taymans 9050fb26e9 Revert "Revert "qtdemux: fill timestamp table completely""
This reverts commit 9f022c8a85.

Sorry, I was thinking about the wrong module.
2009-06-07 20:54:06 +02:00
Wim Taymans 9f022c8a85 Revert "qtdemux: fill timestamp table completely"
This reverts commit 790b050fc5.
I forgot we were frozen.
2009-06-07 20:49:50 +02:00
Wim Taymans 790b050fc5 qtdemux: fill timestamp table completely
When there are less timestamps that there are samples, fill up the sample table
with the last know timestamp. This situation can happen when the last sample
does not decode and doesn't need a timestamp. We however calculate the total
track length using the last sample timestamp so we need to have something
sensible in there.

Fixes #585056
2009-06-07 20:46:45 +02:00
Wim Taymans a6424471f1 qtdemux: parse in24 boxes to get endianness
in24 samples are normally big-endian but an enda box can change this to
little-endian. Recurse into the in24 box and find the enda box so that we get
the endianness right.

Fixes #582515
2009-05-21 22:05:11 +02:00
Marco Ballesio 8e7273076d qtdemux: fix byte order swapping in 3GPP classification entity tag
Fixes #580746.
2009-05-06 00:16:37 +03:00
Wim Taymans 70d1b6e1ae qtdemux: use binary search for index
Use the new binary search method for finding the right index entry faster.
2009-05-04 12:35:19 +02:00
Wim Taymans 1619c09e3e qtdemux: add some more micro optimisations 2009-05-01 19:35:11 +02:00
Wim Taymans ab0d1bc942 qtdemux: micro optimize qtdemux a little
Sprinkle some G_LIKELY around.

Avoid traversing and dumping the tree when debugging is not activated.
2009-04-30 18:41:44 +02:00
Wim Taymans b5d84439fd qtdemux: add support for subtitle pictures
Add support for subtitle pictures.
Fixes #568278.
2009-04-30 14:22:27 +02:00
Hans de Goede 6cfa856381 qtdemux: handle ac-3 audio
fix demuxing of m4v streams with ac-3 audio
Fixes #580554
2009-04-29 12:19:27 +02:00
Michael Smith 922c9f529a qtdemux: override caps based on data from ESDS atoms in mpeg4.
If the codec is actually something else (e.g. mjpeg) change the caps to
match when parsing the ESDS atom.
Also, for AAC, override rate and channels with correct values read from
ESDS, since the rate/channels values elsewhere are often wrong.
2009-04-21 14:04:07 -07:00
Mark Nauwelaerts cfcf76df11 Fix push mode buffering sanity check to actually fit the description. 2009-04-20 13:49:03 +02:00
Edward Hervey 0cb5b42d54 Remove trivial unused variables detected by CLang static analyzer. 2009-04-18 18:51:28 +02:00
Edward Hervey cdb03bdc2b Remove blank {set|get}_property/change_state/finalize methods. 2009-04-18 18:51:27 +02:00
Marco Ballesio 94d5d24cf0 qtdemux: implement 3GPP (TS 26.244 V8.0.0) Asset metadata handling, Fixes #132193
Implements 3gpp iso metadata tags which are different from mov udta atoms.
2009-04-15 20:14:19 +03:00
Zaheer Merali 988a4c6532 Fix grammar. 2009-04-03 09:57:15 +01:00
Stefan Kost 0889ac1092 qtdemux: don't use ininitialized var in debug log statement
Also make the log statement useful by printing the human readable format name.
2009-03-31 16:22:42 +03:00
Stefan Kost f4f6d9799c qtdemux: don't leak atom data in case of a wrong fourcc 2009-03-31 12:01:21 +03:00
Mark Nauwelaerts 3360f449c0 qtdemux: some stream synchronization to aid seeking in unbalanced clips
Some clips (trailers) may have (length-wise) unbalanced streams,
which stalls the pipeline if seeking into that region.
Additional stream synchronization can handle this, as well as
sparse (subtitle) streams (at some later time ?)
2009-03-26 14:39:06 +01:00
Mark Nauwelaerts a5502c9b37 qtdemux: additional safety and sanity checks (push based mode) 2009-03-26 14:38:02 +01:00
Tim-Philipp Müller 2199592039 i18n: make sure gettext gives us UTF-8 at all times 2009-03-25 15:42:15 +00:00
Mark Nauwelaerts cfb39dbb1b qtdemux: handle FLUSH_STOP event
Clean up some state (most notably pad flow returns) to resume
proper streaming following flushing seek.
2009-03-24 15:48:26 +01:00
Mark Nauwelaerts cc1a869a2c qtdemux: support seeking in push based mode 2009-03-20 17:59:38 +01:00
Mark Nauwelaerts d5120cda4b qtdemux: align push based behaviour more with pull based
Cater for DELTA_UNIT flag on buffers, keep track of current
position, remove and warn about edit lists if any (as those
as are de facto discarded anyway), add some debug statements
and indent fixes.
2009-03-20 17:59:35 +01:00
Mark Nauwelaerts 21fc435c71 qtdemux: fix mem leaks and prevent excessive buffering in push based mode 2009-03-20 17:59:32 +01:00
Wim Taymans af7aaef37a qtdemux: sanitize tag names
Sanitize the tag names before turning them into a structure name. We can only
add alphanumeric values as the structure name.
2009-03-09 15:20:05 +01:00
Edward Hervey 6512b3eb81 qtdemux: Also use "(c)inf" to fill the comment tag 2009-02-24 14:41:26 +01:00
David Schleef 40bd377230 qtdemux: Add handling for stps atoms
stps atoms contain "partial sync" information, which means that it's
a sync point where pts != dts.  This is needed to properly handle
MPEG2, H.264, Dirac, etc., in quicktime.
2009-02-06 16:21:58 -08:00