Commit graph

182 commits

Author SHA1 Message Date
Sebastian Dröge
61c2b173c6 mpegtsdemux: Mark array static const and use G_N_ELEMENTS instead of sizeof 2010-12-15 20:49:57 +01:00
Janne Grunau
431ea2c697 mpegtsdemux: add DESC_DVB_SUBTITLING descriptor for language parsing 2010-12-15 20:47:25 +01:00
Janne Grunau
eaf1b316b0 mpegtsdemux: enable gather_pes only for DVB subtitle private streams 2010-12-15 20:47:25 +01:00
Mart Raudsepp
1db547f0b6 gstmpegtsdemux: add temporary **HACK** for dvb subs testing so dvbsuboverlay gets whole packets
<tpm> leio, what's the mpegts demux hack about?
<leio> my libdvbsub code can't handle cut packets
<leio> so the hack instructs the demuxer to gather full packets before pushing down, but it applies that to more PES packet types than just dvbsub, but I'm not sure if that's a bad thing
<leio> either way, needs a cleaner solution, either in demuxer, or I need to handle cut packets
<tpm> ok, but really it should be fixed in the overlay, right?
<tpm> or a parser be inserted
<leio> the problem is that I don't know from the first packet beforehand if it is a cut one or no
<leio> not
<leio> err, first buffer
<leio> just when I receive the next one I see if it has a valid timestamp on it or not
<leio> so I can't very well queue it up in the chain either, I might be blocking the very last subtitle for no reason or something
<tpm> but you could just drop/ignore packets until you find one, right?
<leio> find what?
<tpm> a complete packet?
<leio> the problem isn't that they aren't complete
<leio> the problem is that they are cut across multiple GstBuffers by the demuxer without the hack
<tpm> sure, I understand that
<tpm> but you can't easily determine if a GstBuffer contains he start fragment of a packet or not?
<leio> I guess I could parse the packet and see if its length is enough, just like the libdvbsub code eventually does too
<leio> I can, it has a timestamp if it's the first chunk
<leio> I just never know if I need to wait for more, without some parsing
<tpm> ah ok
<leio> while the demuxer could just give me an uncut one in the first place
<leio> like it always does for program streams
<leio> that gather_pes is always set in gstmpegdemux, but not in gstmpegtsdemux
2010-12-08 16:30:09 +01:00
Andoni Morales Alastruey
e307bfe6e6 mpegtsparse: Create a sub-buffer with the section length 2010-11-23 11:26:56 +01:00
Alessandro Decina
b005ed2197 mpegtsparse: fix compiler warning 2010-11-19 18:51:32 +01:00
Andoni Morales Alastruey
fb9234de78 mpegtsparse: fix thinko 2010-11-19 18:33:10 +01:00
Andoni Morales Alastruey
b11f737096 mpegtsparse: fix handling of TOT and TDT sections. Fixes #635281.
TDT and TOT sections, with PID=0x14, doesn't extend to several packets
and the section filter is not needed here and shouldn't be used at all
for these tables because the have a different structure.
For example, TDT tables were not parsed for odd hours because this bit
is the 'current_next_indicator' bit for the other sections, and the table
was discarded.
2010-11-19 18:11:50 +01:00
Andoni Morales Alastruey
2611b12970 mpegtsparse: don't calculate the CRC for TOT tables. Fixes #635281.
TOT tables, with table_id=0x73, don't have a CRC, so don't calcute it
2010-11-19 18:10:47 +01:00
Andoni Morales Alastruey
891e08f220 mpegtsparse: send TDT tables messages in a serialized event downstream
https://bugzilla.gnome.org/show_bug.cgi?id=633917
2010-11-03 04:48:00 +00:00
Sebastian Pölsterl
13431420eb mpegtsparse: Add tag event emission. Fixes #627253 2010-10-28 11:45:46 +01:00
Stefan Kost
0c22e1b954 various (gst): add missing G_PARAM_STATIC_STRINGS flags
Canonicalize property names as needed.
2010-10-19 15:47:17 +03:00
Sebastian Dröge
f407d51ae8 mpegdemux: Don't use GST_FLOW_IS_FATAL()
And fix some minor issues related to its usage.
2010-09-21 12:26:35 +02:00
Zaheer Abbas Merali
c7b195740e mpegtsparse: actually work when we have small buffers coming in
available_fast is not what we want and it will never get to discover packet
size if 188 byte buffers are being picked up.
2010-07-29 10:38:58 +01:00
Sebastian Pölsterl
61a8856133 mpegtsparse: don't free PAT structure which may still be needed later
This is a problem if you tune to a channel which uses pid X and later tune to
another channel where X is used for another table (e.g. PMT).

