Nicolas Dufresne [Sun, 12 Jan 2020 00:26:24 +0000 (19:26 -0500)]
tests: rtpbasedepayload: Test flow return whith push/push_list
This validate that the base class properly save and return the flow
return value received when gst_rtp_base_depay_push/push_list() helper is
being used.
Nicolas Dufresne [Fri, 22 Nov 2019 02:04:14 +0000 (21:04 -0500)]
rtpbasepayload: Save and forward the push flow return
Save push/push_list helper flow return and in case of failure, return it
in the process function. This allow forwarding downstream flow return
even if the subclass is using the push/push_list helper.
Víctor Manuel Jáquez Leal [Sun, 3 Nov 2019 14:52:28 +0000 (15:52 +0100)]
playbin3: handle GST_PLAY_FLAG_FORCE_SW_DECODERS
In decodebin3 and uridecodebin3 the `force-sw-decoders` boolean property is
added. In uridecodebin3 it is only a proxy property which will forward
the value to decodebin3.
When decodebin3 has `force-sw-decoders` disabled, it will filter out in its
decoder and decodable factories those elements within the 'Hardware'
class, at reconfiguring output stream.
playbin3 adds by default GST_PLAY_FLAG_FORCE_SW_DECODERS, and sets
`force-sw-decoders` property accordingly to its internal uridecodebin, also
filters out the 'Hardware' class decoder elements when caps
negotiation.
Víctor Manuel Jáquez Leal [Sun, 3 Nov 2019 14:37:44 +0000 (15:37 +0100)]
playbin2: handle GST_PLAY_FLAG_FORCE_SW_DECODERS
Added `force-sw-decoders` boolean property in decodebin2 and
uridecodebin. By default the property is %FALSE and it bypass the new
code. Otherwise the factory list is filtered removing decoders
within 'Hardware' class.
uridecodebin sets the `force-sw-decoders` property in its internal
decodebin, and also filters out Hardware class in the
autoplug-factories default signal handler.
playbin2 adds by default GST_PLAY_FLAG_FORCE_SW_DECODERS it its flags
property, and depending on it playbin2 sets the `force-sw-decoders`
property on its internal uridecodebin, also filters out the Hardware
class decoding decoders at the autoplug-factories signal handler.
Víctor Manuel Jáquez Leal [Sun, 3 Nov 2019 14:16:04 +0000 (15:16 +0100)]
playback: add GST_PLAY_FLAG_FORCE_SW_DECODERS enum
This flag would be common either for playbin2 and playbin3.
Tim-Philipp Müller [Wed, 8 Jan 2020 17:28:46 +0000 (17:28 +0000)]
meson: add graphene subproject
So we can build all the OpenGL elements.
Sebastian Dröge [Wed, 8 Jan 2020 06:29:18 +0000 (08:29 +0200)]
compositor: memcpy() lines directly for alpha formats with SOURCE operator and alpha=1.0
Randy Li [Wed, 8 Jan 2020 02:34:17 +0000 (02:34 +0000)]
rawvideoparse: allow setting the colorimetry
You can neither guess nor parse the colorimetry from the
input stream.
Signed-off-by: Randy Li <ayaka@soulik.info>
Sebastian Dröge [Tue, 7 Jan 2020 18:01:14 +0000 (20:01 +0200)]
compositor: Alpha inputs with the SOURCE operator can be considered opaque
We don't have to look at each pixel's alpha component because we will
directly write it over the background.
Ryan Huang [Tue, 31 Dec 2019 07:08:05 +0000 (23:08 -0800)]
Fix link to raw video format design document
Philippe Normand [Sun, 11 Aug 2019 10:25:50 +0000 (11:25 +0100)]
playbin3: Propagate sink context
When the playsink's sink is activated its state is set to READY but it remains
unlinked. So, in order for decodebin3 to potentially reuse the context later on,
the whole playbin3 needs to have it internally stored.
Seungha Yang [Tue, 31 Dec 2019 06:49:05 +0000 (15:49 +0900)]
playbin: Propagate sink context
Any contexts created by sink during activation need to be propagated
to whole elements of playbin.
Aaron Boxer [Fri, 6 Dec 2019 13:47:14 +0000 (08:47 -0500)]
rtspurl: add API method to create request uri combined with control url
code logic very similar to gst_rtsp_url_get_request_uri ()
Mathieu Duponchelle [Fri, 27 Dec 2019 11:53:41 +0000 (12:53 +0100)]
gstvideoaggregator: always update converter when needed
In prepare_frame, it is not enough for the target info
(conversion_info) to not have changed to decide not to update
the converter, as the vpad info may have changed as well.
Fixes #714
Sebastian Dröge [Fri, 27 Dec 2019 09:34:26 +0000 (11:34 +0200)]
fft: Update our kiss fft version
This fixes thread-safety issues and various other minor issues. Our
previous version was about 13 years old.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/715
Seungha Yang [Fri, 20 Dec 2019 03:27:57 +0000 (12:27 +0900)]
glwindow/win32: Don't post any WinProc message to parent window
Posting any message to parent seems to be pointless. That might break
parent window.
Regardless of the posting, parent window can catch mouse event
and also any keyboard events will be handled by parent window by default.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/634
Aaron Boxer [Thu, 19 Dec 2019 19:48:43 +0000 (14:48 -0500)]
playbin: remove deprecated raw audio and raw video sink flags
These flags were deprecated in 2011 with commit
105da803ade859fb299ed3c5265d6acdd168ca8f
Removing these flags will simplify the logic in playbin.
Stéphane Cerveau [Fri, 6 Sep 2019 16:07:48 +0000 (18:07 +0200)]
tests: add video encoder test with subframes API
Stéphane Cerveau [Thu, 12 Sep 2019 10:07:08 +0000 (12:07 +0200)]
videoencoder: send new headers in finish_frame
If headers have been set by subclass, this headers should be sent
for a first time or on demand with a key-unit
Stéphane Cerveau [Wed, 25 Sep 2019 08:45:28 +0000 (10:45 +0200)]
videoencoder: Use video marker flag to signal end of frame
This marker is optional, its name refer to RTP marker bit. This mark can
be use to reduce latency in various use cases. With the split between
finish_frame() and finish_subframe() we will now be able to identitfy
the last subframe with no latency.
In order to detail the use of GST_BUFFER_FLAG_MARKER in a video
use case, the flag GST_VIDEO_BUFFER_FLAG_MARKER has been introduced
with a proper documentation clarifying marker's role.
Guillaume Desmottes [Fri, 31 Aug 2018 10:09:57 +0000 (12:09 +0200)]
videoencoder: add API to push subframes
Introduce a new API so encoders can split the encoding in subframes.
This can be useful to reduce the overall latency as we no longer need to
wait for the full frame to be encoded to start decoding or sending it.
Guillaume Desmottes [Fri, 31 Aug 2018 08:55:30 +0000 (10:55 +0200)]
videoencoder: factor out logic from gst_video_encoder_finish_frame()
No semantic change, I'm going to reuse all those functions in a new
finish_slice() methods.
Jonas Holmberg [Fri, 20 Dec 2019 12:35:53 +0000 (13:35 +0100)]
audioencoder: fix segment event leak
Segment event was leaked if format != _TIME.
Olivier Crête [Thu, 19 Dec 2019 22:52:12 +0000 (17:52 -0500)]
Revert "videoencoder: factor out logic from gst_video_encoder_finish_frame()"
This reverts commit
b1ec312b8ed39ffaeeca1f5a8a014acd4b74d5f9.
Stéphane Cerveau [Thu, 19 Dec 2019 21:59:10 +0000 (21:59 +0000)]
videoencoder: factor out logic from gst_video_encoder_finish_frame()
No semantic change, I'm going to reuse all those functions in a new
finish_slice() methods.
Olivier Crête [Tue, 10 Dec 2019 23:03:05 +0000 (18:03 -0500)]
rtspconnection: Add functions without GTimeVal deprecate existing
GTimeVal is now deprecated in GLib, so let's deprecate it here too
Olivier Crête [Tue, 10 Dec 2019 22:09:57 +0000 (17:09 -0500)]
tests: Remove deprecated GTimeVal
GTimeVal won't work past 2038
Stéphane Cerveau [Wed, 18 Dec 2019 15:03:54 +0000 (16:03 +0100)]
base: use of g_value_dup_string
Use helper method to get string from GValue.
Stéphane Cerveau [Wed, 11 Dec 2019 09:07:12 +0000 (10:07 +0100)]
remove various useless linefeed in logs
Tim-Philipp Müller [Sun, 8 Dec 2019 01:17:31 +0000 (01:17 +0000)]
tests: actually define HAVE_VALGRIND
This stuff should probably be done differently, but
for now just define it like we used to.
Tim-Philipp Müller [Sun, 8 Dec 2019 00:52:17 +0000 (00:52 +0000)]
xvimage: remove unused HAVE_XVIDEO define
Tim-Philipp Müller [Sun, 8 Dec 2019 00:50:03 +0000 (00:50 +0000)]
test: fix up HAVE_X11 / HAVE_X defines
Only HAVE_X was defined, while both HAVE_X11 and HAVE_X were used.
Tim-Philipp Müller [Sun, 8 Dec 2019 00:00:37 +0000 (00:00 +0000)]
typefindfunctions: build gio xdgmime typefinder again
And add gio-typefinder option to disable it. HAVE_GIO
was never set, at least not in the Meson build.
Tim-Philipp Müller [Sat, 7 Dec 2019 21:13:09 +0000 (21:13 +0000)]
tests: simple-launch-lines: remove use of unused HAVE_LIBVISUAL define
This is not set anywhere, and it's pretty clear the pipeline in
question has not been tested in a long time. Disable test with
a FIXME, test needs to be rewritten to not use real output devices.
Tim-Philipp Müller [Sat, 7 Dec 2019 21:02:53 +0000 (21:02 +0000)]
tests: gl-launch-lines: check for features at runtime
Instead of using HAVE_PNG and HAVE_JPEG defines.
Tim-Philipp Müller [Sat, 7 Dec 2019 20:47:01 +0000 (20:47 +0000)]
multifdsink: remove defunct include guarded by unused HAVE_FIONREAD_IN_SYS_FILIO
The configure check for this went away in 2012 in commit cd3eee.
Tim-Philipp Müller [Sat, 7 Dec 2019 14:36:36 +0000 (14:36 +0000)]
tests: oggmux: check vorbisenc + theoraenc availability at runtime
HAVE_VORBIS was used but never set, so only 3 out of 7 tests
actually ran. Drop now-unused HAVE_THEORA define.
Tim-Philipp Müller [Sat, 7 Dec 2019 14:22:06 +0000 (14:22 +0000)]
tests: playback: include stdlib.h unconditionally
Like we do elsewhere. And drop the check for the header.
Also remove some superfluous unistd.h includes.
Tim-Philipp Müller [Sat, 7 Dec 2019 14:12:04 +0000 (14:12 +0000)]
vorbis: drop unneeded check for vorbis_synthesis_restart()
This was added in 1.0.1 more than 16 years ago, I think we
can safely assume this is always present now. Also in tremor.
While at it, bump vorbis requirement to 1.3.1 from 2010.
Tim-Philipp Müller [Sat, 7 Dec 2019 14:04:00 +0000 (14:04 +0000)]
pango: check if localtime_r is available
HAVE_LOCALTIME_R was used, but never defined.
Seungha Yang [Sun, 8 Dec 2019 09:13:55 +0000 (18:13 +0900)]
examples: overlaycomposition: Fix implicit declaration warning
overlaycomposition.c:276:5: warning: implicit declaration of function 'exit' [-Wimplicit-function-declaration]
overlaycomposition.c(263): warning C4090: 'initializing': different 'const' qualifiers
Seungha Yang [Sun, 8 Dec 2019 09:12:00 +0000 (18:12 +0900)]
examples: win32-videooverlay: Remove unused variable
win32-videooverlay.c:34:20: warning: 'msg_io_channel' defined but not used [-Wunused-variable]
Stéphane Cerveau [Tue, 3 Dec 2019 23:35:23 +0000 (23:35 +0000)]
codec-utils: add h264 constrained and progressive profiles
Those profiles have been added in the version 2012-01
and 2011-06 of the AVC spec.
Aligned code with https://bugzilla.gnome.org/show_bug.cgi?id=794127
Matthew Waters [Tue, 3 Dec 2019 03:16:06 +0000 (14:16 +1100)]
build: use -fvisibility=hidden for objc code
Matthew Waters [Tue, 3 Dec 2019 03:15:58 +0000 (14:15 +1100)]
gl/macos+ios: privatise _invoke_on_main()
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1132
Mart Raudsepp [Wed, 27 Nov 2019 18:42:34 +0000 (20:42 +0200)]
videoaggregator: don't let a repeat-after-eos pad prevent EOS
.. if there are pads present that are not repeating after EOS.
Fixes #664
Mart Raudsepp [Wed, 27 Nov 2019 13:54:57 +0000 (15:54 +0200)]
tests: expand compositor repeat-after-eos tests for multiple pads
If there are any pads with repeat-after-eos NOT set, then the compositor
should EOS after all of those pads have gone EOS, but not before all
repeat-after-eos pads have as well.
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/664
Thibault Saunier [Tue, 4 Jun 2019 14:05:54 +0000 (10:05 -0400)]
tools: Add support for CameraSource pipeline description
Edward Hervey [Fri, 8 Nov 2019 14:13:59 +0000 (15:13 +0100)]
video-converter: Fix RGB-XYZ-RGB conversion
The matrices were in the wrong order.
Instead of the conversion matrix being
_ XYZ_TO_RGB_output * RGB_TO_XYZ_input * input_RGB
It was
_ RGB_TO_XYZ_input * XYZ_TO_RGB_output * input_RGB
Akinobu Mita [Tue, 21 May 2019 12:59:23 +0000 (21:59 +0900)]
ximagesink, xvimagesink: don't use XkbKeycodeToKeysym if Xkb is unavailable
ximagesink and xvimagesink use XkbKeycodeToKeysym when the key event is
received. However, this function returns NoSymbol if Xkb is unavailable.
This causes all key events to be translated to "unknown" key when running
ximagsink under some VNC.
Fix it by using XKeycodeToKeysym if Xkb is unavailable.
Seungha Yang [Fri, 27 Sep 2019 11:08:39 +0000 (20:08 +0900)]
gst-play: Handle KeyDown event instead of KeyUp on Win32 keyboard handler
To handle long press case, KeyDown input should be handled instead of KeyUp.
Note that OS will take care of the sensitivity of KeyDown event, so we can safely
assume one KeyDown as one input. That will not break user experience.
Seungha Yang [Fri, 27 Sep 2019 10:26:03 +0000 (19:26 +0900)]
gst-play: Remove timer GSource from Win32 keyboard handler
Use WaitForMultipleObjects to handle keyboard input only if pending
keyboard input exists.
Seungha Yang [Wed, 13 Nov 2019 10:37:29 +0000 (19:37 +0900)]
examples: win32-videooverlay: Add an option for testing reuse of external window
Adding "repeat" option to test a case where external window is reused.
Seungha Yang [Thu, 7 Nov 2019 13:00:03 +0000 (22:00 +0900)]
audiorate: Update next_offset per rate change
To support runtime audio samplerate change, re-calculate next target offset
per caps. Calculating the next buffer offset using the previous
offset seems to be tricky and rounding error prone.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/693
Seungha Yang [Thu, 7 Nov 2019 12:42:25 +0000 (21:42 +0900)]
Revert "audiorate: accumulate offset by time diff"
This reverts commit
4fa850e3e6c039000fc7f648de238af6c2278469.
The commit would break an constant rate audio stream with gap.
Seungha Yang [Fri, 8 Nov 2019 08:28:44 +0000 (17:28 +0900)]
xvimagepool: Update size, stride, and offset with allocated XvImage
Memory layout of XvImage might be different from that of GstVideoInfo.
If so, the image size, stride, and offset would be wrongly informed.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/677
Seungha Yang [Fri, 8 Nov 2019 08:33:17 +0000 (17:33 +0900)]
xvimagepool: Fix confusing debug message for padding size
Ambareesh "Amby" Balaji [Sun, 17 Nov 2019 18:23:59 +0000 (18:23 +0000)]
opusenc: Add low delay option
Fixes #681
Jochen Henneberg [Mon, 26 Aug 2019 13:03:48 +0000 (15:03 +0200)]
audioringbuffer: Reset reorder flag before check
This function might be revisited with different channel position mapping
while audio source goes into play so the reorder flag needs to be reset
before the checks happen.
Wonchul Lee [Fri, 15 Nov 2019 09:06:13 +0000 (18:06 +0900)]
glupload: Fix allocator leak
It fixes allocator leak in failure case
Seungha Yang [Fri, 15 Nov 2019 03:19:56 +0000 (12:19 +0900)]
examples: overlaycomposition: Fix typo
Sorry for the noise. Default should be autovideosink
Guillaume Desmottes [Wed, 13 Nov 2019 09:58:20 +0000 (15:28 +0530)]
video-info: improve GST_CAPS_FEATURE_FORMAT_INTERLACED documentation
Copied the description from gst-doc written by Tim.
Fix #606
Matthew Waters [Tue, 12 Nov 2019 01:17:44 +0000 (12:17 +1100)]
gl/window: marshall quit to the window thread
Fixes a possible deadlock where we're waiting for the window thread to
quit but it never does.
Sebastian Dröge [Thu, 14 Nov 2019 11:37:58 +0000 (12:37 +0100)]
audio-buffer: Don't fail to map buffers with zero samples
Instead initialize the map infos, etc to NULL like gst_buffer_map()
would be doing on a zero-sized buffer.
This fixes a crash in audioresample if the first output buffer would
contain zero samples.
Seungha Yang [Tue, 12 Nov 2019 12:15:38 +0000 (21:15 +0900)]
examples: overlaycomposition: Add option for videosink element selection
It would be useful for testing overlaycomposition with specific videosink element.
Wonchul Lee [Wed, 13 Nov 2019 08:31:29 +0000 (17:31 +0900)]
glcontext/egl: Fix window leak
Fixed to do unref after use of window get by gst_gl_context_get_window()
Nicolas Dufresne [Mon, 11 Nov 2019 01:05:59 +0000 (20:05 -0500)]
gldownload: Fix renegotiation loop
When DMABuf was tried, we would renegotiate back and fourth between
DMABuf and system memory if the export failed. This would happen for
every single frame.
This patch introduces try_dmabuf_exports boolean, which is unset when
an export failed. This boolean is then put back to TRUE when upstream
pushes new caps, or downstream pushes a reconfigure event.
Nicolas Dufresne [Mon, 11 Nov 2019 01:02:09 +0000 (20:02 -0500)]
gldownload: Refactor download mode selection
This introduces an enum in order to cleanup how we select the
transfer mode. It also fixes the case where we callback to PBO but
we didn't execute the PBO. That was not causing any issue, just that
the processing latency would be delayed to the next element, which
can be confusing.
Nicolas Dufresne [Sun, 14 Jul 2019 20:42:17 +0000 (16:42 -0400)]
eglimage: Fix extension names in dmabuf import check
There was a typo in the extension name which resulted in the modifiers
to never be set when doing DMABuf import. That triggered the modifiers
lookup in Intel driver, which was in fact hiding bugs in the gldownload
to glupload path when doing DMABuf.
Note, this changes breaks pipeline the following pipeline on Intel and
some other drivers:
gltestsrc ! gldownload ! video/x-raw\(memory:DMABuf\) ! glimagsink
A fix for this was added to Mesa recently:
Related to https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1338
Fixes
5d0e191710
Nicolas Dufresne [Sun, 14 Jul 2019 20:33:35 +0000 (16:33 -0400)]
eglimage: Fix exported DMABuf size
All we know is the height and the stride, so make sure not to expose
the DMABuf larger then the size we know about.
Nicolas Dufresne [Wed, 25 Apr 2018 17:09:05 +0000 (13:09 -0400)]
eglimage: Fail exportation if a modififer is used
We don't support modififers and that would result in bad image being
displayed. Note that this was fixes recently in Mesa MR 1138, prior to
that, the reported modifier is always 0, which makes this change a
no-op.
Fixes #441
Related to https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1338
Nicolas Dufresne [Sat, 3 Aug 2019 17:14:53 +0000 (13:14 -0400)]
gldownload: Wait on sync meta if any
This is possibly not strictly needed when pixels are being downloaded to
CPU memory, but would cause issue when exporting DMABuf, as the data may
not be yet ready when the DMABuf reaches the consumer.
Thibault Saunier [Tue, 3 Sep 2019 20:03:49 +0000 (16:03 -0400)]
playbin: Handle error message with redirection indication
There are in the wild (mp4) streams that basically contain no tracks
but do have a redirect info[0], in which case, qtdemux won't be able
to expose any pad (there are no tracks) so can't post anything but
an error on the bus, as:
- it can't send EOS downstream, it has no pad,
- posting an EOS message will be useless as PAUSED state can't be
reached and there is no sink in the pipeline meaning GstBin will
simply ignore it
In that case, currently the application could try to handle that but it
is pretty complex as it will get the REDIRECT message on the bus at
which point it could set the URL but playbin will ignore it, as
it will only be for the next EOS, it thus need to set the pipeline to
NULL (READY won't do as it is already in READY at that point). And it
needs to figure out the following ERROR message on the bus needs to be
ignored, which is not really simple.
The approach here is to allow element to add details to the ERROR
message with a `redirect-location` field which elements like playbin handle
and use right away.
We could also use the element 'redirect' message in playbin, but the
issue with that approach is that the element will still emit the ERROR
message on the bus, leading to wrong behaviour. That can't be avoided
since in the case the app/parent pipeline is not handling the redirect
instruction, the ERROR message is necessary (and there is no way to
detect that the message has been "handled" from the element emitting the
redirect).
[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
Aaron Boxer [Thu, 19 Sep 2019 21:12:25 +0000 (15:12 -0600)]
overlaycomposition: set sink pad to proxy allocation queries
Matthew Waters [Sat, 2 Nov 2019 13:46:49 +0000 (00:46 +1100)]
display: add a specific lock for the list of windows
It's either this or replacing all the object lock usage in gldisplay
with a recursive mutex which is not backwards compatible
The failure case is effectively:
1. The user has locked the display object lock
2. a glcontext loses it's last ref and attempts to quit the window
3. gst_gl_window_quit() attempts to remove the window from the display
4. gst_gl_display_remove_window attempts to take the display object lock
The only concern with changing the locking for the window list in the
display is that gst_gl_display_create_window() has documentation requiring
the object lock to be held which must continue to work correctly.
Matthew Waters [Fri, 8 Mar 2019 06:43:40 +0000 (17:43 +1100)]
glwindow: fix racy resize updates
Take locks around resize handling and marshall all resizes to the
windowing thread by default.
Matthew Waters [Fri, 8 Mar 2019 06:40:52 +0000 (17:40 +1100)]
glwindow: remove window from display list on quit/finalize
Fixes a possible use-after-free in the X11 backend.
Matthew Waters [Sat, 2 Nov 2019 11:58:42 +0000 (22:58 +1100)]
gl/display: Add thread-safe retrieve_window
Returning a transfer none value for a value checked by a lock is not
thread safe as the reference could disappear before the caller can take
its reference.
Thibault Saunier [Fri, 30 Aug 2019 21:16:35 +0000 (17:16 -0400)]
encodebin: Ensure that a single segment is pushed into encoders
Following the [design document] encodebin needs to handle sources that
output multiple streams, for that purpose and to make it simpler,
we ensure that a single segment is outputted to the encoders by using
an `identity single-segment=true` at the beginning of streams chains.
Added API to enable or disable the use of that new feature.
Added support for the encoding profile parser for that new property,
keeping backward compatibility
[design document]: https://gstreamer.freedesktop.org/documentation/additional/design/encoding.html?gi-language=c#rendering-timelines
Havard Graff [Tue, 19 Mar 2019 15:20:01 +0000 (16:20 +0100)]
rtcpbuffer: add RTPFB_TYPE_TWCC for Transport-Wide Congestion Control
Jochen Henneberg [Sun, 3 Nov 2019 10:25:55 +0000 (10:25 +0000)]
audioconvert: Fixed changing mix-matrix at runtime
Setting the property again after it had already been set ran
g_value_unset() but did not initialize it again to g_value_copy() failed
afterwards. Removed the unset as cleanup is done implicitely from
g_value_copy().
Changing the mix-matrix property did not trigger reconfiguration of the
caps, this has been added.
If the matrix is set to an empty matrix, instead of copying this the
matrix is simply disabled by setting mix_matrix_is_set (formerly
mix_matrix_was_set) to FALSE so the mix-matrix is ignored from now on.
Sebastian Dröge [Mon, 28 Oct 2019 12:43:50 +0000 (14:43 +0200)]
videorate: Fix max-duplication-time handling
Previously this would've only set discont=TRUE and then for all future
buffers simply returned immediately.
Instead we also need to
a) drain previous input until its buffer time
b) update next_ts and base_ts accordingly for the gap
c) actually store the new buffer after the gap so it can be used in
the future and so the old buffer before the gap is gone
Also update the unit test accordingly so that it actually tests for this
behaviour. Previously it only tested that after the gap we got no output
at all.
Seungha Yang [Tue, 20 Aug 2019 14:12:22 +0000 (23:12 +0900)]
compositor: Add support for VUYA format
Reversed order of AYUV format. Most of core methods are prepared
already.
Guillaume Desmottes [Sat, 25 May 2019 17:23:35 +0000 (19:23 +0200)]
videometa: document how the meta can be used to negotiate buffers layout
I'm going to use this new API in gst-omx so an encoder can request
v4l2src to produce buffers matching the encoder stride and slice heights
preventing copies of incoming buffers.
Matthew Waters [Sun, 3 Nov 2019 13:38:18 +0000 (00:38 +1100)]
gl/gbm: ensure we call the resize callback before attempting to draw
Without this, sinks will not be notified about size changes or even the
initial size and would render at 0x0.
Sebastian Dröge [Sat, 2 Nov 2019 15:24:39 +0000 (16:24 +0100)]
video-scaler: Ensure we're always using the correct lines for scaling in gst_video_scaler_2d()
Especially for interlaced input make sure to
a) never mix both fields
b) never read lines after the end of the input frame
c) allocate enough space in the temporary lines to not write outside
the allocated memory area
This fixes various memory corruptions and rescaling artefacts.
Nicolas Dufresne [Tue, 2 Oct 2018 16:04:14 +0000 (12:04 -0400)]
videodecoder: Add a property to disable dropping on QoS
Nicolas Dufresne [Tue, 2 Oct 2018 15:09:33 +0000 (11:09 -0400)]
videodecoder: Post QoS when we drop because of QoS
At the moment, we only posted QoS messages when frame_drop() was
called, but not in finish_frame() when QoS triggered a late push.
This should fix applications that tries to account the dropped
frames. We also emit a warning on drops so it's more clear what is
happening.
Guillaume Desmottes [Tue, 23 Jul 2019 06:19:07 +0000 (11:49 +0530)]
gl: use gst_video_meta_set_alignment()
Guillaume Desmottes [Mon, 22 Jul 2019 11:25:04 +0000 (16:55 +0530)]
x(v)image: use gst_video_meta_set_alignment()
Use the new API to tell buffer consumers about alignment details.
This change is backward compatible as non ported elements can safely
ignore the alignment information and keep processing buffers as they use
to, copying if necessary.
Guillaume Desmottes [Tue, 9 Jul 2019 10:17:44 +0000 (12:17 +0200)]
videometa: add alignment field
By adding this field, buffer producers can now explicitly set the exact
geometry of planes, allowing users to easily know the padded size and
height of each plane.
GstVideoMeta is always heap allocated by GStreamer itself so we can
safely extend it.
Guillaume Desmottes [Mon, 3 Jun 2019 10:56:08 +0000 (16:26 +0530)]
video-info: add gst_video_info_align_full()
When using gst_video_info_align() user had no easy way to retrieve the
padded size and height of each plane.
This can easily be implemented in fill_planes() as it's already called
in align() with the padded height.
Ideally we'd add a plane_size field to GstVideoInfo but the remaining
padding is too small so that would be an ABI break.
Fix #618
Guillaume Desmottes [Sat, 2 Nov 2019 11:15:15 +0000 (12:15 +0100)]
video-info: fix GST_VIDEO_INFO_FIELD_HEIGHT() with frame odd height
We want to round up when halfing height.
I do have a test for this but it relies on my new video-align tests so
it's part of the next commit. Recording the fix separately if we want to
backport this fix to the stable branch.
Nicola Murino [Wed, 30 Oct 2019 13:59:40 +0000 (14:59 +0100)]
glimagesink: fix upper-left and upper-right rotate matrices
Seungha Yang [Fri, 25 Oct 2019 11:44:27 +0000 (20:44 +0900)]
tests: audio: Add test for gst_audio_info_from_caps() method
Test gst_audio_info_from_caps() with raw and encoded formats.
Seungha Yang [Fri, 25 Oct 2019 03:05:54 +0000 (12:05 +0900)]
audio-info: Allow from_caps() with encoded audio format
Similar to gst_video_info_from_caps() which allows encoded video format,
don't error gst_audio_info_from_caps() with encoded audio format.
Because gst_audio_info_set_format() supports encoded format, current
behavior does not seem to be consistent.
Sebastian Dröge [Mon, 21 Oct 2019 13:43:32 +0000 (16:43 +0300)]
video-converter: Use G_N_ELEMENTS instead of writing it out manually
Sebastian Dröge [Mon, 21 Oct 2019 14:40:35 +0000 (17:40 +0300)]
video-converter: Scaling-only fast-paths for planar formats are keeping interlacing
So we can also use them for interlaced content and speed up scaling a
bit.
Sebastian Dröge [Mon, 21 Oct 2019 14:28:46 +0000 (17:28 +0300)]
video-scaler: Correctly handle interlaced vertical scalers in gst_video_scaler_2d()
We need to provide twice as many lines as usual to the scaling function
as every second lines would be skipped.
Without this we read from random memory and produce colorful output and
crashes.
Sebastian Dröge [Mon, 21 Oct 2019 13:43:02 +0000 (16:43 +0300)]
video-converter: Don't use fast-path halfing/doubling rescalers for interlaced planar formats
They will mix lines from the top and bottom field and by that
effectively deinterlace the video, badly.