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
Thibault Saunier
58a210e3d3
mpegtspacketizer: support more character set encodings
...
Support UTF-16BE, EUC-KR (KSX1001), GB2312 and ISO-10646/UTF8 text
encoding and fixed new line for multibyte encoding
https://bugzilla.gnome.org/show_bug.cgi?id=664257
(Port of 9759d66407
from the mpegtsdemux
element)
2012-02-27 09:42:27 -03:00
Thibault Saunier
336710d355
tsbase: Fix parsing of PSI table IDs
...
(Ported from mpegtsdemux d8fd874f52
)
2012-02-24 19:08:40 -03: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
Edward Hervey
4bc7cd04c1
mpegtspacketizer: Fix issues with skew code
...
* Always try to get a timestamp for the algorithm
* Remove dead variable
* Return proper default value
2012-02-24 17:47:38 +01:00
Thibault Saunier
6a8d2c45f6
mpegtspacketizer: Estimate clock skew and retimestamps buffers more precisly
...
Apply the EPTLA algotithm to estimate clock skew.
Reusing code from -good/gst/rtpmanager/rtpjitterbuffer.c
2012-02-24 10:57:09 +01:00
Thibault Saunier
48a699812b
tsdemux: Clean up AAC caps mess
2012-02-24 10:57:05 +01:00
Thibault Saunier
dc8b6c678d
tsdemux: Reindent gstmpegdesc.h
2012-02-24 10:57:02 +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
Edward Hervey
c492b00b69
mpegtsbase: Query whether upstream is live or not
2012-02-23 16:39:48 +01:00
Thibault Saunier
8cb0e87f56
mpegtsdemux: Not apply various time the same PMT to a program when repetead
...
Sometimes their are several times the same PMT applying to a same program in a stream,
tsdemux was totally baffled when this was happening, we now keep the one we
already applied so it works properly.
2012-02-17 12:19:20 -03:00
Thibault Saunier
adc947e127
tsdemux: fix glib deprecation
2012-02-17 12:19:20 -03: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
Vincent Penquerc'h
8147669971
plenty: fixup glib deprecations
2012-01-27 15:47:07 +00:00
Mark Nauwelaerts
d8fdd3485b
mpegtsdemux: break out when stream identified
2012-01-23 14:22:18 +01:00
Mark Nauwelaerts
b00ed32c5a
mpegtsdemux: avoid NULL manipulation if invalid input
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
Youness Alaoui
e380fbb019
tsdemux: In push mode, do not start pull loop if upstream seek fails
2011-08-26 09:51:46 +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
6edff48378
mpegtsbase: First try if upstream handles seeking in TIME format before seeking in the demuxer
2011-08-23 09:52:20 +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
Youness Alaoui
02bc614163
tsbase: reinitiate segment at flush-stop event only
2011-08-18 14:54:22 +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
adfb090b59
mpegtsbase: Remove programs on EOS
...
Allows subclasses to properly flush out pending data.
2011-08-01 15:46:12 +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
Nicolas Dufresne
cbc0a2f056
mpegtsbase: Prevent stack gardening by using the right type
...
stream_type is stored as guint inside the GstStructure but was retreived
using valist with a pointer to guint16. This would cause stack gardening
when code is compiled without optimisation (e.g. in -O0 the compiler wont
pad the stack to optimise out required mask).
https://bugzilla.gnome.org/show_bug.cgi?id=655540
2011-08-01 09:33:25 +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
d0e8427b4e
pesparse: Fix stuffing byte handling
...
We in fact get the size of the header (including stuffing bytes), therefore
use that instead of trying to skip 0xff bytes ourselves since some media
streams do start with 0xff (like mpeg audio's initial 0xfff).
2011-07-20 19:19:13 +02:00
Alessandro Decina
2b7e9abc59
mpegtsdemux: fix compiler warnings
2011-07-20 08:59:25 +02:00
Edward Hervey
a960e72efa
mpegtsbase/tsdemux: Add more comments and removal unused variable
2011-07-19 09:49:40 +02:00
Edward Hervey
2b127601e9
mpegtsbase: Avoid double removal of streams
...
This can happen if the PCR pid is the same as a audio/video PID.
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
6f9a6cc2ba
mpegtsdemux: Add standalone PES parser
2011-07-18 09:13:14 +02:00
Edward Hervey
42cf7d016c
mpegdefs: clarify some stream ids
2011-07-17 09:49:06 +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
Edward Hervey
b73679e13d
mpegtsbase: Store incoming newsegments
2011-07-16 12:27:50 +02:00
Alessandro Decina
d439f2d38d
mpegtsbase: actually set seen_pat=TRUE when we see a PAT
2011-07-15 00:03:52 +02:00
Edward Hervey
a82483e367
mpegtsbase: Split up whether we saw a PAT and its offset
...
Fixes the issue with streams that don't set an offset on their buffers,
like those coming from hlsdemux.
Fixes #653481
2011-07-14 22:10:27 +02:00
Olivier Crête
ca7a512739
mpegtsdemux: Restore erroneously removed data++
...
Also, put back some unused code in comment and replace // comments by /* */
2011-07-13 13:39:54 -04: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
Janne Grunau
37f1decf78
mpegtsdemux: adaptation field length == 0 is valid
...
it can be used to insert a single stuffing byte
do not parse the following payload as adaptation field
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
Edward Hervey
e3839f0241
mpegtsbase: Don't call program_stopped with a NULL program
2011-05-31 12:58:11 +02:00
Edward Hervey
ffc9303c9d
tsdemux: Protect against program being removed
2011-05-30 13:01:20 +02:00
Stefan Kost
79e3b5b4bb
various: fix author tag in element details
2011-05-18 10:31:38 +03:00
Edward Hervey
21add205b7
tsdemux: Don't leak bufferlist on streams without pads
...
https://bugzilla.gnome.org/show_bug.cgi?id=648929
2011-04-29 12:47:34 +02:00
Edward Hervey
565f068049
mpegtsbase: Unref buffers we don't use.
...
Avoids a massive leak :)
https://bugzilla.gnome.org/show_bug.cgi?id=648929
2011-04-29 12:47:34 +02:00
Edward Hervey
c26ca36cf0
mpegtsbase: Don't forget to free the program streams array
...
https://bugzilla.gnome.org/show_bug.cgi?id=648929
2011-04-29 12:47:34 +02:00
Edward Hervey
390502a093
tsdemux: Free packet buffer even if it doesn't have a payload
...
This can happen with AFC-only packets. Avoids leaking buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=648929
2011-04-29 12:47:34 +02:00
David Schleef
40f3b4a651
mpegtsdemux,tsdemux: Add byte-stream to h264 caps
...
Fixes #606662 .
2011-04-24 19:40:08 -07:00
Tim-Philipp Müller
5d6bdf6052
Fix some unused-but-set-variable warnings with gcc 4.6
2011-04-15 00:24:47 +01:00
Thibault Saunier
17fd7ebcb4
android: make it ready for androgenizer
...
Remove the android/ top dir
Fixe the Makefile.am to be androgenized
To build gstreamer for android we are now using androgenizer which generates the needed Android.mk files.
Androgenizer can be found here: http://git.collabora.co.uk/?p=user/derek/androgenizer.git
2011-04-11 07:27:11 +02:00
Janne Grunau
bc91adcf55
mpegtsdemux: fix stream_info descriptor parsing
2011-03-24 15:18:34 +01:00
Mart Raudsepp
b69450af92
mpegtspacketizer: Handle all ISO8859-x encodings in get_encoding()
...
... according to ETSI EN 300 468, "Selection of character table"
2011-03-21 19:57:39 +01:00
Janne Grunau
3ebc8a43e2
mpegtsdemux: do not try to parse packets containing section data as PES
2011-03-21 19:30:17 +01:00
Janne Grunau
bf046719a2
mpegtsdemux: add stream types for DSM CC A, B, C, D
2011-03-21 19:27:08 +01:00
Janne Grunau
74a8e966f5
mpegtsdemux: fix playback if PMT is seen before PAT
...
The stream for the PMT pid has to be cleared since the version checking
in the packetizer won't emit the same PMT again otherwise.
2011-03-21 19:24:08 +01:00
Tim-Philipp Müller
6e321d2d87
mpegtspacketizer: fix log message printf format
2011-02-18 15:17:17 +00:00
David Schleef
de968b6c7d
mpegtsdemux: Fix disting of headers
2011-02-17 14:43:38 -08:00
Janne Grunau
92d5ea2926
mpegtsdemux: use G_GUINT64_FORMAT as format specifier for guint64
...
fixes compilation on 32bit
2011-02-17 12:51:07 -08:00
Janne Grunau
535bf57d1f
mpegtsdemux: relicense gstmpegdefs.h, gstmpegdesc.h and gstmpegdesc.c to LGPL only
...
with permission from the license header:
"""
This library is licensed under 2 different licenses and you
can choose to use it under the terms of either one of them. The
two licenses are the MPL 1.1 and the LGPL.
"""
2011-02-17 17:57:17 +01:00
Janne Grunau
22ecf13e42
mpegtsdemux: add MPEG TS demuxer rewrite from Edward Hervey
...
with contributions from Miquel Angel Farre Guiu and Zaheer Abbas Merali
2011-02-17 17:56:59 +01:00