GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2021-09-24T13:26:19Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/900videorate: need implement prepare_output_buffer()2021-09-24T13:26:19ZKevin Songvideorate: need implement prepare_output_buffer()As videorate will ref input buffer, the input isn't writable. Below function will call gst_buffer_copy() which will cause issue when HW need fixed memory. Do we need implement prepare_output_buffer() in videorate?
```
static GstFlowRet...As videorate will ref input buffer, the input isn't writable. Below function will call gst_buffer_copy() which will cause issue when HW need fixed memory. Do we need implement prepare_output_buffer() in videorate?
```
static GstFlowReturn
default_prepare_output_buffer (GstBaseTransform * trans,
GstBuffer * inbuf, GstBuffer ** outbuf)
{
/* no pool, we need to figure out the size of the output buffer first */
if ((bclass->transform_ip != NULL) && priv->always_in_place) {
/* we want to do an in-place alloc */
if (gst_buffer_is_writable (inbuf)) {
GST_DEBUG_OBJECT (trans, "inplace reuse writable input buffer");
*outbuf = inbuf;
} else {
GST_DEBUG_OBJECT (trans, "making writable buffer copy");
/* we make a copy of the input buffer */
*outbuf = **gst_buffer_copy **(inbuf);
}
goto done;
}
}
```https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/334ParamSpec: update to prefix constructors with new2021-05-07T06:59:33ZMathieu DuponchelleParamSpec: update to prefix constructors with neweg `glib::ParamSpec::array()` -> `glib::ParamSpec::new_array()`eg `glib::ParamSpec::array()` -> `glib::ParamSpec::new_array()`https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1585Creating a webrtc video stream after a data channel causes a crash2022-10-25T03:08:02ZAnthony WilliamsCreating a webrtc video stream after a data channel causes a crashI am trying to use gstreamer for a webrtc application. The application creates a data channel, then sends a message requesting a video stream. The server then creates the video stream and adds it to the webrtc connection. This is current...I am trying to use gstreamer for a webrtc application. The application creates a data channel, then sends a message requesting a video stream. The server then creates the video stream and adds it to the webrtc connection. This is currently failing. I've stripped down our code to create a minimal example using the bouncing ball test video.
Compiling and running the attached source against the current `master` branch of gstreamer (built with gst-build) produces a runtime error:
ERROR:../subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c:6220:on_rtpbin_new_jitterbuffer: code should not be reached
[webrtc-testing-2021-05-06.tar.bz2](/uploads/0ae23537c28cf22ea63ca1b564a1d9c2/webrtc-testing-2021-05-06.tar.bz2)https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/88Attempting to run the code from "Playback tutorial 4: Progressive streaming" ...2021-05-07T07:24:31ZAbleBaconAttempting to run the code from "Playback tutorial 4: Progressive streaming" results in critical errors.Running the code in "_Playback tutorial 4: Progressive streaming_" results in critical errors in the console. I'm running this on Windows 10 with a recent version of the `gstreamer` dev installation and haven't had trouble with any of th...Running the code in "_Playback tutorial 4: Progressive streaming_" results in critical errors in the console. I'm running this on Windows 10 with a recent version of the `gstreamer` dev installation and haven't had trouble with any of the other tutorials until now.
https://gstreamer.freedesktop.org/documentation/tutorials/playback/progressive-streaming.html?gi-language=c
This console output (with `GST_DEBUG=3` defined in the environment) shows the critical errors:
```
Temporary file: C:\Users\Tyler\AppData\Local\Microsoft\Windows\INetCache\gstreamer_test_project.exe-VD5420
0:00:00.999284000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:381:can_support_format: D3D11 call failed: 0x80004005, Unspecified error
0:00:01.000510000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:383:can_support_format:<d3d11device0> DXGI format 105 is not supported by device
0:00:01.005646000 2364 000001445FF75F80 FIXME d3d11h265dec gstd3d11h265dec.c:1412:gst_d3d11_h265_dec_register:<d3d11device0> device does not support P010 and/or NV12 format
0:00:01.006381000 2364 000001445FF75F80 FIXME d3d11vp9dec gstd3d11vp9dec.c:1159:gst_d3d11_vp9_dec_register:<d3d11device0> device does not support P010 and/or NV12 format
0:00:01.007111000 2364 000001445FF75F80 WARN d3d11decoder gstd3d11decoder.c:602:gst_d3d11_decoder_get_supported_decoder_profile:<d3d11decoder0> No supported decoder profile
0:00:01.007736000 2364 000001445FF75F80 WARN d3d11debuglayer gstd3d11device.c:776:gst_d3d11_device_dispose:<d3d11device0> D3D11InfoQueue: Live ID3D11Device at 0x000001446072AE90, Refcount: 3
0:00:01.027713000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:381:can_support_format: D3D11 call failed: 0x80004005, Unspecified error
0:00:01.028326000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:383:can_support_format:<d3d11device1> DXGI format 104 is not supported by device
0:00:01.029119000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:381:can_support_format: D3D11 call failed: 0x80004005, Unspecified error
0:00:01.029871000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:383:can_support_format:<d3d11device1> DXGI format 105 is not supported by device
0:00:01.030678000 2364 000001445FF75F80 WARN d3d11debuglayer gstd3d11device.c:776:gst_d3d11_device_dispose:<d3d11device1> D3D11InfoQueue: Live ID3D11Device at 0x000001446043BFE0, Refcount: 3
0:00:01.033008000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:563:gst_d3d11_device_constructed:<d3d11device2> No adapter for index 2
0:00:01.034306000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:834:gst_d3d11_device_new: Cannot create d3d11 device with adapter 2
0:00:01.134232000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:381:can_support_format: D3D11 call failed: 0x80004005, Unspecified error
0:00:01.135474000 2364 000001445FF75F80 WARN d3d11device gstd3d11device.c:383:can_support_format:<d3d11device3> DXGI format 105 is not supported by device
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.497: gst_buffer_get_size: assertion 'GST_IS_BUFFER (buffer)' failed
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.498: gst_mini_object_unref: assertion 'mini_object != NULL' failed
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.499: gst_buffer_get_size: assertion 'GST_IS_BUFFER (buffer)' failed
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.499: gst_buffer_get_size: assertion 'GST_IS_BUFFER (buffer)' failed
0:00:01.580730000 2364 000001445FF75F80 WARN matroskareadcommon matroska-read-common.c:2839:gst_matroska_read_common_peek_bytes:<matroskademux0:sink> Dropping short buffer at offset 10049590: wanted 2 bytes, got 0 bytes
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.499: gst_mini_object_unref: assertion 'mini_object != NULL' failed
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.500: gst_buffer_get_size: assertion 'GST_IS_BUFFER (buffer)' failed
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.500: gst_mini_object_unref: assertion 'mini_object != NULL' failed
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.500: gst_buffer_get_size: assertion 'GST_IS_BUFFER (buffer)' failed
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.500: gst_buffer_get_size: assertion 'GST_IS_BUFFER (buffer)' failed
0:00:01.582049000 2364 000001445FF75F80 WARN matroskareadcommon matroska-read-common.c:2839:gst_matroska_read_common_peek_bytes:<matroskademux0:sink> Dropping short buffer at offset 10050800: wanted 2 bytes, got 0 bytes
(gstreamer_test_project.exe:2364): GStreamer-CRITICAL **: 15:29:04.501: gst_mini_object_unref: assertion 'mini_object != NULL' failed
0:00:01.696142000 2364 000001445FF75680 WARN d3d11shader gstd3d11shader.c:138:compile_shader: HLSL compiler warnings:
C:\Users\Tyler\projects\video_tech\source\gstreamer_test_project\Shader@0x000001447027A1E0(25,3-30): warning X3206: implicit truncation of vector type
C:\Users\Tyler\projects\video_tech\source\gstreamer_test_project\Shader@0x000001447027A1E0(33,15-66): warning X3206: 'Sample': implicit truncation of vector type
C:\Users\Tyler\projects\video_tech\source\gstreamer_test_project\Shader@0x000001447027A1E0(34,15-66): warning X3206: 'Sample': implicit truncation of vector type
C:\Users\Tyler\projects\video_tech\source\gstreamer_test_project\Shader@0x000001447027A1E0(29,14-30): warning X3578: Output value 'main' is not completely initialized
0:00:01.703902000 2364 000001445FF75680 WARN d3d11shader gstd3d11shader.c:138:compile_shader: HLSL compiler warnings:
C:\Users\Tyler\projects\video_tech\source\gstreamer_test_project\Shader@0x00007FFEC8D98E90(12,10-58): warning X3206: 'Sample': implicit truncation of vector type
0:00:01.721778000 2364 000001445FF75680 WARN d3d11debuglayer gstd3d11window_win32.cpp:914:gst_d3d11_window_win32_present:<d3d11device3> D3D11InfoQueue: ID3D11DeviceContext::DrawIndexed: The Pixel Shader expects a Render Target View bound to slot 1, but none is bound. This is OK, as writes of an unbound Render Target View are discarded. It is also possible the developer knows the data will not be used anyway. This is only a problem if the developer actually intended to bind a Render Target View here.
0:00:13.221184000 2364 000001445FF75680 ERROR d3d11window gstd3d11window_win32.cpp:891:gst_d3d11_window_win32_present:<d3d11windowwin32-0> Output window was closed
0:00:13.222530000 2364 000001445FF75680 WARN d3d11videosink gstd3d11videosink.c:957:gst_d3d11_video_sink_show_frame:<d3d11videosink0> error: Output window was closed
Error: Output window was closed
0:00:13.223706000 2364 000001445FF75F80 WARN matroskademux matroska-demux.c:5869:gst_matroska_demux_loop:<matroskademux0> error: Internal data stream error.
0:00:13.224038000 2364 00000144603DDDC0 WARN audiosink gstaudiosink.c:255:audioringbuffer_thread_func:<wasapisink0> error writing data in gst_wasapi_sink_write (reason: unknown), skipping segment (left: 3840, written: -1)
0:00:13.224722000 2364 000001445FF75F80 WARN matroskademux matroska-demux.c:5869:gst_matroska_demux_loop:<matroskademux0> error: streaming stopped, reason error (-5)
0:00:13.235650000 2364 000001445FF19A20 WARN downloadbuffer gstdownloadbuffer.c:966:gst_download_buffer_close_temp_location_file:<downloadbuffer0> Failed to remove temporary file C:\Users\Tyler\AppData\Local\Microsoft\Windows\INetCache\gstreamer_test_project.exe-VD5420: Permission denied
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/899fdmemory: sometimes fails to map buffer from pipewiresrc resulting in "invali...2021-05-11T21:59:03Zeladynfdmemory: sometimes fails to map buffer from pipewiresrc resulting in "invalid video buffer received" errors/warningsRecently, the Cheese Camera App started showing some very weird behavior. I was not sure if I should report it in Cheese directly, but I instead decided to do it here, since the output told me to do so:
# Behavior
The camera buffer in ...Recently, the Cheese Camera App started showing some very weird behavior. I was not sure if I should report it in Cheese directly, but I instead decided to do it here, since the output told me to do so:
# Behavior
The camera buffer in the middle of the screen flickers and if it shows an actual image, it switches between an image that comes from the moment, when I started the program, and another one that was probably taken 1-2 seconds ago.
If you need it, I can send you a video capture of this issue.
# Logs
The "normal" output looks like this:
```
(cheese:13568): cheese-WARNING **: 17:33:36.736: Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-plugins-base/gst-libs/gst/video/gstvideofilter.c(296): gst_video_filter_transform (): /GstCameraBin:camerabin/GstViewfinderBin:vf-bin/GstVideoConvert:vfbin-csp:
invalid video buffer received
(cheese:13568): cheese-WARNING **: 17:33:36.833: Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-plugins-base/gst-libs/gst/video/gstvideofilter.c(296): gst_video_filter_transform (): /GstCameraBin:camerabin/GstViewfinderBin:vf-bin/GstVideoConvert:vfbin-csp:
invalid video buffer received
(cheese:13568): cheese-WARNING **: 17:33:36.934: Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-plugins-base/gst-libs/gst/video/gstvideofilter.c(296): gst_video_filter_transform (): /GstCameraBin:camerabin/GstViewfinderBin:vf-bin/GstVideoConvert:vfbin-csp:
invalid video buffer received
(cheese:13568): cheese-WARNING **: 17:33:37.034: Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-plugins-base/gst-libs/gst/video/gstvideofilter.c(296): gst_video_filter_transform (): /GstCameraBin:camerabin/GstViewfinderBin:vf-bin/GstVideoConvert:vfbin-csp:
invalid video buffer received
...
```
For the debug log (`GST_DEBUG=6 cheese`) see here: [debug.log](/uploads/44b5068b30cf39207a1e89b6bbfefa0e/debug.log)
# Version / OS Information
- GNOME 40.0.0
- Wayland
- ArchLinux
- gstreamer: 1.18.4-1
If you need any further information or if you think that I should instead head over to the Cheese developers, just tell me.https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/898The "gst_rtsp_address_pool_add_range" function does not accept "GST_RTSP_ADDR...2021-09-24T13:26:19ZAbleBaconThe "gst_rtsp_address_pool_add_range" function does not accept "GST_RTSP_ADDRESS_POOL_ANY_IPV4" or "GST_RTSP_ADDRESS_POOL_ANY_IPV6" as "min_address" and "max_address"For the `gst_rtsp_address_pool_add_range` function, the documentation states:
> _min_address_ and _max_address_ can be set to GST_RTSP_ADDRESS_POOL_ANY_IPV4 or GST_RTSP_ADDRESS_POOL_ANY_IPV6 to bind to all available IPv4 or IPv6 addresse...For the `gst_rtsp_address_pool_add_range` function, the documentation states:
> _min_address_ and _max_address_ can be set to GST_RTSP_ADDRESS_POOL_ANY_IPV4 or GST_RTSP_ADDRESS_POOL_ANY_IPV6 to bind to all available IPv4 or IPv6 addresses.
https://gstreamer.freedesktop.org/documentation/gst-rtsp-server/rtsp-address-pool.html
However, attempting to do either of these (namely setting `min_address` and `max_address` both equal to either `GST_RTSP_ADDRESS_POOL_ANY_IPV4` or both equal to `GST_RTSP_ADDRESS_POOL_ANY_IPV6`) results in an error like this:
```
rtspaddresspool rtsp-address-pool.c:326:gst_rtsp_address_pool_add_range:<GstRTSPAddressPool@000002464B7FC800> invalid address range 0.0.0.0-0.0.0.0
```
Either this feature is not working properly, or the documentation does not describe the correct way of using it.
Experiments with setting just one argument (either `min_address` or `max_address`) to one of those values (either `GST_RTSP_ADDRESS_POOL_ANY_IPV4` or `GST_RTSP_ADDRESS_POOL_ANY_IPV6`) also result in this behavior.
The following testcase will cause this behavior:
```
#include <gst/gst.h>
#include <gst/rtsp-server/rtsp-server.h>
static gboolean timeout(GstRTSPServer* server) {
GstRTSPSessionPool* session_pool = gst_rtsp_server_get_session_pool(server);
gst_rtsp_session_pool_cleanup(session_pool);
g_object_unref(session_pool);
return TRUE;
}
int main() {
gst_init(NULL, NULL);
// Create the main loop.
GMainLoop* loop = g_main_loop_new(NULL, FALSE);
// Create the actual server instance.
GstRTSPServer* server = gst_rtsp_server_new();
// Get mount points so you can tie your server URI with your media factory.
GstRTSPMountPoints* mounts = gst_rtsp_server_get_mount_points(server);
// Create the media factory to build pipelines for connecting clients.
GstRTSPMediaFactory* factory = gst_rtsp_media_factory_new();
// Set the pipeline that the factory will launch when a client connects.
gst_rtsp_media_factory_set_launch(factory, "videotestsrc pattern=ball ! videoconvert ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96 aggregate-mode=zero-latency");
GstRTSPAddressPool* address_pool = gst_rtsp_address_pool_new();
gst_rtsp_address_pool_add_range(address_pool, GST_RTSP_ADDRESS_POOL_ANY_IPV4, GST_RTSP_ADDRESS_POOL_ANY_IPV4, 5000, 5010, 16);
gst_rtsp_media_factory_set_address_pool(factory, address_pool);
g_object_unref(address_pool);
gst_rtsp_media_factory_set_protocols(factory, GST_RTSP_LOWER_TRANS_UDP_MCAST);
// Associate your "/test" URI with your media factory.
gst_rtsp_mount_points_add_factory(mounts, "/test", factory);
g_object_unref(mounts);
// Attach the server to the default 'GMainContext'
gst_rtsp_server_attach(server, NULL);
g_timeout_add_seconds(2, (GSourceFunc)timeout, server);
// Run the main loop, which starts serving.
g_print("Stream ready at: rtsp://127.0.0.1:8554/test\n");
g_main_loop_run(loop);
}
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/897The "gst_rtp_get_header_extension_list" function returns "GstElementFactory" ...2021-05-04T06:49:14ZAbleBaconThe "gst_rtp_get_header_extension_list" function returns "GstElementFactory" elements instead of "GstRTPHeaderExtension" elements.The documentation for `gst_rtp_get_header_extension_list` states that it returns a `GList` of `GstRTPHeaderExtension` objects.
https://gstreamer.freedesktop.org/documentation/rtplib/gstrtpbasepayload.html?gi-language=c
However, I've fou...The documentation for `gst_rtp_get_header_extension_list` states that it returns a `GList` of `GstRTPHeaderExtension` objects.
https://gstreamer.freedesktop.org/documentation/rtplib/gstrtpbasepayload.html?gi-language=c
However, I've found that it actually returns a `GList` of `GstElementFactory` objects. If you then use `gst_element_factory_create` on each of those factories, you get the `GstRTPHeaderExtension` objects.
Here is some test code that illustrates this:
```
#include <gst/gst.h>
#include <gst/gstinfo.h>
#include <gst/rtp/rtp.h>
int main() {
gst_init(NULL, NULL);
GList* header_extension_list = gst_rtp_get_header_extension_list();
g_print("Available RTP Header Extensions:\n");
for (GList* l = header_extension_list; l != NULL; l = l->next) {
GstElement* test_element = gst_element_factory_create(GST_ELEMENT_FACTORY_CAST(l->data), "testing");
g_print("\t%s\t%s\n", G_OBJECT_TYPE_NAME(test_element), gst_rtp_header_extension_get_uri(GST_RTP_HEADER_EXTENSION_CAST(test_element)));
g_object_unref(test_element);
}
gst_plugin_feature_list_free(header_extension_list);
}
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/149reqwesthttpsrc: Don't keep mutex locked while doing the initial request2021-05-03T12:01:51ZSebastian Drögereqwesthttpsrc: Don't keep mutex locked while doing the initial requestThe following discussion from !497 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/497#note_882370): (+6 comments)
> Why? What is holding the state ...The following discussion from !497 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/497#note_882370): (+6 comments)
> Why? What is holding the state lock here? :) We should fix thathttps://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/97ffmpeg git build issue: undefined reference to `avcodec_get_context_defaults3'2022-01-17T23:15:24Zorbeaffmpeg git build issue: undefined reference to `avcodec_get_context_defaults3'gst-libav: `1.18.4`
ffmpeg: https://github.com/FFmpeg/FFmpeg/commit/5541cffa17a8c45004e5ceeda52d4d6b2acee037
When building gst-libav with the current ffmpeg git the build fails.
```
[13/13] x86_64-pc-linux-gnu-gcc -m32 -o ext/libav/li...gst-libav: `1.18.4`
ffmpeg: https://github.com/FFmpeg/FFmpeg/commit/5541cffa17a8c45004e5ceeda52d4d6b2acee037
When building gst-libav with the current ffmpeg git the build fails.
```
[13/13] x86_64-pc-linux-gnu-gcc -m32 -o ext/libav/libgstlibav.so ext/libav/libgstlibav.so.p/gstav.c.o ext/libav/libgstlibav.so.p/gstavprotocol.c.o ext/libav/libgstlibav.so.p/gstavcodecmap.c.o ext/libav/libgstlibav.so.p/gstavutils.c.o ext/libav/libgstlibav.so.p/gstavaudenc.c.o ext/libav/libgstlibav.so.p/gstavvidenc.c.o ext/libav/libgstlibav.so.p/gstavauddec.c.o ext/libav/libgstlibav.so.p/gstavviddec.c.o ext/libav/libgstlibav.so.p/gstavcfg.c.o ext/libav/libgstlibav.so.p/gstavdemux.c.o ext/libav/libgstlibav.so.p/gstavmux.c.o ext/libav/libgstlibav.so.p/gstavdeinterlace.c.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libgstlibav.so -Wl,--exclude-libs=ALL -O2 -pipe -Wl,-O1 -Wl,--as-needed /usr/lib/libavfilter.so /usr/lib/libavformat.so /usr/lib/libavcodec.so /usr/lib/libavutil.so /usr/lib/libgstreamer-1.0.so /usr/lib/libgobject-2.0.so /usr/lib/libglib-2.0.so /usr/lib/libgstbase-1.0.so /usr/lib/libgstvideo-1.0.so /usr/lib/libgstaudio-1.0.so /usr/lib/libgsttag-1.0.so /usr/lib/libgstpbutils-1.0.so -Wl,--end-group
samu: job failed: x86_64-pc-linux-gnu-gcc -m32 -o ext/libav/libgstlibav.so ext/libav/libgstlibav.so.p/gstav.c.o ext/libav/libgstlibav.so.p/gstavprotocol.c.o ext/libav/libgstlibav.so.p/gstavcodecmap.c.o ext/libav/libgstlibav.so.p/gstavutils.c.o ext/libav/libgstlibav.so.p/gstavaudenc.c.o ext/libav/libgstlibav.so.p/gstavvidenc.c.o ext/libav/libgstlibav.so.p/gstavauddec.c.o ext/libav/libgstlibav.so.p/gstavviddec.c.o ext/libav/libgstlibav.so.p/gstavcfg.c.o ext/libav/libgstlibav.so.p/gstavdemux.c.o ext/libav/libgstlibav.so.p/gstavmux.c.o ext/libav/libgstlibav.so.p/gstavdeinterlace.c.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libgstlibav.so -Wl,--exclude-libs=ALL -O2 -pipe -Wl,-O1 -Wl,--as-needed /usr/lib/libavfilter.so /usr/lib/libavformat.so /usr/lib/libavcodec.so /usr/lib/libavutil.so /usr/lib/libgstreamer-1.0.so /usr/lib/libgobject-2.0.so /usr/lib/libglib-2.0.so /usr/lib/libgstbase-1.0.so /usr/lib/libgstvideo-1.0.so /usr/lib/libgstaudio-1.0.so /usr/lib/libgsttag-1.0.so /usr/lib/libgstpbutils-1.0.so -Wl,--end-group
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: ext/libav/libgstlibav.so.p/gstavaudenc.c.o: in function `gst_ffmpegaudenc_start':
gstavaudenc.c:(.text+0x7f5): undefined reference to `avcodec_get_context_defaults3'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: ext/libav/libgstlibav.so.p/gstavaudenc.c.o: in function `gst_ffmpegaudenc_set_format':
gstavaudenc.c:(.text+0x864): undefined reference to `avcodec_get_context_defaults3'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: gstavaudenc.c:(.text+0xb7c): undefined reference to `avcodec_get_context_defaults3'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: gstavaudenc.c:(.text+0xca9): undefined reference to `avcodec_get_context_defaults3'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: gstavaudenc.c:(.text+0xce4): undefined reference to `avcodec_get_context_defaults3'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: ext/libav/libgstlibav.so.p/gstavvidenc.c.o:gstavvidenc.c:(.text+0x1ea): more undefined references to `avcodec_get_context_defaults3' follow
collect2: error: ld returned 1 exit status
samu: subcommand failed
```
Build log: [build.log](/uploads/6d8decb6ec1c88e9e2712734d1c6429b/build.log)
This because `avcodec_get_context_defaults3` was removed in ffmpeg.
https://github.com/FFmpeg/FFmpeg/commit/ff8f9fcbe558db69f804417d4e9aa2ef9445f304
Reference:
> Deprecated:
> This function should not be used, as closing and opening a codec context multiple time is not supported.
>
> A new codec context should be allocated for each new use.
https://libav.org/documentation/doxygen/master/group__lavc__core.html#ga1dd4bf43e6a4ec8b8d76bd3673e5e73ahttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1584webrtcbin: GstWebRTCICE type is private but exposed as property2021-05-03T03:05:50ZPhilippe Normandwebrtcbin: GstWebRTCICE type is private but exposed as propertySSIA.
The `ice-agent` property was added in !1223 but this is not exposed in the webrtc lib. How are apps supposed to use this?SSIA.
The `ice-agent` property was added in !1223 but this is not exposed in the webrtc lib. How are apps supposed to use this?https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/896Multichannel opus in rtpopuspay "Returning caps: EMPTY"2021-05-07T18:36:18ZPiotr GasiorowskiMultichannel opus in rtpopuspay "Returning caps: EMPTY"When trying to setup a webrtcbin pipeline with vp8 video and multichannel opus audio.
It does works exactly as expected with 1-2 audio channels but if there are more than two
audio channels I get this error from rtpopuspay:
```
0:00:00...When trying to setup a webrtcbin pipeline with vp8 video and multichannel opus audio.
It does works exactly as expected with 1-2 audio channels but if there are more than two
audio channels I get this error from rtpopuspay:
```
0:00:00.058292113 29653 0x2898d90 DEBUG rtpbasepayload gstrtpbasepayload.c:692:gst_rtp_base_payload_query_default:<rtpopuspay0> getting caps with filter audio/x-opus, rate=(int)48000, channels=(int)8, [8channel-optus.txt](/uploads/50281226ab16157a257019bee07d80dd/8channel-optus.txt)=(int)1, stream-count=(int)5, coupled-count=(int)3, channel-mapping=(int)< 0, 6, 1, 4, 5, 2, 3, 7 >, streamheader=(buffer)< 4f707573486561640108380180bb000000000105030006010405020307, 4f707573546167731e000000456e636f6465642077697468204753747265616d6572206f707573656e630000000001 >
0:00:00.058342731 29653 0x2898d90 DEBUG rtpopuspay gstrtpopuspay.c:252:gst_rtp_opus_pay_getcaps:<rtpopuspay0> Returning caps: EMPTY
0:00:00.058392563 29653 0x2898d90 WARN GST_CAPS gstpad.c:3231:gst_pad_query_accept_caps_default:<rtpopuspay0:sink> caps: audio/x-opus, rate=(int)48000, channels=(int)8, channel-mapping-family=(int)1, stream-count=(int)5, coupled-count=(int)3, channel-mapping=(int)< 0, 6, 1, 4, 5, 2, 3, 7 >, streamheader=(buffer)< 4f707573486561640108380180bb000000000105030006010405020307, 4f707573546167731e000000456e636f6465642077697468204753747265616d6572206f707573656e630000000001 > were not compatible with: EMPTY
0:00:00.058442472 29653 0x2898d90 WARN GST_CAPS gstpad.c:5702:pre_eventfunc_check:<rtpopuspay0:sink> caps audio/x-opus, rate=(int)48000, channels=(int)8, channel-mapping-family=(int)1, stream-count=(int)5, coupled-count=(int)3, channel-mapping=(int)< 0, 6, 1, 4, 5, 2, 3, 7 >, streamheader=(buffer)< 4f707573486561640108380180bb000000000105030006010405020307, 4f707573546167731e000000456e636f6465642077697468204753747265616d6572206f707573656e630000000001 > not accepted
0:00:00.070892388 29653 0x2898c50 DEBUG rtpbasepayload gstrtpbasepayload.c:552:gst_rtp_base_payload_sink_event_default:<rtpvp8pay0> configured SEGMENT time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999
0:00:00.107664204 29653 0x2898d40 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<socketsrc1> error: Internal data stream error.
0:00:00.107703071 29653 0x2898d40 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<socketsrc1> error: streaming stopped, reason not-negotiated (-4)
0:00:00.107771721 29653 0x2898d40 WARN queue gstqueue.c:990:gst_queue_handle_sink_event:<queue1> error: Internal data stream error.
0:00:00.107786930 29653 0x2898d40 WARN queue gstqueue.c:990:gst_queue_handle_sink_event:<queue1> error: streaming stopped, reason not-negotiated (-4)
```
Not sure if this may be related but the `capsfilter` set after rtpopuspay is:
```
application/x-rtp,media=audio,encoding-name=OPUS,payload=97
```
Overview of the pipeline:
![8-ch-opus-left](/uploads/3a2a1e98f89dc888d1132c98bd029440/8-ch-opus-left.png)
![8-ch-opus-right](/uploads/6dd4f56081d40f10c4d3683575bb5498/8-ch-opus-right.png)
What does the error means?https://gitlab.freedesktop.org/gstreamer/orc/-/issues/35ORC fails to compile valid code2021-05-03T17:03:57ZlgammoORC fails to compile valid codeORC on CENTOS 7 (0.4.26-1.el7) fails with the following messages:
Failed to compile no orc for 'FOO'
Failed to compile backup code for 'FOO'
Issues:
1. Absolutely no indication what the problem is.
2. The actual code is fine. Selectivel...ORC on CENTOS 7 (0.4.26-1.el7) fails with the following messages:
Failed to compile no orc for 'FOO'
Failed to compile backup code for 'FOO'
Issues:
1. Absolutely no indication what the problem is.
2. The actual code is fine. Selectively commenting out parts of the orc code compiles fine.
I am thinking it is a limit issue (number of temporaries I using).
Any experience similar to this?https://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues/40Not an issue...2021-05-01T05:14:17ZNeil YoungNot an issue...Just a question:
What is a possible set and syntax of parameters for `create-answer`? https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=cJust a question:
What is a possible set and syntax of parameters for `create-answer`? https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=chttps://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues/39Gstreamer Rtsp to webrtc (Internal data stream error, streaming stopped, reas...2021-04-30T17:36:51ZCh AcsGstreamer Rtsp to webrtc (Internal data stream error, streaming stopped, reason not-linked)Hey Guys
I tried to send RTSP to webrtc but I get always that internal data stream errors.
I dont know where I got wrong. Any help would be great.
`0:00:06.969543100 15404 25a79339660 WARN basesrc gstbasesrc.c:3127:...Hey Guys
I tried to send RTSP to webrtc but I get always that internal data stream errors.
I dont know where I got wrong. Any help would be great.
`0:00:06.969543100 15404 25a79339660 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<udpsrc0> error: Internal data stream error.
0:00:06.970259500 15404 25a79339660 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<udpsrc0> error: streaming stopped, reason not-linked (-1)
`
[server.py](/uploads/18c5ad86c9af1297621aeebe0f97496a/server.py)[client.html](/uploads/4cdd302687fff3cd8c55eb3c86b37f68/client.html)
big thankshttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/332Add bindings for gst_video_color_range_offsets() in VideoInfo2021-05-09T15:02:13ZSebastian DrögeAdd bindings for gst_video_color_range_offsets() in VideoInfoThe following discussion from !763 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/763#note_900541): (+3 comments)
> Hmm this should really be on `Gst...The following discussion from !763 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/763#note_900541): (+3 comments)
> Hmm this should really be on `GstVideoInfo`...https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/882Cannot capture window image with ximagesrc and xid : X reports invalid parame...2021-09-24T13:34:27ZYann SalmonCannot capture window image with ximagesrc and xid : X reports invalid parameter attributesI am trying to pinpoint why I sometimes (and unpredictably !) get a black video instead of the image of the selected window in Kazam screencast. It uses GStreamer for capturing so I tried to run a capture using the command line example i...I am trying to pinpoint why I sometimes (and unpredictably !) get a black video instead of the image of the selected window in Kazam screencast. It uses GStreamer for capturing so I tried to run a capture using the command line example in the GStreamer documentation.
I can (seemingly always) capture the whole desktop with
``gst-launch-1.0 ximagesrc ! video/x-raw,framerate=5/1 ! videoconvert ! theoraenc ! oggmux ! filesink location=/tmp/desktop.ogg``
However, specifying an xid gives various results. Sometimes it just works. Sometimes it fails with
```
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 130 (MIT-SHM)
Minor opcode of failed request: 4 (X_ShmGetImage)
Serial number of failed request: 42
Current serial number in output stream: 42
```
Sometimes it seems to start recording normally but on Ctrl-C'ing it, it says
```
^Chandling interrupt.
Interruption : arrêt du pipeline…
Execution ended after 0:00:04.728716374
Définition du pipeline à PAUSED...
Définition du pipeline à READY (prêt)…
```
then seems to stall for several minutes before concluding
```
Définition du pipeline à NULL…
Libération du pipeline…
```
and the resulting video is a corrupted file.
This is with
GStreamer 1.16.2
X.Org X Server 1.20.9
kernel 5.8.0-50-lowlatency
KUbuntu 20.04
KDE Framework 5.68.0
nvidia driver, 460.73.01
Capturing the same window with OBS works without a problem on the same system.https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/issues/306vaapimpeg2enc unable to encode in 1920x1080@60fps2021-06-23T07:17:03Ztengjinchungvaapimpeg2enc unable to encode in 1920x1080@60fpsEnvironment:
Platform: TGL/ADL
Media stack: Q1 2021 release
Commands to reproduce:
gst-launch-1.0 -v videotestsrc pattern=snow ! video/x-raw,width=1920,height=1080,framerate=60/1,format=NV12 ! vaapimpeg2enc ! mpegvideoparse ! mpegtsmux ...Environment:
Platform: TGL/ADL
Media stack: Q1 2021 release
Commands to reproduce:
gst-launch-1.0 -v videotestsrc pattern=snow ! video/x-raw,width=1920,height=1080,framerate=60/1,format=NV12 ! vaapimpeg2enc ! mpegvideoparse ! mpegtsmux ! filesink location=/home/root/test_mpeg2.mpg
gst-launch-1.0 -v videotestsrc pattern=snow ! video/x-raw,width=1920,height=1080,framerate=60/1,format=NV12 ! vaapimpeg2enc ! video/mpeg,profie="high" ! mpegvideoparse ! mpegtsmux ! filesink location=/home/root/test_mpeg2.mpg
gst-launch-1.0 -v videotestsrc pattern=snow ! video/x-raw,width=1920,height=1080,framerate=60/1,format=NV12 ! vaapimpeg2enc ! video/mpeg,profie="high-1440" ! mpegvideoparse ! mpegtsmux ! filesink location=/home/root/test_mpeg2.mpg
errors message:
Got context from element 'vaapiencodempeg2-0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayGLX\)\ vaapidisplayglx0";
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1152, framerate=(fraction)60/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1152, framerate=(fraction)60/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
0:00:00.064128927 53598 0x5647a7d4d800 ERROR vaapi gstvaapiencoder_mpeg2.c:160:ensure_level: failed to find a suitable level matching codec config
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1152, framerate=(fraction)60/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
0:00:00.064324268 53598 0x5647a7d4d800 ERROR vaapi gstvaapiencoder_mpeg2.c:160:ensure_level: failed to find a suitable level matching codec config
0:00:00.090853084 53598 0x5647a7d4d800 ERROR vaapi gstvaapiencoder_mpeg2.c:160:ensure_level: failed to find a suitable level matching codec config
0:00:00.090913950 53598 0x5647a7d4d800 ERROR vaapi gstvaapiencoder_mpeg2.c:160:ensure_level: failed to find a suitable level matching codec confighttps://gitlab.freedesktop.org/gstreamer/www/-/issues/35Issue with page "bindings/cplusplus.html"2021-05-11T10:28:31ZintractabilisIssue with page "bindings/cplusplus.html"> The GStreamer API C++ bindings are actively developed and based on gtkmm, using the same lifecycle mechanism.
It's a lie. GStreamer API C++ bindings **are not** actively developed, the last update was in December 2018. `gstreamermm` h...> The GStreamer API C++ bindings are actively developed and based on gtkmm, using the same lifecycle mechanism.
It's a lie. GStreamer API C++ bindings **are not** actively developed, the last update was in December 2018. `gstreamermm` has problems, for example, it increments the ref counter on in-parameters, which causes calls like `gst_element_query` to fail, and with GTK4 it won't even compile.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/331Missing binding for gst_bin_iterate_all_by_element_factory_name()2021-05-09T15:03:43ZNirbheek Chauhannirbheek.chauhan@gmail.comMissing binding for gst_bin_iterate_all_by_element_factory_name()Was added in 1.18. Should look similar to `GstBinExtManual::iterate_all_by_interface()`.Was added in 1.18. Should look similar to `GstBinExtManual::iterate_all_by_interface()`.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1583waylandsink in Qt5 be crashed2021-09-24T14:39:18ZSVENsuzhouwaylandsink in Qt5 be crashedI consulted tests/examples/waylandsink the example, the program is based on GTK. I tried to embed waylandsink in QT5, but it crashed in the code below.
```c
QPlatformNativeInterface * native = QGuiApplication::platformNativeInterface(...I consulted tests/examples/waylandsink the example, the program is based on GTK. I tried to embed waylandsink in QT5, but it crashed in the code below.
```c
QPlatformNativeInterface * native = QGuiApplication::platformNativeInterface();
struct wl_display *display_handle = (struct wl_display *)native->nativeResourceForWindow("display", NULL);
GstContext * context = gst_wayland_display_handle_context_new (display_handle);
gst_element_set_context (GST_ELEMENT(GST_MESSAGE_SRC(message)), context);
```
it crashed in function `gst_element_set_context `. Can you tell me how to fix this BUG? Or provide an example based on QT5. Thank you.