The code that does that was actually already there but never used because the
pat structure was freed before. The commit that introduced those lines intended
to fix a memory leak, but we clean things up elsewhere.

Fixes #622725.
2010-06-30 18:27:16 +01:00
Thijs Vermeir
ba39867606 mpegdemux: improve debug output 2010-06-17 10:52:31 +02:00
Sebastian Dröge
b1a12c3a2d mpegtsdemux: Don't use liboil functions
glibc memcpy() will be faster than liboil's/orc's for now anyway
and we can use orc's later, after orc has support for loop unrolling.
2010-06-14 14:48:02 +02:00
Arun Raghavan
e5a37377ae mpegtsdemux: Some checks to avoid asserts
gst_mpeg_descriptor_find() expects the description field to be non-NULL.
This fixes a couple of calls where the value being passed is not
verified to be non-NULL first.

https://bugzilla.gnome.org/show_bug.cgi?id=620456
2010-06-03 20:11:29 +02:00
Sebastian Pölsterl
58b926b978 mpegtspacketizer: fix minor memory leak
Don't leak language code.

Fixes #619444.
2010-05-23 19:20:31 +01:00
Zaheer Abbas Merali
5208d030b3 mpegtsdemux: fix memory corruption when parsing adaptation field 2010-05-17 16:26:03 +01:00
Zaheer Abbas Merali
d2bd939899 mpegtsparse: parse TDT table in mpegts.
Some tables in MPEG-TS do not have a crc in the spec, so also mpegtsparse
is not calculating crc for sections with table_id 0x70 - 0x72 because they
do not have a CRC in the spec. See EN300468. Parse Time and Date table and
output bus message.
2010-05-12 13:00:16 +02:00
Sebastian Dröge
5a51dbd093 mpegdemux: Use GST_FLOW_CUSTOM_SUCCESS instead of some integer
Fixes compiler warning with gcc 4.5.
2010-04-16 19:43:59 +02:00
Sebastian Dröge
2908515bd4 Revert "mpegpsdemux: Workaround new gcc 4.5 compiler warning"
This reverts commit a331228ecc.
2010-04-16 19:42:00 +02:00
Sebastian Dröge
a331228ecc mpegpsdemux: Workaround new gcc 4.5 compiler warning
gcc 4.5 warns when comparing some integer with an enum value, in
the case of GstFlowReturn this is valid though. We should later
add GST_FLOW_CUSTOM_OK1, GST_FLOW_CUSTOM_OK2, etc. after new core
is released.
2010-04-15 21:26:45 +02:00
Sebastian Dröge
1306160b79 mpegtsdemux: Add support for BlueRay style DTS
Fixes bug #614259.
2010-04-05 10:33:26 +02:00
Sebastian Dröge
074d20cf99 mpegtsdemux: Add support for the two DTS HD stream types
Fixes bug #614259.
2010-04-04 20:23:00 +02:00
Sebastian Pölsterl
d7ab75abb8 mpegtspacketizer: Additionally use the CRC to check if tables are duplicates
The current code just uses table id, subtable extension and version number to
check if the section has been seen before. However, this comparison is not
sufficient, causing actually new tables being dismissed.

