Commit graph

328 commits

Author SHA1 Message Date
Mark Nauwelaerts 955a719c1a qtdemux: provide language tag for stream 2009-10-09 17:49:17 +02:00
Mark Nauwelaerts 1210a92ff6 qtdemux: refactor common parts in track parsing 2009-10-09 17:49:14 +02:00
Mark Nauwelaerts 5ed2c3e562 qtdemux: refactor buffer processing and sending
... so it can be used in both pull and push based mode.
2009-10-09 17:49:12 +02:00
Mark Nauwelaerts 674b0c4289 qtdemux: extract palette data for dvd subpicture streams
... and send it downstream using custom dvd event
2009-10-09 17:49:10 +02:00
Mark Nauwelaerts b2d70862e8 qtdemux: support 3GPP timed text subtitles
In particular, also make subtitle support less subp(icture)-centric.
2009-10-09 17:49:06 +02:00
Mark Nauwelaerts faaa32dccb qtdemux: NULL is not a valid taglist 2009-10-09 17:49:04 +02:00
Mark Nauwelaerts 533106203c qtdemux: recognize some more encypted track cases 2009-10-09 17:49:02 +02:00
Josep Torra c3d3eb6c3b qtdemux: fix warnings building on macosx 2009-10-09 11:54:03 +02:00
Stefan Kost e0cdd879b4 build: fprintf, sprintf, sscanf need stdio.h 2009-10-07 14:03:20 +03:00
Tim-Philipp Müller 45ff905771 qtdemux: make sure compatible brands buffer exists before dereferencing it 2009-10-05 11:46:08 +01:00
Robert Swain c7b5df91a9 qtdemux: fix printf warnings on OSX
Cast variables passed to printf to avoid warnings about incorrect
formats (most likely caused by sizeof returning a size_t).

Fixes #597348.
2009-10-05 00:35:15 +01:00
Tim-Philipp Müller 4590daf202 qtdemux: remove internal genre table
No need to maintain our own genre table in qtdemux. The genres are
identical to the ID3 genres, so we can just use libgsttag's
gst_tag_id3_genre_get() to look them up.
2009-10-05 00:26:44 +01:00
Mark Nauwelaerts 0fac7b5347 qtdemux: some optional QT specified stsd MPEG-4 atoms also apply to H264
Fixes #596319.
2009-09-25 19:23:15 +02:00
Mark Nauwelaerts e21d16a4f8 qtdemux: only send tag events downstream after newsegment 2009-09-25 16:47:42 +02:00
Wim Taymans 03f46a42e5 qtdemux: add durations modulo 1<<32
For calculating the durations of each sample, we are supposed to add each
duration modulo 1<<32 so make the elapsed time counter a uint32.

Fixes #595942
2009-09-25 11:54:06 +02:00
Wim Taymans 4e114a2b24 qtdemux: small cleanup 2009-09-24 20:38:54 +02:00
Tim-Philipp Müller 0f197776e1 qtdemux: add qt_atom_parser_has_chunks() and fix indentation 2009-09-24 16:32:02 +01:00
Tim-Philipp Müller f65e6ea3a1 qtdemux: bail out instead of trying to alloc silly index sizes
If it looks like we would be allocating a silly size for our sample
index, just bail out instead of trying to allocate it. Helps with
broken or fuzzed files where we might end up trying to malloc a
couple of hundred MBs otherwise.
2009-09-24 16:29:26 +01:00
Tim-Philipp Müller abaf91e428 qtdemux: error out correctly if we don't even have enough bytes for an atom header 2009-09-24 16:29:25 +01:00
Tim-Philipp Müller 25db7df49b qtdemux: init fourcc to 0 as well to avoid invalid reads when printf'ing error message 2009-09-24 16:29:25 +01:00
Tim-Philipp Müller 9da3ed6491 qtdemux: add qt_atom_parse_has_remaining() to avoid overflows with _get_remaining() 2009-09-24 16:28:40 +01:00
Tim-Philipp Müller a16feec38e qtdemux: use GstByteReader when parsing tkhd atom 2009-09-23 16:54:43 +01:00
Tim-Philipp Müller 6b7f4f5e23 qtdemux: use unsigned ints for node length and do more sanity checking of the atom length 2009-09-23 16:54:43 +01:00
Tim-Philipp Müller c8c9b0f35d qtdemux: move stco, stts, stss and stps atom parsing over to GstByteReader
Make sure we don't read beyond the atom boundary. Note that the code
behaves slightly differently in the corner case where there is not
enough atom data for the specified number of samples (n_samples_time)
in the atom, but still enough data to fill the pre-allocated index of
n_samples entries: before we would just stop parsing the stts data
and continue, whereas now we will likely error out. This should not
be a problem in practice though. We could maintain the old behaviour
by doing reads with a size check inside the loop if needed.
2009-09-23 16:54:42 +01:00
Tim-Philipp Müller 4be46b1586 qtdemux: use bytereader to parse stsz and stsc atoms
Use GstByteReader to parse stsz and stsc chunks, and check size of
available data before parsing it, instead of blindly assuming there
will be enough data. Fixes crashes with some fuzzed/broken files.
2009-09-23 16:54:42 +01:00
Tim-Philipp Müller 410ebb7eb3 qtdemux: add QtAtomParser, an inlined GstByteReader variant 2009-09-23 16:54:41 +01:00
Mark Nauwelaerts 868a4b1303 qtdemux: prevent a spurious debug warning 2009-09-04 13:51:25 +02:00
Sebastian Dröge e7efa0a5be qtdemux: Add support for QCELP audio
Fixes bug #593757.
2009-09-01 10:26:46 +02:00
Mark Nauwelaerts 15fa7d33ed qtdemux: also extract ftyp info in push mode 2009-08-31 16:50:01 +02:00
Mark Nauwelaerts c469f6b38d qtdemux: consider 3gpp style tag parsing in some more cases
3GPP specs define a number of tags along with precise layout. While these
are normally expected to be found in a container whose major brand is a
3GPP brand, this may also happen when a 3GPP brand is only mentioned as a
compatible brand.  Apply some checks, heuristic and fallbacks to extract
such tags as well.
2009-08-31 16:50:00 +02:00
Wim Taymans e9e94a771b qtdemux: add support for agsm
Fixes #592530
2009-08-21 11:44:43 +02:00
Mark Nauwelaerts 15d17763c0 qtdemux: fix qt style string tag extraction
QT style tags are tested on starting with (C) symbol using >>,
and (unsigned) int (may) have different >> behaviour.
Fixes #592232.
2009-08-18 19:01:11 +02:00
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