Nicolas Dufresne [Tue, 18 Dec 2018 17:43:30 +0000 (12:43 -0500)]
test: rtph265: Copy and port tests from rtph264
This copy and port all the relevant tests from rtph264.
Nicolas Dufresne [Fri, 14 Dec 2018 22:54:36 +0000 (17:54 -0500)]
test: rtph264depay: Check the marker is converted to flag
Nicolas Dufresne [Fri, 14 Dec 2018 22:53:17 +0000 (17:53 -0500)]
test: rtph264depay: Check that EOS drains the depayloaded
In AU mode, the depayloader may have accumulated NALs, test that
these NALs are drained and not dropped.
Nicolas Dufresne [Fri, 14 Dec 2018 20:30:21 +0000 (15:30 -0500)]
test: rtph264pay: Add tests for marker bit
Test that marker bit is transferred when input buffer has the
marker flag set but also that it's set whenever the payloader
receives complete AU.
Nicolas Dufresne [Thu, 13 Dec 2018 20:57:24 +0000 (15:57 -0500)]
test: rtph264pay: Verify slices timestamp
This test make sure that timestamps are properly transfered
to each NALU.
Nicolas Dufresne [Tue, 4 Dec 2018 21:06:15 +0000 (16:06 -0500)]
test: rtph264pay: Add reserved nals test
Nicolas Dufresne [Tue, 18 Dec 2018 18:16:44 +0000 (13:16 -0500)]
rtph265pay: Don't wait for next nal when input is aligned
This is the same as what was done on rtph264pay in the patch
d5d28055c1e816e90e8c2d1151816b0c3e760ff3
Nicolas Dufresne [Tue, 18 Dec 2018 17:53:15 +0000 (12:53 -0500)]
rtph265depay: Drain on EOS event
Nicolas Dufresne [Tue, 18 Dec 2018 17:50:40 +0000 (12:50 -0500)]
rtph265depay: Factor out the code that push
This will be needed to implement draining on EOS.
Nicolas Dufresne [Mon, 17 Dec 2018 21:48:53 +0000 (16:48 -0500)]
rtph264depay: Drain on EOS event
Nicolas Dufresne [Fri, 14 Dec 2018 23:19:42 +0000 (18:19 -0500)]
rtph264depay: Factor out the code that push
This will be needed to implement draining on EOS.
Nicolas Dufresne [Fri, 14 Dec 2018 20:51:51 +0000 (15:51 -0500)]
rtph26xpay: Remove unused IS_ACCESS_UNIT macro
This macro is not longer used. It was secretly checking if that nal was
a slice, and confusingly name to that one may think it was checking if
the nal is an AUD.
Nicolas Dufresne [Wed, 3 Oct 2018 18:14:17 +0000 (14:14 -0400)]
rtph265pay: Fix reading timestamps from adapter
The code was reading the timestamp from the adapter before pushing the
new buffer into it. As a side effect, if the adapter was empty, we'd end
up using an older timestamp. In alignment=au, it means that all
timestamp was likely one frame in the past, while in alignment=nal, with
multiple slices per frame, the first slice would have the timestamp of
the previous one.
Nicolas Dufresne [Wed, 3 Oct 2018 17:46:08 +0000 (13:46 -0400)]
rtph265pay: Forward the marker bit as buffer flag
We have a buffer flag to represent the marker bit (when present).
Forward this bit by setting the buffer flag accordingly.
Nicolas Dufresne [Wed, 3 Oct 2018 17:44:56 +0000 (13:44 -0400)]
rtph265pay: Properly set the marker bit
The marker bit is used for efficient decoding. The assumption that
it should be set on the AUD is wrong, since the AUD is conceptually
starts the frame, while the marker is to indicate the end.
So properly set the marker bit as soon as we know we are ending an
AU and also whenever upstream have set the GST_BUFFER_FLAG_MARKER
flag.
Nicolas Dufresne [Tue, 25 Sep 2018 15:49:52 +0000 (11:49 -0400)]
rtph264pay: Fix reading timestamps from adapter
The code was reading the timestamp from the adapter before pushing the
new buffer into it. As a side effect, if the adapter was empty, we'd end
up using an older timestamp. In alignment=au, it means that all
timestamp was likely one frame in the past, while in alignment=nal, with
multiple slices per frame, the first slice would have the timestamp of
the previous one.
Nicolas Dufresne [Mon, 24 Sep 2018 19:31:12 +0000 (15:31 -0400)]
rtph264pay: Properly set the marker bit
The marker bit is used for efficient decoding. The assumption that
it should be set on the AUD is wrong, since the AUD is conceptually
starts the frame, while the marker is to indicate the end.
So properly set the marker bit as soon as we know we are ending an
AU and also whenever upstream have set the GST_BUFFER_FLAG_MARKER
flag.
Nicolas Dufresne [Mon, 24 Sep 2018 19:27:41 +0000 (15:27 -0400)]
rtph264depay: Forward the marker bit as buffer flag
We have a buffer flag to represent the marker bit (when present).
Forward this bit by setting the buffer flag accordingly.
Nicolas Dufresne [Fri, 21 Sep 2018 20:22:43 +0000 (20:22 +0000)]
rtph264pay: Protect against use of reserved NAL types
Don't allow external encoder to use one of the reserved NAL type
implicated in NAL aggreation. These out-of-spec NAL types, if passed
from the outside world will lead to an invalid RTP payload being
created.
Seungha Yang [Fri, 7 Dec 2018 12:46:12 +0000 (21:46 +0900)]
tests: Enable unit test on Windows
Allow run some unit tests on Windows.
* Remove hardcoded path separator in whitelist env for Meson to choose
OS-specific separator automatically (i.e., ';' for windows and ':' for *nix)
* Add dependency explicitly for some test cases, otherwise plugins couldn't be
loaded on uninstalled environment of Windows.
Seungha Yang [Tue, 18 Dec 2018 11:39:40 +0000 (20:39 +0900)]
meson: Prefer to use join_paths() over '/'
... to avoid mixing '/' and '\' in a path string on Windows.
Jonny Lamb [Mon, 17 Dec 2018 18:04:37 +0000 (18:04 +0000)]
rtpulpfec: stop and start the harness when setting error-after
gstreamer!55 makes some changes to how the `error-after` counter works
which breaks this test. This change makes the test not rely on the
ability to alter `error-after` at runtime and explicitly stops and
starts the harness before pushing data.
An alternative would be to add another argument to
`harness_rtpulpfecdec` to set `error-after` on construction but that's
slightly more long-winded. so I went for this approach instead.
Fixes #532, even though that's already closed.
Mathieu Duponchelle [Mon, 17 Dec 2018 17:59:34 +0000 (18:59 +0100)]
tests: remove rtpaux test
The initial mission statement for this test was:
* demonstrate usage of the request-aux-* signals in rtpbin
* test the rtx elements
We have examples that serve the first use case, and better
(harnessed) tests for the second use case.
This test is slow and racy, it served its purpose but can now
be removed.
Fixes #533
Nicola Murino [Mon, 17 Dec 2018 18:18:43 +0000 (19:18 +0100)]
souphttpsrc: check difference in time from the last socket read before changing blocksize
If the pipeline consumes the data slower than the available network speed,
for example because sync=true, is useless to increase the blocksize and
reading in too big blocksizes can cause the connection to time out
Closes #463
Guillaume Desmottes [Wed, 8 Aug 2018 07:27:09 +0000 (09:27 +0200)]
v4l2: Avoid code duplication
The function gst_v4l2_object_add_interlace_mode() has repeating code so
it's best use a loop instead. That will make it easy and simple to add
additional interlace modes in a following patch.
Zeeshan Ali [Wed, 27 Jun 2018 21:20:33 +0000 (23:20 +0200)]
v4l2: Make use of gst_video_interlace_mode_to_string()
Instead of a custom map to translate the interlace modes to strings, let's
make use of the base API provided.
Nicola Murino [Mon, 17 Dec 2018 12:45:36 +0000 (13:45 +0100)]
osxcoreaudio: fix typo
kAudioFormatFlagIsSignedInteger is a format flags
Closes #394
Edward Hervey [Mon, 17 Dec 2018 08:33:39 +0000 (09:33 +0100)]
qtgl: Handle OPENGL header guard changes
In 2018 khronos changed the gl header guards. If we don't detect
this properly we would end up with plenty of symbol redifinition
(since we would be importing twice the "same" header).
Instead detect if the "newer" header was already included and if
so define the "old" define to avoid this situation
Fixes #523
Sebastian Dröge [Mon, 10 Dec 2018 15:34:03 +0000 (17:34 +0200)]
isomp4: Replace GST_VIDEO_CAPTION_TYPE_CEA608_IN_CEA708_RAW with CEA608_S334_1A
For the demuxer we have to select line offset 0 for the time being as
this information is not passed over MOV.
Olivier Crête [Fri, 14 Dec 2018 01:45:23 +0000 (20:45 -0500)]
rtpjitterbuffer tests: Validate the number of buffers
Olivier Crête [Fri, 14 Dec 2018 00:17:43 +0000 (19:17 -0500)]
rtpjitterbuffer: Run all timers immediately on EOS
When the EOS event is received, run all timers immediately and avoid
pushing the EOS downstream before this has been run. This ensures that
the lost packet statistics are accurate.
Olivier Crête [Fri, 14 Dec 2018 00:16:11 +0000 (19:16 -0500)]
rtpjitterbuffer test: Stop jitterbuffer before pads to avoid race
The teardown of the pads checks the refcount, but there are timers
inside the jitterbuffer that can push things, so if we're not lucky,
things could be pushed while the pads are being shut down. Putting the
jitterbuffer to NULL first avoids this.
Nicolas Dufresne [Thu, 22 Nov 2018 15:41:29 +0000 (10:41 -0500)]
rtpjitterbuffer: Stop waiting after EOS
After EOS is received, it is pointless to wait for further events,
specially waiting on timers. This patches fixes two cases where we could
wait instead of returning GST_FLOW_EOS and trigger a spin of the loop
function when EOS is queued, regardless if this EOS is the queue head or
not.
Jochen Henneberg [Sat, 27 Oct 2018 11:41:46 +0000 (13:41 +0200)]
flacdec: Use new channel count for audio info
Jochen Henneberg [Sat, 27 Oct 2018 11:36:16 +0000 (13:36 +0200)]
flacdec: Caps may have changed on FLAC metadata change
If the decoder signals metadata change we need to update the output
format and negotiate with downstream elements.
Jochen Henneberg [Sat, 27 Oct 2018 11:28:56 +0000 (13:28 +0200)]
flacdec: Reset decoder on set_format()
Any call to set_format() could mean that the stream type changed so we
reset the decoder and mark got_headers FALSE.
Jochen Henneberg [Wed, 5 Dec 2018 17:42:55 +0000 (18:42 +0100)]
flacparse: On sink caps change restart parser
Draining the parser is not enough here, on caps change we need to
reset it so it is ready to accept new caps.
Jochen Henneberg [Tue, 4 Dec 2018 17:50:51 +0000 (18:50 +0100)]
rtpgstdepay: Update pad caps if inline caps change
If the inlined caps change while using the same CV we need to update the
source pad caps.
Justin Kim [Fri, 14 Dec 2018 03:21:58 +0000 (12:21 +0900)]
osxvideo: meson: Add dependencies by using appleframeworks
Otherwise, it fails to link.
gst-build#13
Sebastian Dröge [Fri, 7 Dec 2018 17:09:30 +0000 (19:09 +0200)]
cairooverlay: Optimize premultiplication/unpremultiplication loops
Pull in video frame fields into local variables. Without this the
compiler must assume that they could've changed on every use and read
them from memory again.
This reduces the inner loop from 6 memory reads per pixels to 4, and the
number of writes stays at 3.
Sebastian Dröge [Wed, 5 Dec 2018 17:37:13 +0000 (19:37 +0200)]
qtdemux: Put framerate into the closedcaption caps if it can be calculated from the stream
Using the same calculation used for video streams.
Sebastian Dröge [Wed, 5 Dec 2018 17:31:25 +0000 (19:31 +0200)]
qtmux: Set timescale of closedcaption tracks to the one of the main video track
Thibault Saunier [Wed, 5 Dec 2018 20:24:13 +0000 (17:24 -0300)]
Automatic update of common submodule
From ed78bee to 59cb678
Maciej Wolny [Mon, 19 Nov 2018 18:20:52 +0000 (18:20 +0000)]
Remove duplicate declarations
This causes 'redefinition of typedef ...' errors on GCC 4.5.3
Tim-Philipp Müller [Fri, 30 Nov 2018 23:56:12 +0000 (23:56 +0000)]
tests: rtpssrcdemux: fix uninstalled autotools build and distcheck
Alicia Boya García [Fri, 30 Nov 2018 18:29:30 +0000 (19:29 +0100)]
qtdemux: set need_segment after a second moov
stream.segment should be updated with the values of the current edit
list, also when a new `moov` is received. Unfortunately this was not
being the case because of an early return.
As a consequence of this bugs, no end of movie clipping was being
performed on the new moov and no segment event was being emitted.
When performing stream switching (e.g. in MSE) the new moov may have a
different edit list. This is often the case when switching between
baseline H.264 (which lacks B-frames) and more demanding profiles. For
this reason it's important to emit a new segment in order to be able
to get matching stream times.
Alicia Boya García [Thu, 29 Nov 2018 21:42:34 +0000 (22:42 +0100)]
qtdemux: Initialize QtDemuxStream.segment in its constructor
This patch moves the initialization of QtDemuxStream.segment from
gst_qtdemux_add_stream() to _create_stream(). This ensures the segment
is always initialized when the stream is created.
Otherwise the segment format is left as GST_FORMAT_UNDEFINED in the case
were a track is reparsed and qtdemux_reuse_and_configure_stream() is
called instead of gst_qtdemux_add_stream(). (See
qtdemux_expose_streams() in the non streams-aware case.)
Miguel Paris [Thu, 29 Nov 2018 12:48:33 +0000 (13:48 +0100)]
rtpsession: properly handle rtcp_feedback_retention_window
- Consider GST_CLOCK_TIME_NONE as not to be used.
- Complete "rtcp-feedback-retention-window" property getter/setter
implementation.
Miguel Paris [Thu, 29 Nov 2018 12:02:53 +0000 (13:02 +0100)]
rtpsource: properly prune RTCP packets out of feedback_retention_window
Closes #522
Miguel Paris [Thu, 29 Nov 2018 12:01:44 +0000 (13:01 +0100)]
rtpsource: properly compare buffer PTSs
Miguel Paris [Thu, 29 Nov 2018 11:58:18 +0000 (12:58 +0100)]
rtpsource: retain_rtcp_packet: warning if invalid running_time
Miguel Paris [Thu, 29 Nov 2018 11:55:38 +0000 (12:55 +0100)]
rtpsession: properly set the running_time for rtcp packet info
Nicolas Dufresne [Thu, 29 Nov 2018 19:54:06 +0000 (14:54 -0500)]
rtpssrcdemux: Rename confusingly name lock macros
This is an extra internal recurisve lock use to avoid having to take
both sink pad streams lock all the time. This patch renamed it
INTERLNAL_STREAM_LOCK/UNLOCK() to avoid confusion with possible upstream
GST_PAD API.
Nicolas Dufresne [Wed, 28 Nov 2018 22:14:11 +0000 (17:14 -0500)]
rtpssrcdemux: Hold on internal stream lock while pushing sticky
This reverts "
6f3734c305 rtpssrcdemux: Only forward stick events while
holding the sinkpad stream lock" and actually hold on the internal
stream lock. This prevents in some needed case having a second
streaming thread poping in and messing up event ordering.
Nicolas Dufresne [Tue, 27 Nov 2018 22:10:57 +0000 (17:10 -0500)]
test: rtpssrcdemux: Test event forwarding
This the first unit test of this element. It adds a test that verify
that events are forwarded correctly.
Matej Knopp [Wed, 4 Nov 2015 11:52:17 +0000 (12:52 +0100)]
matroskademux: fix handling of MS ACM audio
Pass riff codec-data as strf, not strd, which is where
gst_riff_create_audio_caps() expects the WAVEFORMATEXTENSIBLE
data.
https://bugzilla.gnome.org/show_bug.cgi?id=757583
Fixes #234
Jordan Petridis [Wed, 28 Nov 2018 03:52:16 +0000 (05:52 +0200)]
Run gst-indent through the files
This is required before we enabled an indent test in the CI.
https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/33
Thibault Saunier [Mon, 26 Nov 2018 11:10:24 +0000 (08:10 -0300)]
aspectcropration: Fix potential unref of NULL pointer
Thibault Saunier [Sun, 25 Nov 2018 14:31:11 +0000 (11:31 -0300)]
aspectcropratio: Set caps from the streaming thread on property changes
Otherwise it might lead to deadlocks
See https://gitlab.gnome.org/GNOME/pitivi/issues/2259
Closes #518
Nicolas Dufresne [Fri, 23 Nov 2018 19:01:35 +0000 (14:01 -0500)]
rtpssrcdemux: Forward serialized events to all pads
While forwarding serialized event, we use gst_pad_forward() function.
In the forward callback (GstPadForwardFunction) we always return
TRUE. Returning true there will stop the dispatching procedure. As a
side effect, only one events is receiving the events. This breaks
when sending EOS from the applicaiton, it also breaks the latency
tracer.
Seungha Yang [Sat, 24 Nov 2018 10:13:28 +0000 (19:13 +0900)]
meson: Specify encoding to UTF-8 when building with MSVC
Use build arguments consistent with core and -base. This can also
remove noisy "C4819" warning of non-us locale MSVC.
Xavier Claessens [Wed, 21 Nov 2018 20:11:00 +0000 (15:11 -0500)]
Check for zlib header
Nicolas Dufresne [Wed, 21 Nov 2018 23:53:39 +0000 (18:53 -0500)]
v4l2: Properly fix Android build
The previous patch did not even compile on any possible platform or C
standard. That commit also didn't have a proper commit message.
Android ships Linux with a different signature for ioctl. They first
released an ioctl with int as request type, and later "fixed" it by
adding an override with unsign, which is still not matching Linux and
BSD implementation which uses unsigned long int.
Xavier Claessens [Wed, 21 Nov 2018 21:11:02 +0000 (16:11 -0500)]
Fix ioctl() signature on Android
Xavier Claessens [Tue, 9 Oct 2018 20:43:08 +0000 (16:43 -0400)]
Fix zlib detection when there is no pkg-config file
Arun Raghavan [Mon, 19 Nov 2018 14:35:39 +0000 (20:05 +0530)]
pulse: Expose the correct max rate that we support
PulseAudio defines PA_RATE_MAX as the maximum sampling rate that it
supports. We were previously exposing a maximum rate of INT_MAX, which
is incorrect, but worked because nothing was really using a rate greater
than 384000 kHz.
While playing DSD data, we hit a case where there might be very high
sample rates (>1MHz), and pulsesink fails during stream creation with
such streams because it erroneously advertises that it supports such
rates.
Since PA_RATE_MAX is #define'd to (8*48000U), we can't just use it in
the caps string. Instead, we fix up the rate to what we actually support
whenever we use our macro caps.
Alicia Boya García [Wed, 14 Nov 2018 07:57:55 +0000 (08:57 +0100)]
matroskademux: Defer seeks received before GST_MATROSKA_READ_STATE_DATA
This patch enables matroskademux to receive seeks before it reaches
GST_MATROSKA_READ_STATE_DATA.
Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/514
This also enables receiving seeks in the element READY state.
When such a seek is received, it is stored to be later handled when
GST_MATROSKA_READ_STATE_DATA is reached.
Linus Svensson [Tue, 16 Oct 2018 10:38:46 +0000 (12:38 +0200)]
rtpsession: Implement reset
Reset RTPSession when rtpsession changes state from PAUSED to READY.
Without this change, a stored last_rtptime in RTPSource could interfere
with RTP timestamp generation in RTCP Sender Report.
Fixes #510
Linus Svensson [Tue, 6 Nov 2018 14:05:54 +0000 (15:05 +0100)]
rtpsession: test: Plug memory leak
Mathieu Duponchelle [Mon, 12 Nov 2018 23:37:11 +0000 (00:37 +0100)]
rtpfunnel: Stop using G_DECLARE_FINAL_TYPE
Fixes #516
Jordan Petridis [Mon, 12 Nov 2018 11:42:29 +0000 (13:42 +0200)]
Add Gitlab CI configuration
This commit adds a .gitlab-ci.yml file, which uses a feature
to fetch the config from a centralized repository. The intent is
to have all the gstreamer modules use the same configuration.
The configuration is currently hosted at the gst-ci repository
under the gitlab/ci_template.yml path.
Part of https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/29
Nicolas Dufresne [Fri, 19 Oct 2018 02:23:31 +0000 (22:23 -0400)]
v4l2object: Read driver selected interlace mode
If there was no interlace-mode field in the caps. Read back the value
selected by the driver. This way, if the driver does not support
progressive, then it will automatically negotiate the returned mode
unless this mode is not supported by GStreamer.
This method was already used for colorimetry. Just like colorimetry, the
interlace mode is not longer probed by v4l2src dues to performance
issues.
Fixes #511
Matthew Waters [Thu, 17 May 2018 11:58:25 +0000 (21:58 +1000)]
matroska: implement preliminary support for the bitrate query
Return the size / total duration as a ballpark estimate.
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
Matthew Waters [Thu, 17 May 2018 11:53:56 +0000 (21:53 +1000)]
isomp4: add preliminary support for the bitrate query
Return the upstream size over the duration as a first estimate.
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
Sebastian Dröge [Tue, 6 Nov 2018 21:02:21 +0000 (23:02 +0200)]
rtpbin: Sink jitterbuffer/storage before passing as parameters to signals
Otherwise signal handlers from bindings will take ownership of them as
they are still floating, and we won't own a reference inside rtpbin
anymore.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/515
Havard Graff [Sat, 27 Oct 2018 17:00:52 +0000 (18:00 +0100)]
flvmux: Test that timestamps are always increasing
Decreasing timestamps break rtmpsink.
With contributions from Olivier Crête.
https://bugzilla.gnome.org/show_bug.cgi?id=796382
Olivier Crête [Sat, 27 Oct 2018 18:27:12 +0000 (19:27 +0100)]
flvmux: Force timestamps to always be increasing
https://bugzilla.gnome.org/show_bug.cgi?id=796382
Matthew Waters [Mon, 5 Nov 2018 05:36:26 +0000 (05:36 +0000)]
Update common submodule location
Remove the git directory
Haihao Xiang [Mon, 5 Nov 2018 04:16:46 +0000 (12:16 +0800)]
Clone the code from gitlab
This fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/513
Seungha Yang [Thu, 1 Nov 2018 11:37:12 +0000 (20:37 +0900)]
qtdemux: Ignore corrupted CTTS box
If ctts (CompositionOffsetBox) has larger sample_offset
(offset between PTS and DTS) than (2 * duration) of the stream,
assume the ctts box to be corrupted and ignore the box.
https://bugzilla.gnome.org/show_bug.cgi?id=797262
Sebastian Dröge [Tue, 23 Oct 2018 08:45:36 +0000 (09:45 +0100)]
scaletempo: Implement SEGMENT query
https://bugzilla.gnome.org/show_bug.cgi?id=797313
Sebastian Dröge [Tue, 23 Oct 2018 08:42:21 +0000 (09:42 +0100)]
wavparse: Implement SEGMENT query
https://bugzilla.gnome.org/show_bug.cgi?id=797313
Olivier Crête [Sun, 28 Oct 2018 17:12:59 +0000 (17:12 +0000)]
dtmfsrc: Declare output as interleaved
This element doesn't support planar audio yet.
Nirbheek Chauhan [Sun, 28 Oct 2018 14:09:21 +0000 (14:09 +0000)]
meson: Add some missing test dependencies
Without these dependencies, the enumtype may not be generated when the
test is built, which will cause a compile failure.
Nirbheek Chauhan [Sun, 28 Oct 2018 14:07:54 +0000 (14:07 +0000)]
meson: Cleanup old FIXMEs that relied on meson changes
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