Fixes bug #614479.
2010-04-02 19:52:25 +02:00
Sebastian Dröge
129042b65c mpegtsparse: Make sure that the buffer metadata is writable before setting caps
Fixes bug #614349.
2010-04-02 19:19:23 +02:00
Tim-Philipp Müller
eb34b2015b mpegtsdemux: add missing space to debug message 2010-03-26 12:04:48 +00:00
Benjamin Otte
240f494aa7 Add -Wold-style-definition
and fix the warnings
2010-03-22 16:56:03 +01:00
Benjamin Otte
33c2f5fb01 Add -Wwrite-strings
and fix its warnings
2010-03-22 13:16:33 +01:00
Benjamin Otte
b7655bbd2e Add -Wredundant-decls flag
and fix warnings from it
2010-03-22 12:05:59 +01:00
Benjamin Otte
f96e4f1581 Add -Wmissing-declarations -Wmissing-prototypes to configure flags
And fix all warnings
2010-03-21 21:39:18 +01:00
Benjamin Otte
775c7584fd gst_element_class_set_details => gst_element_class_set_details_simple 2010-03-18 22:46:41 +01:00
Tim-Philipp Müller
cadb0526d5 mpegtsdemux: fix minor memory leak in property getter
Don't leak the string returned by g_strjoinv(). While we're at it,
use GString to assemble the string to be returned.
2010-03-15 19:21:52 +00:00
Sebastian Dröge
e1c1a6c874 mpegtsdemux: Never flush more bytes than available
This could happen if the input doesn't contain any MPEG TS
data and the complete adapter content should be skipped.
2010-02-09 15:24:28 +01:00
b3f0b029f3 win32: Include config.h before anything else. Fix mpegdemux LIBADD
Because config.h defines __MSVCRT_VERSION__, which should be defined
before inclusion of any system header.

Also fixes mpegdemux Makefile.am LIBADD typo.

Fixes #606665
2010-01-12 12:31:56 +01:00
Linqiang Pu
d68c2d4ab9 mpegdemux: fix allignment issue
Use GST_READ_UINT32_BE instead of GUINT32_FROM_BE to
fix int allignment issues on ARM

Fixes #606371
2010-01-10 10:09:55 -03:00
Tim-Philipp Müller
b32305d015 mpegtsdemux: fix language extraction
The descriptor contains ISO 639-2 language codes, but we want
two-letter ISO 639-1 codes in GST_TAG_LANGUAGE.
2010-01-06 01:57:01 +00:00
Arnaud Patard
24965dc415 mpegtsdemux: Handle eac3 in PMT
When the stream type is set to private data, gst-mpegtsdemux is trying to find
audio descriptors in PMT and look for AC3 (tag 0x6a) but doesn't look for EAC3
(tag 0x7a). Handle this case too.

Fixes bug #605904.
2010-01-04 10:15:29 +01:00
Xavier Queralt Mateu
b6b1658e97 Expose lang codes in pmt 2009-11-24 10:14:49 +00:00
Edward Hervey
ba460f587a mpegdemux: Fix pointer-differences printout
There is unfortunately no G_*_FORMAT conversion specifier for differences of
pointers in glib, and we can't rely either on all platforms being 64bit.

So let's just cast the difference to a gint and be done with it.
2009-11-04 17:45:34 +01:00
Jan Schmidt
91499fd9a7 mpegtsdemux: Don't send new-segment with start time == -1
When sending new-segment to a stream, ensure that there is either a valid
PCR, or else wait until there's a PTS on the stream (dropping packets if
needed) in order to avoid generating an invlaid new-segments event.

https://bugzilla.gnome.org/show_bug.cgi?id=595161
2009-10-29 10:53:10 +00:00
Josep Torra
3fedf9e9a5 mpegdemux: fix warnings in macosx snow leopard 2009-10-11 12:56:29 +02:00
Sebastian Pölsterl
bf3cf014ab mpegtsparse: Ignore emphasis on/off bytes, and do fallback string encoding.
For fallback, try ISO 8859-9 encoding if ISO 6637 failed.
Add more debug calls.
2009-10-06 17:46:36 +01:00
Alessandro Decina
a17393fd34 Fix warnings with gcc 4.0.1. 2009-09-23 12:34:47 +02:00
Edward Hervey
4ceb3c5678 mpegtsparse: Specify that psi table is static const.
This avoids re-allocating it every single time we go into it.
Roughly 10% performance boost in overall tsparse processing time.
2009-09-21 12:13:03 +02:00
Zaheer Abbas Merali
bf34bdd3ab Revert "mpegtsparse: use fixed size array rather than dynamically allocating"
This reverts commit ae75b6f366.
2009-09-20 17:53:24 +01:00
Zaheer Abbas Merali
ae75b6f366 mpegtsparse: use fixed size array rather than dynamically allocating 2009-09-20 15:32:14 +01:00
Zaheer Abbas Merali
f9c4b3cce9 mpegtsparse: replace streams hashtable with an array of streams 2009-09-20 15:23:44 +01:00