Commit graph

4748 commits

Author SHA1 Message Date
Edward Hervey e2576f0e86 mpegtsdemux: Also parse TOT (Time Offset Section)
It's the same as TDT, except with descriptors at the end
2012-06-05 10:54:27 +02:00
Edward Hervey d9121c38ea mpegtsdemux: FIXME/Comment about issues/errors 2012-06-05 10:54:26 +02:00
Edward Hervey 9e117b83fc mpegtspacketizer: Fix leak 2012-06-05 10:54:26 +02:00
Edward Hervey 5f7ecaa0f1 mpegtspacketizer: Reduce usage of GstAdapter
Peek as much as possible in one go. Ideally we should remove usage of
adapter altogether, but for the time being it provides a big enough
speedup (around 2 times faster per packet processed).
2012-06-05 10:54:26 +02:00
Edward Hervey f0867c7247 mpegtspacketizer: Avoid alloc/free where possible
Helps for streams with a lot of sections, like EIT
2012-06-05 10:54:26 +02:00
Edward Hervey aab8c46f10 mpegtbase: Add more sections that don't have a CRC 2012-06-05 10:54:26 +02:00
Edward Hervey 25f6c78d79 mpegdefs: Add list of known table_id
Along with the specifications from which they come. Avoids having
to search for which spec a table_id belongs to
2012-06-05 10:54:26 +02:00
Edward Hervey 0e86e68c6a mpegtspacketizer: Clarify debug statements
Use hex values in more cases (since that's how PID/table_id/... are
represented in the various specs).
2012-06-05 10:54:26 +02:00
Edward Hervey 63f8b970af mpegtsbase/packetizer: Add CAT section handling
Allows reporting the global EMM
2012-06-05 10:54:25 +02:00
Edward Hervey dfe6863387 mpegtbase: Add more debug in PSI handling
Allows us to identify which SI we don't handle
2012-06-05 10:47:49 +02:00
Edward Hervey d47d1713d9 mpegtbase: Add more default known PSI table_id 2012-06-05 10:47:49 +02:00
Edward Hervey 9924c178c8 mpegtbase: Refactor PSI detection 2012-06-05 10:47:49 +02:00
Sebastian Dröge 7c6093357b videoparsers: Fix GstBaseParse::get_sink_caps() implementations
They should take the filter caps into account and always return
the template caps appended to the actual caps. Otherwise the
parsers stop to accept unparsed streams where upstream does not
know about width, height, etc.

Fixes bug #677401.
2012-06-05 09:30:00 +02:00
Edward Hervey 9f7e70f754 mpegtbase: ECM/CA sections don't have a CRC
So don't check for it :)

Also add a bit more info in the warning message to speed up detecting
whether it's a false-positive or not.
2012-06-01 16:42:41 +02:00
Edward Hervey 8b2f229553 mpegdesc: Add more comments/info
Namely where they belong to
2012-05-26 15:54:51 +02:00
Edward Hervey 8aa64c5d7d tsdemux: Make sure we have a language code before using it 2012-05-26 15:54:48 +02:00
Edward Hervey 7784c0d350 mpegtsbase: Check before getting descriptors from structure
Avoids spurious warnings. Not having those descriptors is nothing
fatal, so check their presence before trying to get them.
2012-05-26 15:54:44 +02:00
Edward Hervey b6732a27d3 pesparse: Be a bit more permissive with PTS/DTS parsing
According to the specifications a PTS_DTS_flags value of 0x01 is forbidden.
... but there are some rare files out there that do that.

Instead of erroring out, let's warn, carry on parsing accordingly.

If the packet is really corrupted there are enough checks afterward to
detect that.
2012-05-26 15:54:41 +02:00
Edward Hervey 12f24874aa mpegtsbase: Fix bit operation
"a % 8" corresponds to "a & 0x7" (and not 0xf).

spotted by Julian Scheel
2012-05-25 14:16:59 +02:00
Edward Hervey a633347ed1 mpegtsbase: Speed up _is_psi()
By making it inline and simplifying the bit macros
2012-05-23 09:37:49 +02:00
Mark Nauwelaerts c5664dcda7 mpegvideoparse: avoid scanning for start codes twice
... since a previous terminating start code serves as subsequent start code.
2012-05-22 21:34:10 +02:00
Julian Scheel a0a184931a tsdemux: Add language code to taglist.
Read the language codes for tracks from the mpegts descriptors and add it into
the pads taglist.

https://bugzilla.gnome.org/show_bug.cgi?id=673896
2012-05-22 18:13:30 +02:00
Edward Hervey 6bf54ff850 tsdemux: Adapt to new packetizer API
We no longer use GstBufferList and instead copy the incoming data
into newly allocated memory.

This makes tsdemux behaviour 3 to 4 times faster.
2012-05-22 17:43:38 +02:00
Edward Hervey 7fdf1cb0c8 tsparse: Adapt to new packetizer API 2012-05-22 17:43:38 +02:00
Edward Hervey 3c73d29162 mpegtsbase: Adapt to new packetizer behaviour 2012-05-22 17:43:38 +02:00
Edward Hervey c6035d403c mpegtspacketizer: Avoid usage of GstBuffer internally
The overhead of creating/using 188 byte GstBuffer from GstAdapter
is too expensive.
We now peek the next packet, and provide a data/size which is only
valid until the packetizerpacket is cleared.

In addition, cleanup all the internal code to deal with that new
behaviour and remove double-checks which are no longer needed.

