Olivier Crête [Tue, 16 Oct 2018 21:28:00 +0000 (17:28 -0400)]
rtpsession: Allow changing the SDES at runtime
Make it possible to modify the SDES in a packet at runtime.
https://bugzilla.gnome.org/show_bug.cgi?id=763502
Alicia Boya García [Thu, 1 Mar 2018 16:25:07 +0000 (17:25 +0100)]
qtmux: round to nearest when computing mehd and tkhd duration
This fixes a bug where in some files mehd.fragment_duration is one unit
less than the actual duration of the fragmented movie, as explained below:
mehd.fragment_duration is computed by scaling the end timestamp of
the last frame of the movie in (in nanoseconds) by the movie timescale.
In some situations, the end timestamp is innacurate due to lossy conversion to
fixed point required by GstBuffer upstream.
Take for instance a movie with 3 frames at exactly 3 fps.
$ gst-launch-1.0 -v videotestsrc num-buffers=3 \
! video/x-raw, framerate="(fraction)3/1" \
! x264enc \
! fakesink silent=false
dts: 999:59:59.
333333334, pts: 1000:00:00.
000000000, duration: 0:00:00.
333333333
dts: 999:59:59.
666666667, pts: 1000:00:00.
666666666, duration: 0:00:00.
333333334
dts: 1000:00:00.
000000000, pts: 1000:00:00.
333333333, duration: 0:00:00.
333333333
The end timestamp is calculated by qtmux in this way:
end timestamp = last frame DTS + last frame DUR - first frame DTS =
= 1000:00:00.
000000000 + 0:00:00.
333333333 - 999:59:59.
333333334 =
= 0:00:00.
999999999
qtmux needs to round this timestamp to the declared movie timescale, which can
ameliorate this distortion, but it's important that round-neareast is used;
otherwise it would backfire badly.
Take for example a movie with a timescale of 30 units/s.
0.
999999999 s * 30 units/s = 29.
999999970 units
A round-floor (as it was done before this patch) would set fragment_duration to
29 units, amplifying the original distorsion from 1 nanosecond up to 33
milliseconds less than the correct value. The greatest distortion would occur
in the case where timescale = framerate, where an entire frame duration would
be subtracted.
Also, rounding is added to tkhd duration computation too, which
potentially has the same problem.
https://bugzilla.gnome.org/show_bug.cgi?id=793959
Marc Leeman [Wed, 16 May 2018 12:15:13 +0000 (14:15 +0200)]
udpsrc: print information about bind_error socket error
In some cases, a bind error occurs during operation. Printing
the information about the problem is critical for finding the
conflict
https://bugzilla.gnome.org/show_bug.cgi?id=797340
Johan Bjäreholt [Wed, 17 Oct 2018 10:58:08 +0000 (12:58 +0200)]
matroska-demux: Fix caps memleak
https://bugzilla.gnome.org/show_bug.cgi?id=797326
Wonchul Lee [Thu, 11 Oct 2018 00:24:53 +0000 (09:24 +0900)]
v4l2bufferpool: fix typo resurect to resurrect
https://bugzilla.gnome.org/show_bug.cgi?id=797273
Amit Pandya [Thu, 18 Oct 2018 06:59:00 +0000 (12:29 +0530)]
v4l2videoenc: Add HEVC support
Add HEVC encoder support.
https://bugzilla.gnome.org/show_bug.cgi?id=797141
Nicolas Dufresne [Fri, 19 Oct 2018 21:37:28 +0000 (17:37 -0400)]
vl42allocator: Don't dup exported dmabufs
We can now use the new GstFAllocator to ask the allocator not to close
the wrapped FD. This way the dup is no longer needed.
Nicolas Dufresne [Fri, 19 Oct 2018 21:14:15 +0000 (17:14 -0400)]
v4l2allocator: Don't dup imported DMABuf FD
There is no specific needs to duplicate the FD. Unlike the exportation,
we don't depend on code that will call close. This will make debugging
easyer since the traced FD will match the exporter.
Johan Bjäreholt [Tue, 23 Oct 2018 11:04:34 +0000 (13:04 +0200)]
matroska-ids: Fix uninitialized memory in contexts
https://bugzilla.gnome.org/show_bug.cgi?id=797327
Sebastian Dröge [Fri, 19 Oct 2018 14:02:11 +0000 (17:02 +0300)]
qtmux: Add property for providing a threshold after which we create an edit list for gaps at the start
https://bugzilla.gnome.org/show_bug.cgi?id=797290
Sebastian Dröge [Mon, 22 Oct 2018 11:21:54 +0000 (12:21 +0100)]
qtmux: Correctly set tkhd width/height to the display size
It was previously set to the display aspect ratio, e.g. 4x3, 16x9, etc.
but should be set to the display size.
This is a regression from
e655d47dfce1652630fe8ff5fb6be56370087004
(1.5.1) and was correct before that.
https://bugzilla.gnome.org/show_bug.cgi?id=797318
Yeongjin Jeong [Sun, 21 Oct 2018 02:15:15 +0000 (11:15 +0900)]
tests: flvmux: Fix pushing invalid audio caps in tests
Previous commit created caps with incorrect aac codec data
that did not match the audio channel.
https://bugzilla.gnome.org/show_bug.cgi?id=797256
Seungha Yang [Fri, 19 Oct 2018 15:10:04 +0000 (00:10 +0900)]
qtdemux: Fix build with GLib versions < 2.54
g_ptr_array_find_with_equal_func was introduced in glib 2.54
which is a higher version than our minimum required one.
https://bugzilla.gnome.org/show_bug.cgi?id=797239
Havard Graff [Wed, 17 Oct 2018 11:52:20 +0000 (13:52 +0200)]
rtpsession: fix up GHashTable-behavior dependent tests
GHashTable iteration order changed in recent GLib,
and tests were relying on that.
https://mail.gnome.org/archives/desktop-devel-list/2018-October/msg00016.html
Seungha Yang [Sun, 7 Oct 2018 11:07:39 +0000 (20:07 +0900)]
qtdemux: Don't switch active streams and old streams ...
... before the old streams is not exposed yet for MSS stream.
In case of DASH, newly configured streams will be exposed
whenever demux got moov without delay.
Meanwhile, since there is no moov box in MSS stream,
the caps will act like moov. Then, there is delay for exposing new pads
until demux got the first moof.
So, following scenario is possible only for MSS but not for DASH,
STREAM-START -> CAPS -> (configure stream but NOT EXPOSED YET)
-> STREAM-START-> CAPS (configure stream again).
In above scenario, we can reuse old stream without any stream reconfigure.
https://bugzilla.gnome.org/show_bug.cgi?id=797239
Seungha Yang [Sun, 7 Oct 2018 07:43:34 +0000 (16:43 +0900)]
qtdemux: Use GPtrArray to store QtDemuxStream structure
GPtrArray has less overhead than linked list and the length also
can be auto updated by using it.
https://bugzilla.gnome.org/show_bug.cgi?id=797239
Seungha Yang [Sun, 7 Oct 2018 07:50:45 +0000 (16:50 +0900)]
qtdemux: Make QtDemuxStream refcounted structure
This a prework for porting GPtrArray.
Refcounting will help the use of g_ptr_array_new_with_free_func()
with QtDemuxStream structure
https://bugzilla.gnome.org/show_bug.cgi?id=797239
Seungha Yang [Sat, 6 Oct 2018 11:19:40 +0000 (20:19 +0900)]
qtdemux: Make function foreach method friendly
https://bugzilla.gnome.org/show_bug.cgi?id=797239
Olivier Crête [Thu, 26 Jul 2018 19:25:06 +0000 (15:25 -0400)]
qtdemux: Only set width/height in caps if they're non-0
If they are not valid, then let a downstream parser complete them.
https://bugzilla.gnome.org/show_bug.cgi?id=796878
Wim Taymans [Thu, 16 Aug 2018 10:07:30 +0000 (12:07 +0200)]
avidemux: fix misleading debug line
Philippe Normand [Fri, 22 Jun 2018 15:00:11 +0000 (16:00 +0100)]
qtdemux: Avoid warning when reporting about decryptors
https://bugzilla.gnome.org/show_bug.cgi?id=796652
Tim-Philipp Müller [Wed, 17 Oct 2018 13:15:33 +0000 (14:15 +0100)]
meson: Replace empty configuration_data() with copy keyword
Use 'copy' keyword to avoid meson warning message.
Note that 'copy' keyword in configure_file() is available
since meson 0.47.0
https://bugzilla.gnome.org/show_bug.cgi?id=797298
Vivia Nikolaidou [Tue, 16 Oct 2018 12:42:12 +0000 (15:42 +0300)]
splitmuxsink: Do not hardcode frames_of_daily_jam
Apart from the obvious drawbacks of hardcoding, the drawback here was
that, if we subtracted 2 frames (instead of 2.6) from the target running
time, we'd request the next keyframe a bit too far into the future,
which would make our files split at the wrong position.
https://bugzilla.gnome.org/show_bug.cgi?id=797293
Vivia Nikolaidou [Tue, 2 Oct 2018 16:32:47 +0000 (19:32 +0300)]
qtmux: Allow up to 1% of frame rate for lateness
https://bugzilla.gnome.org/show_bug.cgi?id=797290
Mathieu Duponchelle [Tue, 18 Sep 2018 11:15:06 +0000 (13:15 +0200)]
rtpfunnel: fix shutdown
By disposing of the ssrc_to_pad map in finalize instead of
dispose.
Havard Graff [Wed, 18 Oct 2017 09:14:36 +0000 (11:14 +0200)]
Initial commit of GstRtpFunnel
For funneling together rtp-streams into a single session.
Use-cases include multiplexing and bundle.
Yeongjin Jeong [Fri, 12 Oct 2018 13:33:15 +0000 (22:33 +0900)]
tests: flvdemux: Add new test for channel detect using aac codec-data
https://bugzilla.gnome.org/show_bug.cgi?id=797275
Yeongjin Jeong [Thu, 11 Oct 2018 07:36:17 +0000 (16:36 +0900)]
flvdemux: Use aac codec-data to adjust channels if needed
Flv does not support various channels in AAC stream format, for example
flvdemux detect an audio channels of 2(stereo) when the AAC really is 1(mono).
https://bugzilla.gnome.org/show_bug.cgi?id=797275
Yeongjin Jeong [Thu, 11 Oct 2018 05:31:20 +0000 (14:31 +0900)]
tests: flvmux: Add new test for caps change after starting to write headers
https://bugzilla.gnome.org/show_bug.cgi?id=797256
Yeongjin Jeong [Fri, 5 Oct 2018 08:16:26 +0000 (17:16 +0900)]
flvmux: Don't refuse caps changes after starting to write headers in streamable mode.
Flv does support changing the stream type and stream properties
after the headers were started to be written, and for example H264
codec_data changes can be supported.
https://bugzilla.gnome.org/show_bug.cgi?id=797256
Vivia Nikolaidou [Thu, 11 Oct 2018 10:55:01 +0000 (13:55 +0300)]
splitmuxsink: Fix if condition in drop-frame timecode wrap-around
Was previously: if ( x | y && a == b). Changed it into if ((x & y) && (a
== b)).
Vivia Nikolaidou [Tue, 9 Oct 2018 13:39:11 +0000 (16:39 +0300)]
splitmuxsink: Subtract daily jam offset when day wraps around
For drop-frame framerates, when the expected next max timecode wraps
around at the end of the day, we have to subtract the offset of the
daily jam, otherwise we end up with a duration that's a few frames too
long.
https://bugzilla.gnome.org/show_bug.cgi?id=797270
Havard Graff [Mon, 25 Sep 2017 12:30:13 +0000 (14:30 +0200)]
rtpmux: respect downstream "timestamp-offset" in caps.
https://bugzilla.gnome.org/show_bug.cgi?id=795162
Havard Graff [Tue, 7 Jun 2016 12:38:19 +0000 (14:38 +0200)]
rtpmux: cleanup ssrc-handling code a bit
And add some better logging.
https://bugzilla.gnome.org/show_bug.cgi?id=795162
Havard Graff [Wed, 4 May 2016 09:48:04 +0000 (11:48 +0200)]
rtpmux: protect against NULL caps
Due to state-changes deactivating the pad from another thread,
this can happen.
https://bugzilla.gnome.org/show_bug.cgi?id=795162
Havard Graff [Wed, 22 Jul 2015 07:47:22 +0000 (09:47 +0200)]
rtpmux: property should overrule both upstream and downstream
https://bugzilla.gnome.org/show_bug.cgi?id=762213
https://bugzilla.gnome.org/show_bug.cgi?id=795162
Tim-Philipp Müller [Mon, 8 Oct 2018 19:45:08 +0000 (20:45 +0100)]
meson: use new 'python' module instead of deprecated
https://github.com/mesonbuild/meson/pull/4169
Tim-Philipp Müller [Mon, 8 Oct 2018 19:35:15 +0000 (20:35 +0100)]
meson: only build gtk gl examples if gst-gl was found
And fix typo in glliveshader example binary name.
Peter Körner [Wed, 3 Oct 2018 14:17:22 +0000 (16:17 +0200)]
splitmuxsink: accept pads named 'sink' on the muxer, handle static pads as well
https://bugzilla.gnome.org/show_bug.cgi?id=797241
Sebastian Dröge [Tue, 25 Sep 2018 14:44:15 +0000 (17:44 +0300)]
cairooverlay: Don't map input buffers if we just attach the overlay as meta
https://bugzilla.gnome.org/show_bug.cgi?id=797091
Sebastian Dröge [Tue, 25 Sep 2018 14:02:26 +0000 (17:02 +0300)]
cairooverlay: Add overlay as meta to the buffers if we can
This requires that downstream supports it and
draw-on-transparent-surface is enabled.
https://bugzilla.gnome.org/show_bug.cgi?id=797091
Sebastian Dröge [Tue, 25 Sep 2018 12:34:40 +0000 (15:34 +0300)]
cairooverlay: Pre-multiply and un-premultiply alpha in case of ARGB32
Cairo expects pre-multiplied alpha, we work on un-premultiplied alpha.
https://bugzilla.gnome.org/show_bug.cgi?id=797091
Sebastian Dröge [Tue, 25 Sep 2018 12:31:20 +0000 (15:31 +0300)]
cairooverlay: Add property for drawing on a transparent surface and then blending
This allows us to use the GstVideoOverlayComposition API and correctly
handle pre-multiplied alpha, while also only doing the alpha conversion
once instead of twice for the whole frame.
At a later point we can attach the meta to the buffer instead of
blending ourselves if downstream supports that.
https://bugzilla.gnome.org/show_bug.cgi?id=797091
Thibault Saunier [Wed, 3 Oct 2018 15:34:49 +0000 (17:34 +0200)]
matroskdemux: do not use MapInfo.data after unmapping
And minor gst-indenting
Yacine Bandou [Sun, 30 Sep 2018 17:28:07 +0000 (19:28 +0200)]
matroska: Add the WebM encrypted content support in matroskademux
This commit:
1. Reads the WebM and Matroska ContentEncryption subelements.
2. Creates a GST_PROTECTION event for each ContentEncryption, which
will be sent before pushing the first source buffer.
The DRM system id field in this event is set to GST_PROTECTION_UNSPECIFIED_SYSTEM_ID,
because it isn't specified neither by Matroska nor by the WebM spec.
3. Reads the protection information of encrypted Block/SimpleBlock and
extracts the IV and the partitioning format (subsamples).
4. Creates the metadata protection for each encrypted Block/SimpleBlock,
with those informations: KeyID (extracted from ContentEncryption element),
IV and partitioning format.
5. Adds a new caps for WebM encrypted content named "application/x-webm-enc",
with the following new fields:
"encryption-algorithm": The encryption algorithm used.
values: "None", "DES", "3DES", "Twofish", "Blowfish", "AES".
"encoding-scope": The field that describes which Elements have been modified.
Values: "frame", "codec-data", "next-content".
"cipher-mode": The cipher mode used in the encryption.
Values: "None", "CTR".
https://bugzilla.gnome.org/show_bug.cgi?id=765275
John Nikolaides [Wed, 26 Sep 2018 14:43:05 +0000 (17:43 +0300)]
splitmuxsink: Added a split-at-running-time action signal
The video file can now be split at an arbitrary time, given by the user
as an argument to the action signal.
https://bugzilla.gnome.org/show_bug.cgi?id=787922
Tim-Philipp Müller [Fri, 21 Sep 2018 18:47:44 +0000 (19:47 +0100)]
rtpmp4gdepay: detect broken senders who send AAC with ADTS frames
Strip ADTS headers if we detect any, apparently some Sony cameras
send AAC with ADTS headers. We could also change the stream-format
in the output caps, but that would be unexpected to pipeline builders
and would not exactly be backwards compatible.
Tim-Philipp Müller [Fri, 21 Sep 2018 17:17:25 +0000 (18:17 +0100)]
rtpmp4gdepay: factor out pushing of output buffer
Sebastian Dröge [Wed, 26 Sep 2018 10:29:42 +0000 (13:29 +0300)]
imagefreeze: Allow ANY capsfeatures
Tim-Philipp Müller [Tue, 25 Sep 2018 23:06:09 +0000 (00:06 +0100)]
docs: update for git master
Philippe Normand [Fri, 22 Jun 2018 11:05:17 +0000 (12:05 +0100)]
qtdemux: PIFF track encryption box support
The PIFF track encryption box is a UUID box containing the default encryption
values that should be used for PIFF sample encryption.
https://bugzilla.gnome.org/show_bug.cgi?id=796647
Nicola Murino [Mon, 24 Sep 2018 09:45:46 +0000 (11:45 +0200)]
osxaudio: add support for parsing more channel layouts ...
... and fallback to gst_audio_info_set_format for not yet supported layouts.
Fix audio playback on iOS 12.
Based on patch from Byron Schiel <byron@canary.is>
https://bugzilla.gnome.org/show_bug.cgi?id=796919
Alicia Boya García [Sat, 22 Sep 2018 15:22:46 +0000 (17:22 +0200)]
qtdemux: turn impossible condition into an assert
qtdemux_update_streams() is only ever called after checking
`qtdemux->streams_aware` is TRUE. There is no need to check for that
condition again.
`qtdemux->streams_aware` is only modified when the demuxer is
hard-resetted, which is mutually exclusive with demuxing, so it cannot
be modified during the call.
https://bugzilla.gnome.org/show_bug.cgi?id=797191
Alicia Boya García [Fri, 21 Sep 2018 20:24:02 +0000 (22:24 +0200)]
matroskademux: Emit no-more-pads after parsing Tracks
Currently matroskademux does not emit no-more-pads until the first
Cluster is parsed, even though the Tracks have already been parsed and
from that point on there can be no more tracks.
This is important in MSE because the browser needs to know when the MSE
initialization segment has been completely parsed so that it can expose
the tracks to the user. Some applications depend on this been done
before they feed frames to the demuxer.
As a consequence, historically WebKit has relied on hacks such as
listening to the `pad-added` event, which made impossible to support
multiple tracks in the same file. Let's fix that.
https://bugzilla.gnome.org/show_bug.cgi?id=797187
Alicia Boya García [Fri, 21 Sep 2018 18:38:02 +0000 (20:38 +0200)]
matroskademux: Parse successive Tracks elements
This patch allows matroskademux to parse a second Tracks element,
erroring out if the tracks are not compatible (different number, type or
codec) and emitting new caps and tag events should they have changed.
https://bugzilla.gnome.org/show_bug.cgi?id=793333
Alicia Boya García [Fri, 21 Sep 2018 14:23:57 +0000 (16:23 +0200)]
matroskademux: Refactor track parsing out from adding tracks
This splits gst_matroska_demux_add_stream() into:
* gst_matroska_demux_parse_stream(): will read the Matroska bytestream
and fill a GstMatroskaTrackContext.
* gst_matroska_demux_parse_tracks(): will check there are no repeated
tracks.
* gst_matroska_demux_add_stream(): creates and sets up the pad for the
track.
https://bugzilla.gnome.org/show_bug.cgi?id=793333
Alicia Boya García [Thu, 30 Nov 2017 19:44:23 +0000 (20:44 +0100)]
matroskademux: Allow Matroska headers to be read more than once
This is necessary for MSE, where a new MSE initialization segment may be
appended at any point. These MSE initialization segments consist of an
entire WebM file until the first Cluster element (not included). [1]
Note that track definitions are ignored on successive headers, they must
match, but this is not checked by matroskademux (look for
`(!demux->tracks_parsed)` in the code).
Source pads are not altered when the new headers are read.
This patch has been splitted from the original patch from eocanha in [2].
[1] https://www.w3.org/TR/mse-byte-stream-format-webm/
[2] https://bug334082.bugzilla-attachments.gnome.org/attachment.cgi?id=362212
https://bugzilla.gnome.org/show_bug.cgi?id=793333
Mathieu Duponchelle [Thu, 16 Aug 2018 19:42:37 +0000 (21:42 +0200)]
splitmuxsink: Implement split-after
The behaviour of split-now is to output the current GOP after
starting a new file.
The newly-added split-after signal will output the current GOP
to the old file if possible once a new GOP is opened.
https://bugzilla.gnome.org/show_bug.cgi?id=796982
Seungha Yang [Thu, 20 Sep 2018 03:12:55 +0000 (12:12 +0900)]
flvmux: Don't leak codec_data buffer
Use gst_buffer_replace() to prevent buffer leak
https://bugzilla.gnome.org/show_bug.cgi?id=797179
Sebastian Dröge [Tue, 18 Sep 2018 15:13:52 +0000 (18:13 +0300)]
qtmux: Set Closed Caption track width/height to that of the first video track
Otherwise software like Premiere or Final Cut Pro won't like our files.
https://bugzilla.gnome.org/show_bug.cgi?id=797111
Tim-Philipp Müller [Wed, 19 Sep 2018 10:45:59 +0000 (11:45 +0100)]
meson: add glib-checks option to disable API guards and such
We want this enabled by default, also in releases, but people
may want to disable this for performance-critical workloads or
on embedded devices.
Tim-Philipp Müller [Wed, 19 Sep 2018 10:45:00 +0000 (11:45 +0100)]
meson: fix missing closing bracket in option descriptions
Sebastian Dröge [Thu, 6 Sep 2018 17:10:30 +0000 (20:10 +0300)]
qtmux: Initialize caption track language code to 0 instead of "und"
Without this, Final Cut considers it "non-standard" and 0 (english) is a
good default for closed captions.
https://bugzilla.gnome.org/show_bug.cgi?id=797111
Song Bing [Thu, 13 Sep 2018 03:16:32 +0000 (03:16 +0000)]
v4l2videodec: Add HEVC decoder support
https://bugzilla.gnome.org/show_bug.cgi?id=771686
Nicolas Dufresne [Thu, 13 Sep 2018 02:35:39 +0000 (02:35 +0000)]
v4l2videodec: Move capture probe after input format is set
This is to support Amlogic CODEC driver which does not provide a full
list of formats when the driver is initially opened. GStreamer does
not strictly need this full list initially, but only later, in order
to negotiate with downstream if multiple format can be selected.
With this change, we will no longer probe twice the device, since the
probed list can be directly used for negotation.
Ezequiel Garcia [Tue, 11 Sep 2018 19:46:34 +0000 (16:46 -0300)]
v4l2: Add a debug message beforing waiting for codec stop
Add a debug message right before waiting for the driver.
This is useful in order to debug drivers without a properly
implemented decoder or encoder stop command.
Ezequiel Garcia [Mon, 10 Sep 2018 16:18:45 +0000 (13:18 -0300)]
v4l2: Add a debug message indicating probe operation
It's useful to see the v4l2 element running the probe
operation, to confirm it's turned on and working.
Ezequiel Garcia [Mon, 10 Sep 2018 16:18:30 +0000 (13:18 -0300)]
v4l2: Add JPEG encoding support
This commit adds the support for V4L JPEG stateful encoders.
Ezequiel Garcia [Mon, 10 Sep 2018 19:20:52 +0000 (16:20 -0300)]
v4l2: Add FWHT codec support
The recently added vicodec (virtual codec) V4L driver
uses the Fast Walsh-Hadamard Transform for encoding
and decoding.
Add support for it.
Nicolas Dufresne [Thu, 13 Sep 2018 01:28:24 +0000 (21:28 -0400)]
v4l2: Sync kernel header with linuxtv tree
This notably add HEVC and FWHT support, and VP8/9 profiles are now an
enumeration and their control exposed as a menu.
Vivia Nikolaidou [Wed, 12 Sep 2018 14:24:00 +0000 (17:24 +0300)]
qtmux: Allow up to 1 trak timescale unit of lateness in prefill mode
For 59.94 FPS, it's common to set 60000 as timescale. For that
timescale, if the audio is late by as little as 0:00:00.
000016666
(definitely less than one audio sample), lateness gets rounded to 1.
Added a safeguard that allows lateness up to 1 sample with the specific
trak's timescale, to make sure that values less than e.g. one audio
sample won't break the prefill mode. What will happen in this case is
that the audio will get squeezed back to the video's timestamp, which in
practice means that the audio will be 0.
000016666 seconds early (with
the patch).
https://bugzilla.gnome.org/show_bug.cgi?id=797133
Nicolas Dufresne [Tue, 11 Sep 2018 00:20:39 +0000 (20:20 -0400)]
v4l2object: Fix indentation
Nicolas Dufresne [Tue, 11 Sep 2018 00:18:32 +0000 (00:18 +0000)]
v4l2object: Protect against zero PAR num/demu
This fixes an assertion when the driver implement CROPCAP but does
not set the PAR.
Tim-Philipp Müller [Tue, 11 Sep 2018 23:52:19 +0000 (00:52 +0100)]
wavpackparse: fix handling of correction streams
Accept wavpack correction streams (.wvc) on sink pad, so
that wavpackparse can also be used to packetise correction
streams.
Fix parsing of subblock ID tags - the higher bits are
flags and are not part of the ID. This resulted in
correction blocks not being recognised properly and
the output not having the right (correction) caps.
Nirbheek Chauhan [Fri, 7 Sep 2018 13:17:22 +0000 (18:47 +0530)]
meson: Explicitly pass -DWIN32 while building speex
The speex headers assume that WIN32 will always be defined when
building on Windows, but this is only true by default on MinGW.
Always set it explicitly.
Seungha Yang [Thu, 6 Sep 2018 04:13:19 +0000 (13:13 +0900)]
flvmux: Don't omit streamheader from caps on downstream reconfigure
The reconfigured downstream elements (e.g., dynamically added sink element)
most likely require the flv streamheader
https://bugzilla.gnome.org/show_bug.cgi?id=797089
Martin Kelly [Wed, 5 Sep 2018 23:11:00 +0000 (16:11 -0700)]
matroskamux: don't store used UIDs
Currently, whenever we generate a 128-bit UID, we store it in a list and
return 0 if we ever encounter a collision. This is so mathematically
improbable that it's not worth checking for, so we can save memory and
time by not tracking the UID. Even if a collision happened, a list of
only 10 UIDs would be unlikely to detect it.
This article has a good description of how improbable a collision is:
https://en.wikipedia.org/wiki/Universally_unique_identifier#Collisions
https://bugzilla.gnome.org/show_bug.cgi?id=797086
Sebastian Dröge [Thu, 6 Sep 2018 17:06:10 +0000 (20:06 +0300)]
qtmux: Use existing helper function to create "und" language code
Nirbheek Chauhan [Wed, 5 Sep 2018 14:45:57 +0000 (20:15 +0530)]
meson: Don't skip plugins that don't build with MSVC
We now have options for all plugins, so we will just disable these in
the cerbero recipe instead. These require external deps, so they won't
affect gst-build either.
Nirbheek Chauhan [Mon, 3 Sep 2018 10:34:33 +0000 (16:04 +0530)]
mpg123: Remove ssize_t fallback, not needed anymore
The mpg123 headers now contain a definition for ssize_t and building
with MSVC fails because of a redefinition for ssize_t
Alicia Boya García [Tue, 31 Jul 2018 10:52:36 +0000 (12:52 +0200)]
qtdemux: Keep sample data from the current fragment only (push mode)
This patch clears the sample table whenever the demuxing of a new
fragment begins. This avoids increasing memory usage for long videos.
This behavior was already present when upstream_format_is_time; this
patch extends it to all push mode operation (e.g. Media Source
Extensions).
https://bugzilla.gnome.org/show_bug.cgi?id=796899
Nirbheek Chauhan [Sat, 1 Sep 2018 04:00:23 +0000 (09:30 +0530)]
meson: Fix osxaudio build on iOS
Must define HAVE_IOS, and use appleframeworks dependency to ensure the
right frameworks are picked up.
Nicolas Dufresne [Wed, 22 Aug 2018 19:23:53 +0000 (19:23 +0000)]
v4l2object: Only offer MMAP/DMABUF pool
The propose allocation was offering a pool even in DMABUF_IMPORT or
USERPTR mode. These pool are internal only.
Nicolas Dufresne [Wed, 22 Aug 2018 17:51:52 +0000 (17:51 +0000)]
v4l2transform: Add "disable-passthrough" property
This allow forcing going through the transform driver even if there
isn't an conversion happening. This is usedful when the m2m driver can
be used to adapt the type of memory between two drivers.
Sebastian Dröge [Fri, 31 Aug 2018 11:25:09 +0000 (14:25 +0300)]
deinterlace: Reset frame/tc/caption pointer to NULL after moving it in the history
Edward Hervey [Wed, 29 Aug 2018 07:51:42 +0000 (09:51 +0200)]
rtpmp4vpay: Increase ranking
Both rtpmp4vpay and rtpmp4gpay support MPEG4 elementary streams. But
the most supported variant is the video-specific one (rtpmp4vpay),
therefore increase the rank of that one so that auto-plugging of
payloaders for MPEG4 elementary streams ends up picking that one
and not the generic one.
Tim-Philipp Müller [Wed, 15 Aug 2018 11:53:34 +0000 (12:53 +0100)]
matroskademux: implement keyframe search also without cluster prev size
If we have cluster prev size (GStreamer muxer will write it by default),
we can go back to the previous cluster efficiently, but if we don't then
just search backwards until we find a cluster ebml identifier, like we
do when searching for clusters in the bisection loop.
Tim-Philipp Müller [Wed, 15 Aug 2018 11:14:24 +0000 (12:14 +0100)]
matroskademux: make max backtrack distance for keyframe search configurable
Add property instead of hardcoding it in the code.
In some scenarios such as CCTV variable fps and extra long GOPs are
used to minimise storage space, for example. In those cases there might
not be any keyframes for many minutes, so provide a property to override
the max allowed distance.
https://bugzilla.gnome.org/show_bug.cgi?id=790696
Tim-Philipp Müller [Wed, 15 Aug 2018 10:49:57 +0000 (11:49 +0100)]
matroskademux: set limit how much to backtrack to find a keyframe
If we seek without an index and land on a cluster that starts
with a delta frame.
https://bugzilla.gnome.org/show_bug.cgi?id=790696
Tim-Philipp Müller [Wed, 15 Aug 2018 10:25:21 +0000 (11:25 +0100)]
matroskademux: no need to search for keyframes for intra-only streams
If the video streams are all I-frame only then we don't need to look
for a cluster with a keyframe, we can just assume there will be one.
https://bugzilla.gnome.org/show_bug.cgi?id=790696
Tim-Philipp Müller [Wed, 15 Aug 2018 00:10:32 +0000 (01:10 +0100)]
matroskademux: figure out if we have prev_size when starting up
This is useful to know in case someone initiates a seek or
direction change before we reach the second cluster.
Tim-Philipp Müller [Wed, 8 Aug 2018 11:37:54 +0000 (12:37 +0100)]
matroskademux: try to ensure keyframe when seeking without index
When seeking in pull mode without an index (because there is no index
or the file is still being written to) we bisect to find the right
cluster to jump to. However, it's possible the cluster we found doesn't
start with a keyframe, which leads to decoding errors, so if we know
that the found cluster starts with a delta frame try to scan back to
previous clusters until we find one that starts with a keyframe or
we are back at the beginning. Theoretically it's possible that all
clusters but the first one do not start with a keyframe and the
keyframes are in the middle of clusters, but this is extremely
unusual, so we will cover this case with a basic sanity check.
This problem is especially problematic with content recorded with
dynamic GOP and FPS, where long GOP lengths and low FPS may cause a
large set of clusters to lack key frames. Playback would then be
started on a non-keyframe cluster, and the large number of such frames
would make the content impossible to decode fo a long stretch of time.
Based on patch by: Mats Lindestam <matslm@axis.com>
https://bugzilla.gnome.org/show_bug.cgi?id=790696
Tim-Philipp Müller [Wed, 18 Jan 2017 10:27:38 +0000 (10:27 +0000)]
matroskademux: extract cluster prevsize if available
This is useful for reverse playback/trickmodes
without an index, and will also be useful in the
seek handler if we need to scan back to find a cluster
that starts with a keyframe.
https://bugzilla.gnome.org/show_bug.cgi?id=790696
Nicolas Dufresne [Wed, 25 Jul 2018 23:27:01 +0000 (19:27 -0400)]
v4l2bufferpool: Validate stride/offset when importing
This will prevent situation where buffer size allow importing but rendering
goes wrong due to a miss-match in expected stride and offset.
https://bugzilla.gnome.org/show_bug.cgi?id=583890
Nicolas Dufresne [Wed, 1 Aug 2018 17:07:52 +0000 (13:07 -0400)]
v4l2object: Add a method to try and import buffers
This method will check if a buffer, base on it's video meta,
can be imported. It will also try and adapt the request stride
in case this is the only that miss-match.
https://bugzilla.gnome.org/show_bug.cgi?id=583890
Nicolas Dufresne [Wed, 1 Aug 2018 16:07:20 +0000 (12:07 -0400)]
v4l2allocator: Trace the buffer index we import to
https://bugzilla.gnome.org/show_bug.cgi?id=583890
Nicolas Dufresne [Thu, 26 Jul 2018 02:16:59 +0000 (22:16 -0400)]
v4l2bufferpool: Fix typo in error message
https://bugzilla.gnome.org/show_bug.cgi?id=583890
Nicolas Dufresne [Tue, 24 Jul 2018 16:07:22 +0000 (12:07 -0400)]
v4l2bufferpool: Only queue buffer if preparation worked
The preparation code imports the buffer, doing bunch of
validation. Only queue the buffer in the driver if the
importation worked. This way we don't rely on the driver
to validate.
https://bugzilla.gnome.org/show_bug.cgi?id=583890
Nicolas Dufresne [Tue, 24 Jul 2018 16:05:45 +0000 (12:05 -0400)]
v4l2object: Only allow DMABuf export for STREAMING device
DMABuf exportation requires mmap, which requires STREAMING
capabilities.
https://bugzilla.gnome.org/show_bug.cgi?id=583890
Nicolas Dufresne [Fri, 13 Jul 2018 18:42:21 +0000 (14:42 -0400)]
v4l2bufferpool: Activate the other pool first
This change has no effect. We will need to acquire a buffer from the
pool later in order to validate / adapt with the video alignment for
the downstream buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=583890