Andoni Morales Alastruey [Thu, 7 Nov 2013 11:29:34 +0000 (12:29 +0100)]
avfvideosrc: fix build in iOS with isEqualTo doesn't exists
Andoni Morales Alastruey [Thu, 7 Nov 2013 11:20:31 +0000 (12:20 +0100)]
avfvideosrc: fix build with older SDK not supporting AVDeviceFormat
AVDeviceFormat and AVFrameRateRange are available in iOS since 7.0
so we need a more dynamic approach to support compilation with older
SDK's. We use a NSObject to avoid referencing those types and key-value
coding or preformSelector to access properties.
Andoni Morales Alastruey [Thu, 7 Nov 2013 00:38:20 +0000 (01:38 +0100)]
avfvideosrc: fix checks for HAVE_IOS
Andoni Morales Alastruey [Thu, 7 Nov 2013 00:37:38 +0000 (01:37 +0100)]
avfvideosrc: include config.h
Andoni Morales Alastruey [Wed, 6 Nov 2013 17:53:25 +0000 (18:53 +0100)]
avfvideosrc: add more debug
Andoni Morales Alastruey [Wed, 6 Nov 2013 17:50:46 +0000 (18:50 +0100)]
avfvideosrc: fix compilation with gcc
The synthesize block needs to be moved to fix a compiler error
Andoni Morales Alastruey [Wed, 6 Nov 2013 17:49:35 +0000 (18:49 +0100)]
avfvideosrc: sort caps with the highest resolution first
When started without any caps filter we prefer the highest
supported resolution.
Matthieu Bouron [Mon, 4 Nov 2013 11:14:35 +0000 (11:14 +0000)]
avfvideosrc: support screen capture on OSX
https://bugzilla.gnome.org/show_bug.cgi?id=711432
Matthieu Bouron [Thu, 31 Oct 2013 13:05:40 +0000 (13:05 +0000)]
avfvideosrc: minor cosmetic
Matthieu Bouron [Thu, 31 Oct 2013 13:03:58 +0000 (13:03 +0000)]
avfvideosrc: use input device formats to set/get caps if available
https://bugzilla.gnome.org/show_bug.cgi?id=711211
Matthieu Bouron [Tue, 29 Oct 2013 15:37:16 +0000 (15:37 +0000)]
avfvideosrc: update caps if frame size has changed
On OSX, setting the pixel format on the output reset the capture device
to its native resolution, so we need to update the caps if the output
frame size has changed before a proper solution is found.
Matthieu Bouron [Tue, 29 Oct 2013 15:36:06 +0000 (15:36 +0000)]
avfvideosrc: check if low preset is available
Matthieu Bouron [Mon, 28 Oct 2013 18:22:13 +0000 (18:22 +0000)]
avfvideosrc: use a dedicated queue for AVFoundation calls
Replace the main queue with a dedicated queue for AVFoundation calls
so the execution on this queue won't block if the main queue
is not running.
Matthieu Bouron [Tue, 29 Oct 2013 17:33:11 +0000 (17:33 +0000)]
avfvideosrc: remove trailing space
Matthieu Bouron [Wed, 30 Oct 2013 14:51:50 +0000 (14:51 +0000)]
avfvideosrc: dispatch AVFoundation calls synchronously in the main queue
Matthieu Bouron [Wed, 30 Oct 2013 12:40:01 +0000 (12:40 +0000)]
applemedia: enable avfvideosrc if AVFoundation is present
Matthieu Bouron [Wed, 30 Oct 2013 12:39:24 +0000 (12:39 +0000)]
avfvideosrc: only enable 1920x1080 preset on iOS
Matthieu Bouron [Mon, 28 Oct 2013 11:20:27 +0000 (11:20 +0000)]
configure.ac: detect presence of AVFoundation
Matthieu Bouron [Mon, 28 Oct 2013 11:53:26 +0000 (11:53 +0000)]
applemedia: port avfvideosrc to 1.0
Sebastian Dröge [Thu, 7 Nov 2013 13:12:17 +0000 (14:12 +0100)]
audiomixer: Add unit test for handling unaligned buffers
That is, buffers that start or end in the middle of an output block.
Sebastian Dröge [Thu, 7 Nov 2013 13:12:00 +0000 (14:12 +0100)]
audiomixer: Fix EOS handling if we have some pending data
Sebastian Dröge [Thu, 7 Nov 2013 12:57:35 +0000 (13:57 +0100)]
audiomixer: Add test for the discont handling
Sebastian Dröge [Thu, 7 Nov 2013 12:55:32 +0000 (13:55 +0100)]
audiomixer: Refactor sync test to be more reusable
Sebastian Dröge [Thu, 7 Nov 2013 12:48:06 +0000 (13:48 +0100)]
audiomixer: Remove some racy-ness from the unit test
We might already be EOS when we start the mainloop, so only
set the pipeline to PLAYING from the main loop.
Sebastian Dröge [Thu, 7 Nov 2013 08:54:40 +0000 (09:54 +0100)]
codecparsers: Remove some unused functions
Thiago Santos [Thu, 7 Nov 2013 01:13:13 +0000 (22:13 -0300)]
camerabin: Make sure video-done is post only when file is closed
Force filesink to null before posting video-done to make sure the
file was closed.
Had to do it from a separate thread to avoid calling state_change from
a sync message handler.
https://bugzilla.gnome.org/show_bug.cgi?id=709373
Tim-Philipp Müller [Wed, 6 Nov 2013 23:11:14 +0000 (23:11 +0000)]
win32: add new codecparser API to .def file
Sreerenj Balachandran [Wed, 9 Oct 2013 07:54:14 +0000 (10:54 +0300)]
videoparsers: add H.265 HEVC video parser element
https://bugzilla.gnome.org/show_bug.cgi?id=708438
Sreerenj Balachandran [Tue, 1 Oct 2013 10:39:41 +0000 (13:39 +0300)]
codecparsers: add H.265 HEVC bitstream parser
https://bugzilla.gnome.org/show_bug.cgi?id=708438
Wim Taymans [Tue, 5 Nov 2013 11:43:44 +0000 (12:43 +0100)]
aiffparse: fix seeking in push mode
Sebastian Dröge [Wed, 6 Nov 2013 14:50:08 +0000 (15:50 +0100)]
audiomixer: Don't take channel mask in consideration in mono or stereo
This could cause negotiation to fail.
https://bugzilla.gnome.org/show_bug.cgi?id=708633
Sebastian Dröge [Wed, 6 Nov 2013 14:31:31 +0000 (15:31 +0100)]
audiomixer: Add test to the .gitignore file
Sebastian Dröge [Wed, 6 Nov 2013 14:18:58 +0000 (15:18 +0100)]
audiomixer: Add simply synchronization test
Sebastian Dröge [Wed, 6 Nov 2013 14:18:50 +0000 (15:18 +0100)]
audiomixer: Add new element based on adder that does synchronized audio mixing
Tim-Philipp Müller [Tue, 5 Nov 2013 11:19:37 +0000 (11:19 +0000)]
Automatic update of common submodule
From 865aa20 to dbedaa0
Sebastian Dröge [Mon, 4 Nov 2013 18:58:35 +0000 (19:58 +0100)]
eglglessink: Query upstream first to get a EGLDisplay
Sebastian Dröge [Mon, 4 Nov 2013 09:04:59 +0000 (10:04 +0100)]
applemedia-nonpublic: Link with gmodule for g_module_open() and others
Sebastian Dröge [Mon, 4 Nov 2013 09:04:42 +0000 (10:04 +0100)]
applemedia: Link with gmodule for g_module_open() and others
Sebastian Dröge [Fri, 1 Nov 2013 21:32:32 +0000 (22:32 +0100)]
configure: Always define AM_CONDITIONAL USE_EGLGLES
L. Sorin [Fri, 4 Oct 2013 10:48:10 +0000 (12:48 +0200)]
curl: curlsftpsink - new libcurl-based sink element for SFTP
Note: SFTP = SSH File Transfer Protocol
The sink acts as a client and uploads data to the SFTP server.
https://bugzilla.gnome.org/show_bug.cgi?id=709795
Reynaldo H. Verdejo Pinochet [Thu, 31 Oct 2013 20:36:25 +0000 (13:36 -0700)]
cdaudio: Remove cdaudio plugin
This element is being removed due to it been
considered obsolete and the functionaily it
provides no longer needed.
Details on the decision can be found here:
https://bugzilla.gnome.org/show_bug.cgi?id=711223
Fixes:
https://bugzilla.gnome.org/show_bug.cgi?id=711232
Sebastian Dröge [Fri, 1 Nov 2013 09:41:16 +0000 (10:41 +0100)]
yadif: Fix compiler warning caused by specifying const twice
yadif.c:49:24: warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier]
DECLARE_ASM_CONST (16, const xmm_reg, pb_1) = {
^
yadif.c:33:50: note: expanded from macro 'DECLARE_ASM_CONST'
#define DECLARE_ASM_CONST(n,t,v) static const t __attribute__((used)) __attribute__ ((aligned (n))) v
^
yadif.c:52:24: warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier]
DECLARE_ASM_CONST (16, const xmm_reg, pw_1) = {
^
yadif.c:33:50: note: expanded from macro 'DECLARE_ASM_CONST'
#define DECLARE_ASM_CONST(n,t,v) static const t __attribute__((used)) __attribute__ ((aligned (n)))
Sebastian Dröge [Fri, 1 Nov 2013 09:40:06 +0000 (10:40 +0100)]
yadif: Fix build with XCode
https://bugzilla.gnome.org/show_bug.cgi?id=710451
Sreerenj Balachandran [Mon, 28 Oct 2013 13:04:16 +0000 (15:04 +0200)]
h264parse: Remove the explicit PAR calculation based on VUI headers
The PAR calculation based on VUI headers is already doing by the
h264 codecparser and we does't need to duplicate those code.
https://bugzilla.gnome.org//show_bug.cgi?id=711009
Antonio Ospite [Thu, 17 Oct 2013 10:05:44 +0000 (12:05 +0200)]
rotate: Fix angle property help text
The help text of the angle property was probably copied from the circle
plugin, fix it to mention the rotation determined by the angle.
https://bugzilla.gnome.org/show_bug.cgi?id=710391
Reynaldo H. Verdejo Pinochet [Thu, 31 Oct 2013 01:48:08 +0000 (18:48 -0700)]
cdaudio: port to 1.X
https://bugzilla.gnome.org/show_bug.cgi?id=711223
Andoni Morales Alastruey [Wed, 30 Oct 2013 17:25:50 +0000 (18:25 +0100)]
androidmedia: fix rank for more software decoders
In Galaxy S4 the codecs list contains some OMX.SEC.foo.sw.dec
as software decoders
https://bugzilla.gnome.org/show_bug.cgi?id=711214
Antonio Ospite [Thu, 17 Oct 2013 10:53:31 +0000 (12:53 +0200)]
geometrictransform: Fix setting black background for AYUV buffers
When the frame buffer is AYUV writing all zeros does not set it to
black, in YUV colorspace 0x10 is the black level for luminance and 0x80
is the black level for chrominance.
Fix setting the background to black when the out_frame format is AYUV;
in all the other supported formats zeroing the data with memset is still
the right thing to do.
https://bugzilla.gnome.org/show_bug.cgi?id=710392
Matthieu Bouron [Wed, 23 Oct 2013 22:34:27 +0000 (23:34 +0100)]
applemedia-nonpublic: fix plugin name
https://bugzilla.gnome.org/show_bug.cgi?id=711135
Matthieu Bouron [Wed, 23 Oct 2013 16:22:16 +0000 (17:22 +0100)]
vtenc: use proper release callback type in CVPixelBufferCreateWithPlanarBytes
https://bugzilla.gnome.org/show_bug.cgi?id=711140
Matthieu Bouron [Fri, 20 Sep 2013 23:20:36 +0000 (00:20 +0100)]
avfvideosrc: fix truncated line
https://bugzilla.gnome.org/show_bug.cgi?id=710657
Andoni Morales Alastruey [Wed, 30 Oct 2013 15:20:56 +0000 (16:20 +0100)]
eglglessink: remove unused functions in the eagl backend
https://bugzilla.gnome.org/show_bug.cgi?id=711159
Andoni Morales Alastruey [Fri, 18 Oct 2013 09:54:12 +0000 (11:54 +0200)]
androidmedia: fix access to invalid buffers in the decoding loop
Flushing the decoder invalidates all buffers, so it should be done
after quiting the decoding loop. Otherwise we can jump into
"failed_release" and stop everything
https://bugzilla.gnome.org/show_bug.cgi?id=711156
Edward Hervey [Mon, 28 Oct 2013 08:33:47 +0000 (09:33 +0100)]
h264parse: Unify value setting
the initial par_n = par_d = 0; was always overwritten since the switch/case
handles all values
And remove the 0 case (it's the same handling as default)
Edward Hervey [Mon, 28 Oct 2013 08:33:16 +0000 (09:33 +0100)]
h264parse: Avoid ending up with undefined values
If caps aren't fixed, we'd end up with undefined values for format
and align.
Edward Hervey [Fri, 11 Oct 2013 09:23:16 +0000 (11:23 +0200)]
tsdemux: Demote GST_ERROR to GST_WARNING
discontinuities are not errors per-se and we handle them correctly.
Alex Ashley [Fri, 25 Oct 2013 10:11:30 +0000 (11:11 +0100)]
hlsdemux: fix memory leak in gst_hls_demux_get_next_fragment
This patch fixes three memory leaks in hlsdemux, one that occurs
during normal operation and two that occur during error conditions.
The gst_hls_demux_get_next_fragment function calls
gst_fragment_get_buffer which increments the reference count
on the buffer but gst_hls_demux_get_next_fragment never calls unref on
the buffer. This means that the reference count for each downloaded
fragment never gets to zero and so its memory is never released.
This patch adds a call to gst_buffer_unref after the flags have been
updated on the buffer.
There is a leak-on-error in gst_hls_demux_decrypt_fragment if it fails
to download the key file. If the key fails to download, null is
returned without doing an unref on the encrypted fragment. The
semantics of gst_hls_demux_decrypt_fragment is that it takes ownership
of the encrypted fragment and releases it before returning.
There is a leak-on-error in gst_hls_src_buf_to_utf8_playlist in the
unlikely event that the gst_buffer_map fails. In the "happy path"
operation of gst_hls_src_buf_to_utf8_playlist the buffer gets an unref
before the function returns, therefore the error condition must do the
same.
https://bugzilla.gnome.org/show_bug.cgi?id=710881
Matthieu Bouron [Wed, 23 Oct 2013 16:11:20 +0000 (17:11 +0100)]
mpegtsmux: fix uninitialized variable warning
https://bugzilla.gnome.org/show_bug.cgi?id=710759
Matthieu Bouron [Wed, 23 Oct 2013 15:58:49 +0000 (16:58 +0100)]
mpegtsdemux: fix uninitialized variable warning
https://bugzilla.gnome.org/show_bug.cgi?id=710759
Chen Jie [Fri, 18 Oct 2013 02:12:56 +0000 (10:12 +0800)]
androidmedia: make gst_amc_avc_profile_from_string recognize alt name
https://bugzilla.gnome.org/show_bug.cgi?id=710433
Olivier Crête [Sat, 12 Oct 2013 20:04:25 +0000 (16:04 -0400)]
pitch: Fix inverted condition in setcaps
Edward Hervey [Fri, 11 Oct 2013 08:32:52 +0000 (10:32 +0200)]
mpegtspacketizer: Skip packets with corrupted length
This is similar to what we do for packets with payload
Edward Hervey [Fri, 11 Oct 2013 08:29:20 +0000 (10:29 +0200)]
tsdemux: Refactor language tag extraction
subtitling descriptor needs to be used with a different method to extract
language codes.
Edward Hervey [Fri, 11 Oct 2013 08:21:25 +0000 (10:21 +0200)]
mpegts: Add support for parsing DVB Subtitling descriptor (0x59)
Essentially works in the same vein as the iso639 descriptor code
Jesper Larsen [Thu, 10 Oct 2013 20:46:48 +0000 (22:46 +0200)]
mpegts: Fix assertion fault in ISO 639 parsing
https://bugzilla.gnome.org/show_bug.cgi?id=709180
Sebastian Dröge [Wed, 9 Oct 2013 15:18:41 +0000 (17:18 +0200)]
speed: Fix some bytes-per-frame vs. bytes-per-sample mixups
Otherwise we will crash when handling multiple channels and
miscalculate timestamps.
https://bugzilla.gnome.org/show_bug.cgi?id=709734
Sebastian Dröge [Tue, 8 Oct 2013 09:10:49 +0000 (11:10 +0200)]
configure: Make sure to try window-system-agnostic EGL if nothing was auto-detected
Stefan Sauer [Tue, 8 Oct 2013 05:56:11 +0000 (07:56 +0200)]
mpegpsdemux: log time format as name instead of the number
Gilles Dartiguelongue [Sun, 6 Oct 2013 15:37:38 +0000 (17:37 +0200)]
egl: Allow disabling gstreamer-egl library
https://bugzilla.gnome.org/show_bug.cgi?id=709531
Jesper Larsen [Sat, 5 Oct 2013 12:45:33 +0000 (14:45 +0200)]
tsdemux: Use mpegts-lib for ISO 639 language tags
https://bugzilla.gnome.org/show_bug.cgi?id=709180
Jesper Larsen [Sat, 5 Oct 2013 12:45:32 +0000 (14:45 +0200)]
tsdemux: Return descriptor in get_descriptor
https://bugzilla.gnome.org/show_bug.cgi?id=709180
Jesper Larsen [Sat, 5 Oct 2013 12:45:31 +0000 (14:45 +0200)]
mpegts: Add ISO 639 parsing functions
https://bugzilla.gnome.org/show_bug.cgi?id=709180
Matej Knopp [Fri, 4 Oct 2013 22:00:52 +0000 (00:00 +0200)]
dvdspu: handle sticky dvd events
palette-changed events are now sticky.
https://bugzilla.gnome.org/show_bug.cgi?id=709454
Thiago Santos [Thu, 3 Oct 2013 10:57:17 +0000 (07:57 -0300)]
hlsdemux: Small improvement on always valid if condition
No need to check for !cancelled as the above if guarantees it
to be true
Thiago Santos [Thu, 3 Oct 2013 10:56:21 +0000 (07:56 -0300)]
hlsdemux: Do not call _stop holding the updates lock
It will cause a deadlock and the calers for _get_next_fragment
will already call _stop if required when _get_next_fragment fails.
Fixes #690148
Greg Rutz [Wed, 12 Jun 2013 16:50:51 +0000 (10:50 -0600)]
dashdemux: Improve if cause readability
Fixed up the error-handling code when downloading fragments.
Modifed the error-handling code to use positive logic when
testing for cancellation of the download loop.
https://bugzilla.gnome.org/show_bug.cgi?id=701404
Thiago Santos [Thu, 26 Sep 2013 20:05:24 +0000 (17:05 -0300)]
dashdemux: actually return true on latency query
Do not forget to set the return for latency query
Alex Ashley [Thu, 26 Sep 2013 19:13:33 +0000 (16:13 -0300)]
dashdemux: stop fetching live fragments that don't yet exist
There is an issue for live streams where download_loop will keep
downloading segments until it gets a 404 error for a segment
that has not yet been published. This is a problem because this
request for a segment that doesn't exist will propagate all the
way back to the origin server(s). This means that dashdemux causes
extra load on the origin server(s) for segments that aren't yet
available.
This patch uses availabilityStartTime, period
and the host's idea of UTC to decide if a fragment is available to
be requested from an HTTP server and filter out requests for fragments
that are not yet available.
https://bugzilla.gnome.org/show_bug.cgi?id=701404
Sebastian Dröge [Thu, 3 Oct 2013 11:26:06 +0000 (13:26 +0200)]
h264parse: Fix conversion to AVC if a SPS/PPS not from the first indizes is used
https://bugzilla.gnome.org/show_bug.cgi?id=707974
Sebastian Dröge [Wed, 2 Oct 2013 08:55:30 +0000 (10:55 +0200)]
openjpeg: Port OpenJPEG plugin to the 2.0 API
Dominik Röttsches [Wed, 2 Oct 2013 02:49:43 +0000 (05:49 +0300)]
vtenc: Add support for I420
https://bugzilla.gnome.org/show_bug.cgi?id=709241
Dominik Röttsches [Wed, 2 Oct 2013 02:49:34 +0000 (05:49 +0300)]
vtenc: Use correct strides, etc from the GstVideoFrame
https://bugzilla.gnome.org/show_bug.cgi?id=706211
Sreerenj Balachandran [Tue, 20 Aug 2013 14:03:38 +0000 (17:03 +0300)]
codecparsers: h264: store quantization matrices in zig-zag order
Quantizer matrices are encoded in zigzag scan order in the bitstream,
so always parse it as it is.
https://bugzilla.gnome.org/show_bug.cgi?id=708629
Sreerenj Balachandran [Wed, 2 Oct 2013 08:40:05 +0000 (11:40 +0300)]
win32: update with the new file libgstcodecparsers.def
https://bugzilla.gnome.org/show_bug.cgi?id=708629
Sreerenj Balachandran [Wed, 2 Oct 2013 08:24:58 +0000 (11:24 +0300)]
codecparsers: h264: add helpers to convert quantization matrices
Add utility functions to convert quantization matrices from zig-zag scan
order into raster scan order and vice-versa
https://bugzilla.gnome.org/show_bug.cgi?id=708629
Brendan Long [Mon, 30 Sep 2013 21:32:55 +0000 (15:32 -0600)]
Add gstreamer-mpegts pkg-config file.
https://bugzilla.gnome.org/show_bug.cgi?id=709145
Tim-Philipp Müller [Sun, 29 Sep 2013 22:43:23 +0000 (23:43 +0100)]
opencv: don't unref NULL caps in finalize
Fixes gst-inspect-1.0 -a and generic states unit test.
Sebastian Dröge [Thu, 26 Sep 2013 11:37:09 +0000 (13:37 +0200)]
iosassetsrc: Port to 1.0 and fix some bugs on the way
Andoni Morales Alastruey [Thu, 26 Sep 2013 11:21:59 +0000 (13:21 +0200)]
iosassetsrc: Add new element from the GStreamer SDK project
Sebastian Dröge [Mon, 23 Sep 2013 12:36:40 +0000 (14:36 +0200)]
eglglessink: Port iOS part to 1.0
Sebastian Dröge [Mon, 23 Sep 2013 11:20:46 +0000 (13:20 +0200)]
configure: Fix iOS check for eglglessink
Sebastian Dröge [Mon, 23 Sep 2013 09:35:56 +0000 (11:35 +0200)]
applemedia: avfvideosrc is not ported to 1.0 yet
Michael Olbrich [Wed, 18 Sep 2013 15:51:26 +0000 (17:51 +0200)]
liveadder: round when calculation length from duration
liveadder sometimes calculates the offsets incorrectly before adding. The
resulting errors can easily be heard when mixing silence with a sine.
I'm not sure what the exact conditions are to trigger this, but it definitively
happens when the buffers of two streams have a different duration and buffer
length and duration don't match exactly for one stream because of rounding
errors (e.g. duration=0:00:00.
021333333)
I have to admit, I got lost in the math somewhere but it seems that not
rounding in gst_live_adder_length_from_duration() causes 1 sample overlaps in
consecutive buffers from the same stream.
When using gst_util_uint64_scale_int_round() instead of just truncating the
sine sound correctly again.
https://bugzilla.gnome.org/show_bug.cgi?id=708345
Javier Jardón [Wed, 25 Sep 2013 14:22:12 +0000 (15:22 +0100)]
hlssink: Use floats for the EXTINF duration values
https://bugzilla.gnome.org/show_bug.cgi?id=708851
Javier Jardón [Wed, 25 Sep 2013 14:18:39 +0000 (15:18 +0100)]
hlssink: Write EXT-X-VERSION tag in the playlist file
https://bugzilla.gnome.org/show_bug.cgi?id=708851
Edward Hervey [Thu, 19 Sep 2013 12:53:46 +0000 (14:53 +0200)]
check: Update uvch264demux for behaviour change
Since
006e7a3428bd097fc6e6c648332bff583dd434f9 we no longer error out on
incomplete aux segment.
Steve Maynard [Fri, 27 Sep 2013 14:45:00 +0000 (14:45 +0000)]
mpegts: Add SCTE/EISS sections and table types
https://bugzilla.gnome.org/show_bug.cgi?id=708688
Edward Hervey [Mon, 29 Jul 2013 06:10:07 +0000 (08:10 +0200)]
tsdemux: Wait for valid PCR/offset obvervations
It is quite possible that we might get PTS/DTS before the first
PCR/Offset observation.
In order to end up with valid timestamp we wait until at least one
stream was able to get a proper running-time for any PTS/DTS.
Until then, we queue up the pending buffers to push out.
Once we see a first valid timestamp, we re-evaluate the amount of
running-time elapsed (based on returned inital running-time and amount
of data/DTS queued up) for any given stream.
Taking the biggest amount of elapsed time, we set that on the packetizer
as the initial offset and recalculate all pending buffers running-time
PTS/DTS.
Note: The buffer queueing system can also be used later on for the
dvb fast start proposal (where we queue up all stream packets before
seeing PAT/PMT and then push them once we know if they belong to the
chosen program).
Edward Hervey [Sun, 7 Jul 2013 13:04:18 +0000 (15:04 +0200)]
examples: Add descriptor dumping
Edward Hervey [Fri, 26 Jul 2013 05:54:30 +0000 (07:54 +0200)]
mpegtsdemux: New PCR<=>Offset estimation code
This allows:
* Better duration estimation
* More accurate PCR location
* Overall more accurate running-time location and calculation
Location and values of PCR are recorded in groups (PCROffsetGroup)
with notable PCR/Offset observations in them (when bitrate changed
for example). PCR and offset are stored as 32bit values to
reduce memory usage (they are differences against that group's
first_{pcr|offset}.
Those groups each contain a global PCR offset (pcr_offset) which
indicates how far in the stream that group is.
Whenever new PCR values are observed, we store them in a sliding
window estimator (PCROffsetGroupCurrent).
When a reset/wrapover/gap is detected, we close the current group with
current values and start a new one (the pcr_offset of that new group
is also calculated).
When a notable change in bitrate is observed (+/- 10%), we record
new values in the current group. This is a compromise between
storing all PCR/offset observations and none, while at the same time
providing better information for running-time<=>offset calculation
in VBR streams.
Whenever a new non-contiguous group is start (due to seeking for example)
we re-evaluate the pcr_offset of each groups. This allows detecting as
quickly as possible PCR wrapover/reset.
When wanting to find the offset of a certain running-time, one can
iterate the groups by looking at the pcr_offset (which in essence *is*
the running-time of that group in the overall stream).
Once a group (or neighbouring groups if the running-time is between two
groups) is found, once can use the recorded values to find the most
accurate offset.
Right now this code is only used in pull-mode , but could also
be activated later on for any seekable stream, like live timeshift
with queue2.
Future improvements:
* some heuristics to "compress" the stored values in groups so as to keep
the memory usage down while still keeping a decent amount of notable
points.
* After a seek compare expected and obtained PCR/Offset and if the
difference is too big, re-calculate position with newly observed
values and seek to that more accurate position.
Note that this code will *not* provide keyframe-accurate seeking, but
will allow a much more accurate PCR/running-time/offset location on
any random stream.
For past (observed) values it will be as accurate as can be.
For future values it will be better than the current situation.
Finally the more you seek, the more accurate your positioning will be.