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
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
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
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
Raimo Järvi
93ad7a4d06
Fix printf format compiler warnings on mingw-w64
...
https://bugzilla.gnome.org/show_bug.cgi?id=675520
2012-05-05 19:45:42 +01:00
Wim Taymans
7394deef33
tsbase: unref bad packets too
...
Conflicts:
gst/mpegtsdemux/mpegtsbase.c
2012-05-01 11:50:39 +02:00
Wim Taymans
b56ab4b3cf
tsdemux: reset the state of the stream when flushing
...
We need to reset the stream on a flush or else old packets could be added to the
list and leak.
2012-05-01 11:47:52 +02:00
Wim Taymans
eaf4d97815
mpegtsbase: don't push events upstream in pull mode
...
In pull mode, don't push the seek event upstream.
2012-05-01 11:43:07 +02:00
Wim Taymans
6bf0ebdcd8
mpegts: don't poke into private adapter fields
2012-05-01 09:41:18 +02:00
Wim Taymans
8da3c2a969
mpegtsdemux: we ignore warnings differently
...
We suppress the warnings in the .c file instead.
2012-04-20 11:25:31 +02:00
Gil Pedersen
fcd8155d87
mpegtsdemux: port to 0.11
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674397
2012-04-20 11:25:31 +02:00
Wim Taymans
5bd76c7c97
mpegtsbase: clarify event ownership
2012-04-20 11:25:31 +02:00
Gil Pedersen
095a17ad03
mpegtsdemux: fix memory leaks
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674393
2012-04-20 11:25:31 +02:00
Julian Scheel
1059905237
tsdemux: Set currentlist to NULL after free.
...
This prevents double free of currentlist is some circumstances.
2012-04-18 09:30:22 +02:00
Sebastian Dröge
cda192b3b7
gst: Update for GST_PLUGIN_DEFINE() API changes
2012-04-05 18:02:56 +02:00
Alessandro Decina
f4b292f994
tsdemux: set correct newsegment fields on _TIME seeks
...
Forward the seek rate and set NS.start to the seek target so that decoders can
apply clipping where necessary.
2012-04-05 09:16:07 +02:00
Sebastian Dröge
1318a97e0a
gst: Update versioning
2012-04-04 14:44:34 +02:00
Alessandro Decina
3b525d1147
tsdemux: reset iterator to NULL after it's free
...
Fixes possible invalid memory access in gst_ts_demux_stream_flush
2012-04-04 07:24:28 +02:00
Edward Hervey
6800d0c4e0
tsdemux: Clear bufferlist/iterator when removing streams
2012-04-02 15:26:28 +02:00
Edward Hervey
dd6550a663
mpegtspacketizer: Don't leak buffer in fast variant
2012-04-02 15:25:46 +02:00
Edward Hervey
cd728627af
mpegtsbase: Don't leak corrupt section packet buffer
2012-04-02 15:25:16 +02:00
Edward Hervey
881350f34c
tsdemux: Fix several leaks
...
* dont' leak buffers when a stream is in discont state
* don't leak buffers when a program is removed/deactivated
* remove all programs when disposing
2012-03-30 19:20:17 +02:00
Edward Hervey
416b10b991
mpegtspacketizer: Handle rollover in offset calculations
2012-03-05 12:46:13 +01:00
Edward Hervey
d798cb7be3
tsdemux: printf fix
2012-03-05 11:27:51 +01:00
Edward Hervey
bb479b04c1
tsdemux: Update TODO
2012-03-05 10:17:56 +01:00
Edward Hervey
85878c142e
mpegts: Switch rank of mpegtsdemux and tsdemux
...
More effort has been put lately in tsdemux and works in more use cases
2012-03-05 09:46:17 +01:00
Edward Hervey
c557f71756
tsdemux: Push packets as early as possible
...
When the PES header tells us how big the outgoing packet is, push the
packet downstream as soon as we have the specified size instead of waiting
for the beginning of the next packet.
Reduces latency and removes issues with very sparse streams (like subtitles
and subpictures).
2012-03-05 09:41:48 +01:00
Tim-Philipp Müller
0bb5a01639
tsdemux: fix confusing variable name
2012-03-03 15:47:01 +00:00
Edward Hervey
01f5f62d95
tsdemux: Fix segment start position
...
If we *really* can't figure out the first start position, that most
likely means the data to push out doesn't have any timestamp.
Use a default value of 0 then
2012-03-02 17:19:45 +01:00
Edward Hervey
a3ae51be29
mpegtsbase: Flush out the packetizer on flushing seeks
...
... else we end up with bogus data/offsets
2012-03-02 17:19:45 +01:00
Thibault Saunier
ece4dfc3c6
tsdemux: Activate pads only when receiving data for the stream
...
https://bugzilla.gnome.org/show_bug.cgi?id=670921
2012-03-02 17:19:45 +01:00
Edward Hervey
671550714f
mpegtsbase: Check harder for program changes
...
And don't just rely on the section crc/version_number changing to
indicate that the program actually changed.
2012-03-02 10:54:48 +01:00
Edward Hervey
097f09b823
mpegtsbase/tsdemux: Refactor seek and segment handling
...
All calculations go through the mpegtspacketizer
Remove unused variables/code
2012-03-01 18:15:51 +01:00
Edward Hervey
77ece06a3f
mpegtsbase: Error out on EOS without any pad
...
Avoids ending up with hanging pipelines
2012-03-01 18:15:51 +01:00
Edward Hervey
a4899af8d6
mpegtspacketizer: Offset calculation
...
Allows PCR<=>PTS<=>offset estimation/calculation
Right now the calculation is very naive, but can be extended later on
without disrupting the code in tsdemux/mpegtsbase
2012-03-01 18:15:51 +01:00
Edward Hervey
39cc29a7d2
mpegtspacketizer: clock fix and minor addition
...
* Don't take into account packets that arrived at the same time as
previous ones for clock skew estimation
* Add convenience method for processing the next ts packet
2012-03-01 18:15:51 +01:00
Edward Hervey
c10fc17a1e
Revert "mpegtsdemux: Not apply various time the same PMT to a program when repetead"
...
This reverts commit 8cb0e87f56
.
mpegtspacketizer already checks if it's a new PMT or not
2012-03-01 18:15:51 +01:00
Edward Hervey
d920d9d64f
tsdemux: Remove all seeking code
...
It was more than bogus
2012-03-01 18:15:51 +01:00
Thibault Saunier
5c2e6dc512
mpegtspacketizer: catch section lengths extending past the buffer length
...
This is probably the cause for an occasional crash while streaming
MPEG. Blind fix after staring at the code and following logic, so
may or may not fix the issue, I cannot test.
(Port of 4275a70cb5
from mpegdemux)
2012-02-27 09:57:45 -03:00