Commit graph

18583 commits

Author SHA1 Message Date
Jan Schmidt
c5181c23a4 splitmuxsink: Reset cleanly for reuse
Reset the splitmuxsink completely when changing states so that
it can be reused.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1241
2020-03-19 15:37:14 +00:00
Zebediah Figura
71bb53a648 mpegaudioparse: Use a constant bit rate to convert between time and bytes if possible.
This should result in no worse accuracy than the base parse element, and may
result in better accuracy. In particular, the number of bytes processed at any
given point, as accumulated by baseparse, can be only accurate to
(1 / # of frames) bytes per second, and if we try to seek immediately after
pausing the pipeline to a large offset, this small inaccuracy can propagate to
something noticeable.

The use case that prompted this patch is a 45-minute MPEG-1 layer 3 file, which
has a constant bit rate but no seek tables. Trying to seek the pipeline
immediately after pauisng it, without the ACCURATE flag, to a location 41
minutes in, yields a location that is, even with <https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/374>,
still audibly incorrect. This patch yields a much closer position, no longer
audibly incorrect, and likely within a frame of the most correct position.
2020-03-19 14:02:44 +00:00
Mathieu Duponchelle
56e5243f03 qtmux: fix renegotiation check
By the time sink_event is called, the pad's current caps have
already been updated. To address this, implement sink_event_pre_queue,
and check if the pad can be renegotiated there.

Fixes #707
2020-03-19 23:34:52 +11:00
Seungha Yang
18e09de0a2 splitmuxsink: Decouple keyframe request and the decision for fragmentation
Split the decision for keyframe request and fragmentation in order to
ensure periodic keyframe request.
2020-03-19 10:17:21 +00:00
Matthew Waters
7a25fb5b08 qt: add a qml overlay filter element [part 2]
It takes a qml scene description and renders it using a possible input
stream.

Currently supported on GLX and WGL.

Follow up to (as that MR had an old version of the commit):
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/475
- 4778d7166a: qt: add a qml overlay filter element
2020-03-19 17:26:54 +11:00
Matthew Waters
4778d7166a qt: add a qml overlay filter element
It takes a qml scene description and renders it using a possible input
stream.

Currently supported on GLX and WGL.
2020-03-18 11:22:39 +00:00
Matthew Waters
21acf312f0 qt: don't always activate/deactivate our GstGLContext
Techincally it is enough to activate at the beginning and then forget.
2020-03-18 11:22:39 +00:00
Matthew Waters
73cd4477af test/qml: add an dynamically adding qmlglsink element
The example shows how to add qmlglsink to an already running pipeline
with pre-existing OpenGL elements.
2020-03-18 11:22:39 +00:00
Matthew Waters
a1f53b4f46 qmlglsink: propagate the context up the the application
Allows the application to be notified of the OpenGL context creation.
2020-03-18 11:22:39 +00:00
Matthew Waters
5e9f80c79a qtitem: fix leak of caps 2020-03-18 11:22:39 +00:00
Niels De Graef
4f4997a935 wavpack: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
34a934d8d4 vpx: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
5406208f0d twolame: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
58d74f0ec5 taglib: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
e5c9538d2a speex: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
e6c3a524ce soup: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
5ccd5659c4 shout2: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
59ac993a91 raw1394: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
91c55bd920 qt: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
a9ff9fe94e pulse: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
0da5b42bcc mpg123: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
45d7dfedb8 libpng: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
2cf28f3021 libcaca: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
0811b8d719 lame: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
f4841754ec jack: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
9f494290d5 gtk: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
e45a13ca2b gdk_pixbuf: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
9fa9ea2162 flax: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
51448ea5f1 dv: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
5bd3fcf726 cairo: Use G_DECLARE_FINAL_TYPE 2020-03-12 19:24:57 +01:00
Niels De Graef
9ad65fa60b aalib: Use G_DECLARE_FINAL_TYPE 2020-03-12 19:22:21 +01:00
Tim-Philipp Müller
66296fcae3 tests: rtp-payloading: add minimal vp8/vp9 rtp payloading/depayloading test 2020-03-12 16:55:44 +00:00
Stian Selnes
81a87c26f9 rtpvp8pay, rtpvp9pay: fix caps leak in set_caps() 2020-03-12 16:49:58 +00:00
Edward Hervey
5a893f2a95 videomixer: Don't leak peer caps 2020-03-12 11:22:56 +01:00
Thibault Saunier
21bc0d527b imagesequencesrc: Cleanup and add some features
* Implement the GstURIHandlerInterface
* Rework the locking
* Implement backward seeking handling
* Generate documentation
2020-03-11 15:11:54 +00:00
Fabian Orccon
7511999083 Add an imagesequencesrc element to stream sequence of images
See: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/121
2020-03-11 15:11:54 +00:00
Gordon Hart
05e8dd42e7 v4l2src: decrease gst_v4l2src_create log verbosity
Lower the verbosity of the 'sync' log message emitted
each buffer from gst_v4l2src_create down to LOG(6)
from INFO(4). This brings the logging behavior of
v4l2src closer to the GStreamer guidelines, which
recommend the INFO level be reserved for rare or
one-off messages.
2020-03-10 20:33:04 +00:00
yychao
7f89085251 qtdemux: Add support for AC4
The caps received from qtdemux for AC-4 content are audio/x-gst-fourcc-ac_4

Based on patch by: Savinderjit Kaur

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/413
2020-03-10 15:28:01 +00:00
Matthew Waters
dacdc74043 imagefreeze: handle reconfigure events on the srcpad 2020-03-10 21:22:20 +11:00
Matthew Waters
07a8a1c484 imagefreeze: properly ignore setting caps failures
Ignore the return value of gst_pad_set_caps() so that setcaps will set a
framerate that is usable.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/705
2020-03-10 21:22:03 +11:00
Matthew Waters
28f49e1fd5 imagefreeze: don't fail sending sticky events downstream
They will be repropagated anyway.
2020-03-10 21:08:45 +11:00
Markus Ebner
5dcbb6b0d8 videocrop: Add support for Y41B and Y42B 2020-03-10 08:24:56 +00:00
Markus Ebner
b562235283 videocrop: Add support for Y444
- Refactored the planar transform method to support all video formats
  that are stored planar, independent of the used subsampling
- Added support for Y444
2020-03-10 08:24:56 +00:00
Markus Ebner
4a9e5bbf8b videocrop: Use G_VALUE_INIT to initialize GValues 2020-03-10 08:24:56 +00:00
Sebastian Dröge
fc3bb4c549 jpegdec: Configure JPEG chroma-siting for YUV formats 2020-03-09 21:34:08 +02:00
Ognyan Tonchev
a78a74bff0 rtph26x: Use gst_memory_map() instead of gst_buffer_map() in avc mode
gst_buffer_map () results in memcopying when a GstBuffer contains
more than one GstMemory and when AVC (length-prefixed) alignment is used.
This has quite an impact on performance on systems with limited amount of
resources. With this patch the whole GstBuffer will not be mapped at once,
instead each individual GstMemory will be iterated and mapped separately.
2020-03-06 10:44:16 +00:00
Milian Wolff
3e0d557744 qmlgl: ensure Qt defines GLsync to fix compile on some platforms
By explictly including QtGui/qopengl.h we force the code path that
defines GLsync in the Qt-specific way. Without that, some platforms
failed to compile the qmlgl plugin, since neither Qt nor gstreamer
defined GLsync then, leading to e.g.:

```
make[4]: Entering directory '/.../gst-plugins-good-1.16.1/ext/qt'
  CXX      libgstqmlgl_la-qtitem.lo
In file included from gstqtgl.h:32,
                 from qtitem.h:27,
                 from qtitem.cc:28:
/.../usr/include/gstreamer-1.0/
gst/gl/gstglfuncs.h:93:17: error: expected identifier before ‘*’ token
   ret (GSTGLAPI *name) args;
                 ^
/.../usr/include/gstreamer-1.0/
gst/gl/glprototypes/sync.h:27:1: note: in expansion of macro
‘GST_GL_EXT_FUNCTION’
 GST_GL_EXT_FUNCTION (GLsync, FenceSync,
 ^~~~~~~~~~~~~~~~~~~
```
2020-03-05 03:21:48 +00:00
Havard Graff
4046970b01 rtptwcc: make RTPTWCCManager a GObject 2020-03-04 16:48:04 +01:00
Havard Graff
026223cde2 rtpjitterbuffer: fix stalling when resetting timers
When calling gst_rtp_jitter_buffer_reset you pass in a seqnum.

This is considered the starting-point for a new stream.

However, the old behavior would unref this buffer, basically lying to
the thread that is pushing out buffers saying that it can expect
this buffer, when it would never arrive. The resulting effect being no
more buffer pushed out of the jitterbuffer, and it would buffer
incoming data indefinitely.

By instead inserting the buffer in the gap_packets queue, the _reset()
function will take responsibility for using that as the first buffer
of the new stream.

Fixes #703
2020-03-04 12:55:52 +01:00
Jan Schmidt
f490c38416 splitmux: Avoid negative DTS
In order to concatenate fragments, splitmuxsrc offsets
the start of each fragment PTS to 0 to align it with the
previous file. This means that DTS can go negative for
the first fragment, with really bad results.

Add a fixed offset to outgoing timestamp ranges to
avoid that.
2020-03-04 05:42:21 +00:00