The section_length is now the corrected section_length (i.e. with
the additional 3 bytes).

Avoid using gst_adapter_prev_timestamp and instead track
the timestamp ourself.
2012-05-22 17:43:38 +02:00
Edward Hervey 6d01f5f1b3 mpegtspacketizer: Detect PCR wraparound in skew code
If the received PCR is going backwards (by a safe margin), include
that wraparound for further calculation.

https://bugzilla.gnome.org/show_bug.cgi?id=674536
2012-05-22 16:51:25 +02:00
Mark Nauwelaerts 09209045b6 videoparsers: avoid repeated caps setting 2012-05-22 14:49:18 +02:00
Mark Nauwelaerts 28f3858b94 mpegvideoparse: tweak codec parser API and adjust parser element
... to allow for more efficient parsing and (more) consistent parsing API
among various codec parsers.

Fixes #672701.

Conflicts:

	gst/videoparsers/gstmpegvideoparse.c
2012-05-22 14:09:47 +02:00
Sebastian Dröge b5f5b8bf04 frei0r: Double properties are supposed in the range [0.0, 1.0]
Fixes bug #676137.
2012-05-22 11:20:06 +02:00
Mark Nauwelaerts 1f0c18daf2 mpegvideoparse: unobfuscate frame parsing
... and add comments and debug statements.

Fixes #674202.

Conflicts:

	gst/videoparsers/gstmpegvideoparse.c
2012-05-21 20:31:27 +02:00
Mark Nauwelaerts 35a58df012 mpegvideoparse: Revert "fix crash"
This reverts commit 91210831ee672343a296f31357144359d5c2e768.

Such explicit reset should not be needed as it is arranged for by
the baseclass in unison with monitoring for a new frame by subclass.

As such it might wrongfully hide something else going on ...

See #674073.
2012-05-21 20:25:01 +02:00
Tim-Philipp Müller 508b9ff51a autoconvert: don't access GstElementFactory structure directly 2012-05-19 15:34:25 +01:00
Julian Scheel 5536bcf8b8 tsdemux: flush on pusi only for payload packets
Data should not be flushed out of the tsdemux because a payload unit start
indicator (pusi) is seen in a adaptation only ts packet. If the package contains no
payload a pusi does not indicate a new PES packet, but PSI information, etc.
This fixes playback of several TS files which contain ts packets without
payload but with pusi set to 1.

https://bugzilla.gnome.org/show_bug.cgi?id=676168
2012-05-18 11:12:20 +02:00
Edward Hervey e75612c3fd tsdemux: Don't queue data for streams that don't have a pad
This would result in an error further down, and it also avoids processing
for that data which we wouldn't be using anyway.
2012-05-18 11:11:37 +02:00
Edward Hervey 8a4fd8358d tsdemux: Detect and handle scrambled packets
Users (tsdemux/mpegtsparse) can decide what to do with that
2012-05-18 11:11:31 +02:00
Edward Hervey fa4b92e743 tsdemux: Emit no-more-pads when all pads are activated
Fixes #670921 again
2012-05-18 11:11:25 +02:00
Luis de Bethencourt 94f370c7d7 gaudieffects: add fallback code for orc
this includes an improved version of the burn filter, with a ~40% speed
improvement.
2012-05-17 11:15:22 +01:00
Luis de Bethencourt e044e0fab4 gaudieffects: use CLAMP in solarize
No need to have a gate_int () function duplicating the already existing and
established CLAMP () function.
2012-05-17 10:54:31 +01:00
Luis de Bethencourt 9cb4f4e622 gaudieffects: use CLAMP in exclusion
No need to have a gate_int () function duplicating the already existing and
established CLAMP () function.
2012-05-17 10:54:31 +01:00
Luis de Bethencourt 4990dc2d1f gaudieffects: use CLAMP in dodge
No need to have a gate_int () function duplicating the already existing and
established CLAMP () function.
2012-05-17 10:54:31 +01:00
Luis de Bethencourt cb3d1794f8 gaudieffects: use CLAMP in chromium
No need to have a gate_int () function duplicating the already existing and
established CLAMP () function.
2012-05-17 10:54:31 +01:00
Mark Nauwelaerts 7f72b99426 h264parse: also consider nal_length_size when inserting codec data
See #676174.
2012-05-17 11:47:19 +02:00
John Hein 6e78920416 y4m: link against the right libgstvideo
https://bugzilla.gnome.org/show_bug.cgi?id=676189
2012-05-16 21:50:48 +01:00
Luis de Bethencourt 5800315447 gaudieffects: example pipelines with videoconvert 2012-05-16 17:56:58 +01:00
Luis de Bethencourt ad4ffc446f gaudieffects: orc-ify burn filter 2012-05-16 17:56:58 +01:00
Stefan Sauer 5b39799cf0 hls: use gst api for timestamps instead of the (wrong) api from a too new glib
Conflicts:

	gst/hls/gstfragment.c
2012-05-15 16:08:00 +02:00
Mark Nauwelaerts 74c73eba05 mpegtsmux: optimize output by aggregating packets
... rather than pushing each (small) packet in a separate buffer.
m2ts mode not yet optimized though.
2012-05-14 11:52:29 +02:00
Albert Astrals Cid dda551e723 mpegts: support items in extended event descriptor
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=672478
2012-05-14 11:51:15 +02:00
Luis de Bethencourt e9cba00c6a gaudieffects: consistency in templates name 2012-05-10 21:37:59 +01:00