<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Hi,<br>
<br>
Yes, I think that would be a good idea. However gst-python is now
located in the same place as gstreamer (as of 1.20) so this should
be filed under: <a moz-do-not-send="true"
href="https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/new"
class="moz-txt-link-freetext">https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/new</a>
with the 'Python' label.<br>
<br>
Cheers<br>
-Matt<br>
<br>
<div class="moz-cite-prefix">On 7/7/22 03:00, Alexei Golovko wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAKEABr6vaoLrqaC9KpUOSnAdN_DeMrNKv12FEx4ZevACW6ZYUQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>Great thanks for the workaround!</div>
<div><br>
</div>
<div>Should I report this as a bug on <a
href="https://gitlab.freedesktop.org/groups/gstreamer/-/issues"
moz-do-not-send="true" class="moz-txt-link-freetext">https://gitlab.freedesktop.org/groups/gstreamer/-/issues</a>
with gst-python as a project?<br>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">ср, 6 июл. 2022 г. в 14:40,
Matthew Waters <<a href="mailto:ystreet00@gmail.com"
moz-do-not-send="true" class="moz-txt-link-freetext">ystreet00@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div> Interesting.<br>
<br>
If you separate out this line:<br>
<br>
answer = promise.get_reply().get_value("answer")<br>
<br>
to:<br>
<br>
reply = promise.get_reply()<br>
answer = reply.get_value("answer")<br>
<br>
Then it will work.<br>
<br>
I think this has to do with the temporary copy that python
makes when calling get_reply() that disappears too early?
This is likely a bug somewhere in the python bindings.<br>
<br>
This is the good case:<br>
<br>
0:00:26.515777326 221861 0x555555684f00 ERROR
webrtcbin gstwebrtcbin.c:4584:_create_sdp_task: returning
application/x-gst-promise,
answer=(GstWebRTCSessionDescription)NULL;<br>
INFO __main__:on answer: <Gst.Promise object at
0x7fffe8c593c0 (GstPromise at 0x555555ade1b0)>
<__gi__.GstWebRTCBin object at 0x7fffe9a43400
(GstWebRTCBin at 0x555555ac4120)> None<br>
<br>
Thread 3 "wrb:pc" hit Breakpoint 1,
gst_webrtc_session_description_copy (src=0x7fffd81147b0)
at
../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/rtcsessiondescription.c:72<br>
72 if (!src)<br>
(gdb) <br>
Continuing.<br>
0:00:31.294220789 221861 0x555555684f00 WARN
structure
gststructure.c:2093:priv_gst_structure_append_to_gstring:
No value transform to serialize field 'answer' of type
'GstWebRTCSessionDescription'<br>
INFO __main__:reply: application/x-gst-promise,
answer=(GstWebRTCSessionDescription)NULL;<br>
INFO __main__:answer:
<GstWebRTC.WebRTCSessionDescription object at
0x7fffe8c5a9e0 (GstWebRTCSessionDescription at
0x7fffd8116b20)><br>
INFO __main__:answer fields: <enum
GST_WEBRTC_SDP_TYPE_ANSWER of type
GstWebRTC.WebRTCSDPType><br>
INFO __main__:answer fields: <enum
GST_WEBRTC_SDP_TYPE_ANSWER of type
GstWebRTC.WebRTCSDPType> 3<br>
INFO __main__:answer fields: <enum
GST_WEBRTC_SDP_TYPE_ANSWER of type
GstWebRTC.WebRTCSDPType> answer<br>
INFO __main__:answer sdp is None: False<br>
INFO __main__:answer fields: <GstSdp.SDPMessage
object at 0x7fffe8c5aa40 (GstSDPMessage at
0x7fffd811a740)><br>
INFO __main__:answer sdp: v=0<br>
<br>
Bad case:<br>
<br>
0:00:36.984435665 222001 0x555555685300 ERROR
webrtcbin gstwebrtcbin.c:4584:_create_sdp_task: returning
application/x-gst-promise,
answer=(GstWebRTCSessionDescription)NULL;<br>
INFO __main__:on answer: <Gst.Promise object at
0x7fffe8c593c0 (GstPromise at 0x555555aca2c0)>
<__gi__.GstWebRTCBin object at 0x7fffe8c199c0
(GstWebRTCBin at 0x555555ac4120)> None<br>
<br>
Thread 3 "wrb:pc" hit Breakpoint 1,
gst_webrtc_session_description_copy (src=0x7fffd8116150)
at
../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/rtcsessiondescription.c:72<br>
72 if (!src)<br>
(gdb) <br>
Continuing.<br>
<br>
Thread 3 "wrb:pc" hit Breakpoint 2,
gst_webrtc_session_description_free (desc=0x7fffd8116760)
at
../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/rtcsessiondescription.c:92<br>
92 g_return_if_fail (desc != NULL);<br>
(gdb) bt<br>
#0 gst_webrtc_session_description_free
(desc=0x7fffd8116760) at
../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/rtcsessiondescription.c:92<br>
#1 0x00007fffe9e30008 in g_value_unset
(value=value@entry=0x7fffd8118330) at
../subprojects/glib/gobject/gvalue.c:311<br>
#2 0x00007fffe8f4f4be in gst_structure_free
(structure=0x7fffd8118300) at
../subprojects/gstreamer/gst/gststructure.c:538<br>
#3 0x00007fffe9fd71db in boxed_clear
(self=0x7fffe8c5a980) at
../subprojects/pygobject/gi/pygi-boxed.c:51<br>
#4 boxed_dealloc (self=0x7fffe8c5a980) at
../subprojects/pygobject/gi/pygi-boxed.c:69<br>
#5 0x00007ffff7d29076 in subtype_dealloc () from
/lib64/libpython3.10.so.1.0<br>
#6 0x00007fffe9fcc475 in _Py_DECREF (op=<optimized
out>) at /usr/include/python3.10/object.h:500<br>
#7 _callable_info_dealloc (self=0x7fffe8c39bf0) at
../subprojects/pygobject/gi/pygi-info.c:685<br>
#8 0x00007ffff7d17b00 in _PyEval_EvalFrameDefault () from
/lib64/libpython3.10.so.1.0<br>
#9 0x00007ffff7d118d3 in _PyEval_Vector () from
/lib64/libpython3.10.so.1.0<br>
#10 0x00007fffe9fd7d41 in _pygi_closure_handle
(cif=<optimized out>, result=<optimized out>,
args=<optimized out>, data=<optimized out>) at
../subprojects/pygobject/gi/pygi-closure.c:582<br>
#11 0x00007ffff7fb0322 in ffi_closure_unix64_inner () from
/lib64/libffi.so.8<br>
#12 0x00007ffff7fb0968 in ffi_closure_unix64 () from
/lib64/libffi.so.8<br>
#13 0x00007fffe9182bc1 in _execute_op (op=0x555555aca3a0)
at
../subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c:1007<br>
#14 0x00007fffe9ecc19f in g_main_dispatch
(context=0x7fffd8000b70) at
../subprojects/glib/glib/gmain.c:3417<br>
#15 g_main_context_dispatch (context=0x7fffd8000b70) at
../subprojects/glib/glib/gmain.c:4135<br>
#16 0x00007fffe9ecc528 in g_main_context_iterate
(context=0x7fffd8000b70, block=block@entry=1,
dispatch=dispatch@entry=1, self=<optimized out>) at
../subprojects/glib/glib/gmain.c:4211<br>
#17 0x00007fffe9ecc7cf in g_main_loop_run
(loop=0x7fffd8002580) at
../subprojects/glib/glib/gmain.c:4411<br>
#18 0x00007fffe9185146 in _gst_pc_thread
(webrtc=0x555555ac4120) at
../subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c:928<br>
#19 0x00007fffe9ef4fad in g_thread_proxy
(data=0x555555685300) at
../subprojects/glib/glib/gthread.c:827<br>
#20 0x00007ffff788ce2d in start_thread () from
/lib64/libc.so.6<br>
#21 0x00007ffff7912620 in clone3 () from /lib64/libc.so.6<br>
(gdb) c<br>
Continuing.<br>
INFO __main__:answer:
<GstWebRTC.WebRTCSessionDescription object at
0x7fffe8c5a9e0 (GstWebRTCSessionDescription at
0x7fffd8116760)><br>
INFO __main__:answer fields: <enum 669822870 of
type GstWebRTC.WebRTCSDPType><br>
INFO __main__:answer fields: <enum 669822870 of
type GstWebRTC.WebRTCSDPType> 669822870<br>
INFO __main__:answer fields: <enum 669822870 of
type GstWebRTC.WebRTCSDPType> unknown<br>
INFO __main__:answer sdp is None: True<br>
INFO __main__:answer fields: None<br>
Traceback (most recent call last):<br>
<br>
Cheers<br>
-Matt<br>
<br>
<div>On 6/7/22 20:55, Alexei Golovko wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>`apt show python3-gst-1.0` gives me version
1.20.1</div>
<div><br>
</div>
<div>Also I made a minimal example without external
dependencies: just set hardcoded SDP as
local-description and emit create-answer. <a
href="https://pastebin.com/9xPk6EkY"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://pastebin.com/9xPk6EkY</a></div>
<div>It also prints unknown SDP type, new enum value
each run: <a href="https://pastebin.com/zKhDsLZZ"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://pastebin.com/zKhDsLZZ</a></div>
<div><br>
</div>
<div>This behaviour also reproduces with python 3.9 on
NixOS 22.05 (I've used the following shell.nix: <a
href="https://pastebin.com/vsBG5RXR"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://pastebin.com/vsBG5RXR</a>).<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">вт, 5 июл. 2022 г. в
17:33, Matthew Waters <<a
href="mailto:ystreet00@gmail.com" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">ystreet00@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px
0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div> Looks like you are looking for
python3-gst-1.0: <a
href="https://packages.ubuntu.com/search?suite=default§ion=all&arch=any&keywords=python3-gst&searchon=names"
target="_blank" moz-do-not-send="true">https://packages.ubuntu.com/search?suite=default§ion=all&arch=any&keywords=python3-gst&searchon=names</a>.<br>
<br>
I don't know how exactly the python bindings
operate so cannot give you that information.
Others on this list may be able to point you in
the right direction.<br>
<br>
<div>On 5/7/22 23:19, Alexei Golovko wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>I have installed python3-gi package from
apt repository, version 3.42.0-3build1.</div>
<div>Yes, value for the enum changes each run.</div>
<div>Could you give advice on how to check if
this is a python binding problem or
lower-level one?<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">вт, 5 июл.
2022 г. в 16:02, Matthew Waters <<a
href="mailto:ystreet00@gmail.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">ystreet00@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div> Please keep the list in CC so others
searching for the same issue might find a
solution.<br>
<br>
PyGObject is not gst-python. gst-python
provides some convenience API on top of
PyGObject and may be required in this
case.<br>
<br>
That log is expected for your case (no
existing transceiver or pad).<br>
<br>
The value for the enum is different from
your last run. This points to
uninitialized/random memory being
accessed. You would need to figure out if
that's in the python translation layer or
not.<br>
<br>
Cheers<br>
-Matt<br>
<br>
<div>On 5/7/22 22:41, Alexei Golovko
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>Here is the log with
GST_DEBUG=3,*webrtc*:7 — <a
href="https://pastebin.com/RshtnqQx"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://pastebin.com/RshtnqQx</a><br>
</div>
<div>I use PyGObject 3.42.1.</div>
<div><br>
</div>
<div>I see in logs following lines:</div>
<div>2022-07-05 15:15:57.949 jord
ERROR| 0:00:01.214992971 9
0x55e2cbd19980 DEBUG
webrtcbin
gstwebrtcbin.c:1874:_find_codec_preferences:<webrtctransceiver0>
Could not find caps for mline 0<br>
2022-07-05 15:15:57.949 jord ERROR|
0:00:01.215007126 9
0x55e2cbd19980 TRACE
webrtcbin
gstwebrtcbin.c:4071:_create_answer_task:<wrb>
trying to compare application/x-rtp,
media=(string)video,
payload=(int)96,
clock-rate=(int)90000,
encoding-name=(string)H264,
profile-level-id=(string)42e01f,
packetization-mode=(string)1,
rtcp-fb-nack=(boolean)true,
rtcp-fb-nack-pli=(boolean)true,
rtcp-fb-goog-remb=(boolean)true;
application/x-rtp,
media=(string)video,
payload=(int)97,
clock-rate=(int)90000,
encoding-name=(string)RTX,
apt=(string)96 and (NULL)</div>
<div><br>
</div>
<div>Maybe they are related to the
problem, though I am not sure.<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">вт,
5 июл. 2022 г. в 15:12, Matthew
Waters <<a
href="mailto:ystreet00@gmail.com"
target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">ystreet00@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
That SDP doesn't actually exist as a
valid value. You can enable<br>
GStreamer debugging with
GST_DEBUG=3,*webrtc*:7 and that may
show<br>
something interesting.<br>
<br>
Otherwise, one has to figure out if
the python bindings are doing<br>
something weird here. I assume you
have a relevant gst-python<br>
installation available and in use.<br>
<br>
Cheers<br>
-Matt<br>
<br>
On 5/7/22 02:44, Alexei Golovko via
gstreamer-devel wrote:<br>
> Hi,<br>
> I try to use webrtcbin with
Janus.<br>
> I've found examples like<br>
> <a
href="https://github.com/centricular/gstwebrtc-demos/blob/master/janus/janusvideoroom.py"
rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/centricular/gstwebrtc-demos/blob/master/janus/janusvideoroom.py</a>,<br>
> <a
href="https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/master/tests/examples/webrtc/webrtcrenego.c"
rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/master/tests/examples/webrtc/webrtcrenego.c</a>,<br>
> <a
href="https://github.com/centricular/gstwebrtc-demos/blob/master/sendrecv/gst-rust/src/main.rs"
rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/centricular/gstwebrtc-demos/blob/master/sendrecv/gst-rust/src/main.rs</a>,<br>
> <a
href="https://gitlab.freedesktop.org/gstreamer/gst-examples/-/blob/master/webrtc/sendrecv/gst/webrtc_sendrecv.py"
rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://gitlab.freedesktop.org/gstreamer/gst-examples/-/blob/master/webrtc/sendrecv/gst/webrtc_sendrecv.py</a>.<br>
><br>
> They tend to create an offer
locally, send it to Janus, receive
an<br>
> answer and set it as a remote
description. I would like to mimic<br>
> behaviour, which we used to use
with python's aiortc: get an offer<br>
> from Janus, generate an answer
and send it back.<br>
><br>
> I set SDP offer from Janus with
set-remote-description, then emit<br>
> create-answer; but I get an
answer WebRTCSessionDescription with
an<br>
> empty SDP and a very strange
WebRTCSDPType=-43384639
(non-existing enum?).<br>
><br>
> What am I doing wrong and how
to fix this?<br>
><br>
> The python script used is here:
<a
href="https://pastebin.com/WGPcF64m"
rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://pastebin.com/WGPcF64m</a><br>
> Module
dvr_processor.dvr_processor.janus
contains communication with<br>
> Janus: <a
href="https://pastebin.com/KAhTv8Lq"
rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://pastebin.com/KAhTv8Lq</a><br>
> Logs are here: <a
href="https://pastebin.com/QVegDhRZ"
rel="noreferrer" target="_blank"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://pastebin.com/QVegDhRZ</a><br>
><br>
> It is gstreamer 1.20.1 on
ubuntu-22.04 based image.<br>
><br>
> Regards,<br>
> Alexei Golovko.<br>
<br>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</div>
</blockquote>
<br>
</body>
</html>