Edward Hervey
65ba9b4756
tsdemux: convert packet PTS/DTS as soon as possible
...
We let the mpegtspacketizer deal with pcr wraparound/resets.
https://bugzilla.gnome.org/show_bug.cgi?id=674536
2013-04-26 15:49:18 +02:00
Thiago Santos
d8b8809d57
tsdemux: Fix caps string leak
2013-04-24 12:28:17 +02:00
Greg Rutz
2306d51d9d
tsdemux: Add support for Motorola DigiCipher II MPEG2 video
...
Since there is a conflict between the DCII stream type and BluRay
stream types, moved the processing of BluRay-specific stream types
to the beginning of the function. Only if a BluRay stream type
IS NOT found do we proceed to check the rest of the stream type
identifiers
Previous code was also "sort-of" handling a similar conflict between
BluRay AC3 audio and standard AC3 audio. Moved the special case BluRay
AC3 handling in the main switch statement to the new BluRay-specific
switch.
https://bugzilla.gnome.org/show_bug.cgi?id=697892
2013-04-18 09:30:58 +02:00
Sebastian Dröge
2713fd1058
tsdemux: Check the continuity counter for non-section packets too
...
And if we detect a discontinuity there (like... when losing packets
or having MPEGTS over raw UDP with out-of-order packets) we just
drop the corresponding packet.
A future version could try to implement a re-ordering algorithm based
on that, similar to what rtpjitterbuffer does.
2013-04-11 13:11:44 +02:00
Edward Hervey
98265d0b28
tsdemux: Add support for TrueHD audio
2013-04-07 18:41:38 +02:00
Edward Hervey
ca3146a2cd
tsparse: Ensure segment events are forwarded
...
We skip them for tsdemux though (recreated later)
Fixes #690949
2013-03-30 13:54:37 +01:00
Douglas Bagnall
0c9db072ce
tsdemux: remove unused current_program_number field
...
https://bugzilla.gnome.org/show_bug.cgi?id=690934
2013-03-24 20:58:28 +00:00
Josep Torra
7fafbe2e22
tsdemux: expose VC1 streams with missing descriptor.
...
Fixes playback of VC1 streams when the descriptor is missing.
2013-02-05 23:07:12 +01:00
David Schleef
a19c0b5697
tsdemux: Add descriptors for SMPTE 302m audio
2013-02-04 18:07:17 -08:00
Matthias Hardt
0e3fdb1e16
tsdemux: extract ISO 639 language codes for subtitles into taglists
...
https://bugzilla.gnome.org/show_bug.cgi?id=680200
2012-12-28 23:32:55 +00:00
Josep Torra
3d012665f0
tsdemux: forward upstream time segments after flushes
...
Also reset segment info and drop the segment event when demuxer is
flushed.
Restore demuxer segment with the info stored in base when demuxer is
going to push data again if needed.
Drop code to recover the segment info from base in the initial program
becauses it's superseded by the new code.
2012-11-14 22:51:35 +01:00
Josep Torra
0b3e0ed080
tsdemux: reset the stream some more in the flushes
...
Now that we handle flushing in the FLUSH_STOP event we need to make
the streams ready if they were flushing.
2012-11-12 22:57:19 +01:00
Tim-Philipp Müller
9e1b75fda3
Fix FSF address
...
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:09:59 +00:00
Andoni Morales Alastruey
f768dfd925
tsdemux: fix potential crash dereferencing NULL program pointer
...
https://bugzilla.gnome.org/show_bug.cgi?id=686358
2012-10-18 17:54:41 +01:00
Tim-Philipp Müller
32ba17cd0f
Use gst_element_class_set_static_metadata()
...
where possible. Avoids some string copies. Also re-indent
some stuff. Also some indent fixes here and there.
2012-10-17 17:46:34 +01:00
Sebastian Dröge
e5eceaaa73
mpegtsdemux: First push EOS, then destroy all programs
...
And also properly remove the program from the subclass
2012-10-12 15:38:44 +02:00
Mark Nauwelaerts
578861abea
replace gst_element_class_set_details_simple with gst_element_class_set_metadata
2012-09-14 17:27:49 +02:00
Tim-Philipp Müller
2483c82bd7
video/x-dvd-subpicture -> subpicture/x-dvd
2012-08-20 23:37:00 +01:00
Edward Hervey
9abedc97ff
tsdemux: Always use current PTS/DTS
...
This avoids setting old PTS and/or DTS
2012-08-14 19:07:33 +02:00
Edward Hervey
d54624aa49
tsdemux: Remove useless code
...
PCR/OPCR is meant to be handled by the packetizer
2012-08-14 19:05:52 +02:00
Edward Hervey
4f55cc12ae
tsdemux: Calculate pcr/time/offset separately per program
...
Avoids quite a few issues with multi-program streams
2012-08-14 19:05:48 +02:00
Sebastian Dröge
bdc46898de
gst: Add stream-id to stream-start events
2012-08-06 14:05:08 +02:00
Sebastian Dröge
afd50a79f4
tag: Update for taglist/tag event API changes
2012-07-28 00:32:58 +02:00
Mark Nauwelaerts
76aedf5641
tsdemux: more correctly determine expected PES packet payload size
...
... particularly considering that packet_length == 0 is possible.
2012-07-12 10:17:57 +02:00
Mark Nauwelaerts
006fe188e7
tsdemux: correctly determine expected PES packet payload size
...
Avoids consistently failing to detect that a packet is complete, which
would then only be pushed upon the start of a next packet, which leads
to quite a delay in case of a sparse (subtitle) stream.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=666674
2012-07-11 20:43:46 +02:00
Edward Hervey
b5967d2323
tsdemux: Fix AAC LATM caps
2012-06-29 09:23:32 +02:00
Wim Taymans
b98ec32380
update for tag event change
2012-06-06 13:02:40 +02:00
Edward Hervey
8aa64c5d7d
tsdemux: Make sure we have a language code before using it
2012-05-26 15:54:48 +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
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
fa4b92e743
tsdemux: Emit no-more-pads when all pads are activated
...
Fixes #670921 again
2012-05-18 11:11:25 +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
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
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
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
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
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
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
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
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
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
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
d920d9d64f
tsdemux: Remove all seeking code
...
It was more than bogus
2012-03-01 18:15:51 +01:00
Thibault Saunier
f977d7e743
tsdemux: Avoid unlinkely leaks and segfault
2012-02-24 15:28:35 -03:00
Edward Hervey
b6d98aea5f
tsdemux: Use new clock skew estimation for outgoing timestamps
...
Only used in live mode
2012-02-24 17:53:52 +01:00
Edward Hervey
e6ff2f7b83
tsdemux: Various code cleanup and dead code removal
2012-02-24 17:52:33 +01:00
Thibault Saunier
48a699812b
tsdemux: Clean up AAC caps mess
2012-02-24 10:57:05 +01:00
Thibault Saunier
67fd590e9a
tsdemux: Support more DTS/AC3 descriptors
2012-02-24 10:56:58 +01:00
Edward Hervey
6ef0ae4ffe
tsdemux: Remove useless finalize()
2012-02-24 10:56:14 +01:00
Edward Hervey
8b73baeced
tsdemux: Use incoming timestamps in live mode
2012-02-23 16:39:48 +01:00
Edward Hervey
8f433e1677
tsdemux: Report latency (700ms)
2012-02-23 16:39:48 +01:00
Thibault Saunier
1182dd0c1b
tsdemux: Avoid throwing FLOW_ERROR on last PCR processing error
...
In the case of scanning last pcr, errors are not critical, so we keep
the stream flowing.
2012-02-15 15:48:44 -03:00
Thibault Saunier
cda0d3aed8
tsdemux: Add AAC latm support
2012-02-15 15:48:44 -03:00
Thibault Saunier
6094ec27b1
tsdemux: Minor refactoring/code cleaning
...
... add some debugging symbols in the mean time.
2012-02-15 15:48:44 -03:00
Vincent Penquerc'h
2dec0950cf
tsdemux: add explicit supported AAC stream-format in template caps
...
https://bugzilla.gnome.org/show_bug.cgi?id=665394
2012-02-02 12:37:02 +00:00
Mark Nauwelaerts
d8fdd3485b
mpegtsdemux: break out when stream identified
2012-01-23 14:22:18 +01:00
Edward Hervey
fcf511aa8f
tsdemux: Don't provide bogus values in non-TIME push-mode
...
Only take the upstream segment values in GST_FORMAT_TIME
2012-01-10 11:45:25 +01:00
Edward Hervey
24408bce96
tsdemux: Handle rollover in PTS and DTS
...
Also hands back-rollover which can happen with PTS
2012-01-10 11:45:22 +01:00
Vincent Penquerc'h
7521b597f4
various: fix pad template ref leaks
...
https://bugzilla.gnome.org/show_bug.cgi?id=662664
2011-11-28 13:08:27 +00:00
Edward Hervey
e500ec524c
tsdemux: Add notes on synchronization and scheduling
2011-11-16 12:47:58 +01:00
Youness Alaoui
894ac8f493
hlsdemux/tsdemux: Add HP copyright on work done on HLS
2011-09-09 12:12:12 +02:00
Youness Alaoui
59c61209cf
tsdemux: Need to flush all streams when we receive a flush-start
2011-08-30 16:17:47 +02:00
Sebastian Dröge
c86aba3469
tsdemux: Use FALSE instead of 0 for bool parameter
2011-08-24 09:35:18 +02:00
Youness Alaoui
744101a417
tsdemux: Need to send a newsegment after a seek
2011-08-24 08:12:29 +02:00
Youness Alaoui
cfd28a6f90
tsdemux: Forward seek/duration query/event to the sinkpad
2011-08-24 07:48:52 +02:00
Vincent Penquerc'h
66dbdfd4d1
tsdemux: do not try to compare a PCR with itself for statistics
...
Especially as one of the logs will cause a divide by zero.
https://bugzilla.gnome.org/show_bug.cgi?id=656927
2011-08-23 10:38:10 +02:00
Vincent Penquerc'h
b19a5ea1f3
tsdemux: do not keep a dangling pointer
...
When removing the current program, it will get freed by the
hash table removal callback, so ensure we clear our pointer
to it.
Fixes a crash later on in gst_ts_demux_push trying to access it.
https://bugzilla.gnome.org/show_bug.cgi?id=656927
2011-08-23 10:37:24 +02:00
Sebastian Dröge
a27b7b6712
tsdemux: First send SEEKING queries upstream
2011-08-23 09:40:16 +02:00
Sebastian Dröge
ca0df16d52
tsdemux: Send DURATION query upstream first
2011-08-23 09:27:23 +02:00
Youness Alaoui
818762e8fc
tsdemux: do not send a new-segment on stream removal
...
When a program is changed, stream_added is called which sets the
need_newsegment to TRUE, then stream_removed is called, which calls
the flush_pending_data, which checks for the newsegment and causes
it to send a new-segment.
We must not send the newsegment when flushing the pending data on the
removed stream. We should only push it when flushing data on the newly
added streams (after they finish parsing their PTS header)
2011-08-22 16:01:24 +02:00
Youness Alaoui
382710e200
tsdemux: Fix newsegment when switching programs
...
If a program/stream is changed, then a newsegment is sent which must
not be the same as the base segment since it happens later. We must
shift the start position by the time elapsed since the newsegment
and the current PTS of the stream
2011-08-22 16:01:17 +02:00
Youness Alaoui
4cc1dfb360
tsdemux: interpolate gap and fix timestamps depending on upstream segment
2011-08-22 15:55:47 +02:00
Edward Hervey
5c77682dab
tsdemux: Take into account upstream newsegment events
...
If the incoming newsegment event was in time, use that position value
for the downstream newsegments.
2011-08-01 18:49:55 +02:00
Edward Hervey
57279cdd24
tsdemux: Refactor stream/program removal
...
The program_stopped vmethod was called before stream_removed vmethod
was being called. Since we only did stream-related operations in there,
we just remove the program_stopped vmethod and do everything in the
stream_removed one.
Also, make sure we flush out all pending data before sending EOS.
2011-08-01 10:54:16 +02:00
Edward Hervey
634d29cd88
mpegtsbase/tsdemux: Fix stream/pad activation order
...
We first activate new streams before shutting down old ones.
We emit no-more-pads after we add new streams and emit EOS before
removing old ones.
Also cleanup/refactor a bit more of the code accordingly
2011-07-25 18:56:49 +02:00
Edward Hervey
a960e72efa
mpegtsbase/tsdemux: Add more comments and removal unused variable
2011-07-19 09:49:40 +02:00
Edward Hervey
b170b2020c
mpegtsbase: Add a GList of streams to the program
...
Allows faster iteration of all program streams.
We still keep the Array to allow fast retrieval of stream by PID.
2011-07-19 09:49:40 +02:00
Edward Hervey
dc18e2b16d
mpegtsbase: Use a bit array instead of an array of gboolean
...
Makes know_psi and is_pes 32 times smaller
2011-07-19 09:49:39 +02:00
Edward Hervey
177e00f809
tsdemux: Use standalone PES parser
2011-07-18 09:13:15 +02:00
Edward Hervey
f6f885ddb8
tsdemux: whoops, tsdemux isn't ready yet for primary rank :)
2011-07-16 13:51:44 +02:00
Edward Hervey
a00900367a
mpegtsbase/tsdemux: Cleanups and comments
2011-07-16 13:47:45 +02:00
Edward Hervey
9f1511e998
tsdemux: Fix newsegment creation for push mode
...
And all relevent comments to what it should be doing, refactor everything
a bit. Still not perfect ... but better.
Fixes #654657
2011-07-16 13:44:00 +02:00
Olivier Crête
d7a774cc44
mpegdemux: Fix unused-but-set warnings
2011-07-12 17:53:33 -04:00
Thiago Santos
ca8ea19cc3
tsdemux: only free the index array if it exists
...
Only free the array if it exists.
Contains an unrelated indentation fix, courtesy of gst-indent
2011-06-17 16:18:03 -03:00
Edward Hervey
b3ef72f2eb
tsdemux: Don't free unexistent PAT
...
And cleanup find_timestamps a bit
2011-06-12 11:27:30 +02:00
Edward Hervey
e1a7d71184
tsdemux: More fixes to handle non-188 byte packets
2011-06-07 20:50:35 +02:00
Edward Hervey
6c0254b84b
mpegts: Stop scanning for keyframes as early as possible
2011-06-07 20:50:35 +02:00
Janne Grunau
ae2e7624d6
mpegtsdemux: always try to seek for to a keyframe
...
keyframe is expected to lie in the the next ~2500 ms
2011-06-07 20:50:35 +02:00
Janne Grunau
9352cfc478
mpegtsdemux: fix timestamps in newsegement event after seeking
2011-06-07 20:50:34 +02:00
Janne Grunau
cde65d6d6e
mpegtsdemux: payload parsing for H.264
2011-06-07 20:50:34 +02:00
Janne Grunau
ff15d6fa80
mpegtsdemux: implement key_unit seeking for MPEG2 video
2011-06-07 20:50:34 +02:00
Janne Grunau
3ce1ec7c9c
mpegtsdemux: accurate seeking
...
* pes header parsing for pts is ugly, refactor
* timestamps/newsegment after seeking is still off
2011-06-07 20:50:34 +02:00
Janne Grunau
15391b29e1
mpegtsdemux: push based seeking based on PCR
...
buffer timestamps are converted to GstClockTime to cover pcr/pts wraps.
multiple pcr/pts wraps are handled with an index which ensures at most
a single pcr wraparound between two entries.
the last seen pcr is recorded to have a nearby index point for short seeks
resuming playback might be delayed if the postion is not a keyframe
TODO: replace manual packet scanning and parsing in the initial duration estimation
2011-06-07 20:50:34 +02:00
Janne Grunau
f89a0abca0
mpegtsdemux: create function for pcr parsing
2011-06-07 20:50:34 +02:00
Edward Hervey
f4c96f1dbb
tsdemux: Fix scanning on small files
...
We were previously:
* Stopping early in the initial PCR scan
* Giving a negative offset for the second PCR scan
2011-05-31 12:58:11 +02:00