State change to Paused never completes on OS X

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

State change to Paused never completes on OS X

Gottfried Haider
Hello all,

I have a playbin-based pipeline of a local file. I don't want playback
to begin immediately, but want to be able to e.g. seek to a specific
position or retrieve the length of the file first.

On Linux, I was able to to initially set my pipeline's state to
paused, and - when a seek or similar was requested - wait for the
asynchronous state change to complete, at which point the seek would
succeed. On OS X, however, the asynchronous state change will never
complete, and the pipeline hovers between ready and paused forever.

Any idea what I am doing wrong here? This is with GStreamer 1.8.1.


The setup of my pipeline would be here:
https://github.com/gohai/processing-glvideo/blob/740d2f0d7b8222306d9723149496bce2c01be80a/src/native/impl.c#L437

My seek method:
https://github.com/gohai/processing-glvideo/blob/740d2f0d7b8222306d9723149496bce2c01be80a/src/native/impl.c#L602

At this point, gst_element_get_state() will forever return
GST_STATE_CHANGE_ASYNC with current state being GST_STATE_READY and
pending state being GST_STATE_PAUSED.


Any ideas would be greatly apprechiated.

Best
Gottfried
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: State change to Paused never completes on OS X

saepia

Please run app with GST_DEBUG=*:4 environment variable and read carefully if there was no message indicating error prior to hang.  Usually there's something that can point you to the right direction.

Seeking is also buggy for some formats -  see https://bugzilla.gnome.org/show_bug.cgi?id=766673

M.

08.07.2016 4:32 PM "Gottfried Haider" <[hidden email]> napisał(a):
Hello all,

I have a playbin-based pipeline of a local file. I don't want playback
to begin immediately, but want to be able to e.g. seek to a specific
position or retrieve the length of the file first.

On Linux, I was able to to initially set my pipeline's state to
paused, and - when a seek or similar was requested - wait for the
asynchronous state change to complete, at which point the seek would
succeed. On OS X, however, the asynchronous state change will never
complete, and the pipeline hovers between ready and paused forever.

Any idea what I am doing wrong here? This is with GStreamer 1.8.1.


The setup of my pipeline would be here:
https://github.com/gohai/processing-glvideo/blob/740d2f0d7b8222306d9723149496bce2c01be80a/src/native/impl.c#L437

My seek method:
https://github.com/gohai/processing-glvideo/blob/740d2f0d7b8222306d9723149496bce2c01be80a/src/native/impl.c#L602

At this point, gst_element_get_state() will forever return
GST_STATE_CHANGE_ASYNC with current state being GST_STATE_READY and
pending state being GST_STATE_PAUSED.


Any ideas would be greatly apprechiated.

Best
Gottfried
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: State change to Paused never completes on OS X

Gottfried Haider
Thanks Marcin!

I captured the debug output [1] and from a cursory glance: I am seeing
many notifications of a successful state change to paused, no
indication of something failing. Caps event is happening. Right before
the hang there is this GL-related line:

gstglcontext.c:1157:gst_gl_context_create_thread:<glcontextcocoa0>
Attempting to create opengl context. user chosen api(s) (any),
compiled api support (opengl opengl3) display api (any)

Is me waiting for the state change to complete perhaps interfering
with GStreamer's ability to query and setup the shared GL context?
(the code handles GST_QUERY_CONTEXT) Any other ideas?

Thanks
Gottfried

[1] https://sukzessiv.net/~gohai/gstreamer/state_change_full.log
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: State change to Paused never completes on OS X

saepia
Ok now please run the same on platform on which it works for you and look for differences :)

The suspicious thing is

pad_query:<glcolorconvertelement0:src> pad peer query failed

but I am not using GStreamer for any GL-related things so I can't say whether this is expected behaviour or not

m.

2016-07-09 9:58 GMT+02:00 Gottfried Haider <[hidden email]>:
Thanks Marcin!

I captured the debug output [1] and from a cursory glance: I am seeing
many notifications of a successful state change to paused, no
indication of something failing. Caps event is happening. Right before
the hang there is this GL-related line:

gstglcontext.c:1157:gst_gl_context_create_thread:<glcontextcocoa0>
Attempting to create opengl context. user chosen api(s) (any),
compiled api support (opengl opengl3) display api (any)

Is me waiting for the state change to complete perhaps interfering
with GStreamer's ability to query and setup the shared GL context?
(the code handles GST_QUERY_CONTEXT) Any other ideas?

Thanks
Gottfried

[1] https://sukzessiv.net/~gohai/gstreamer/state_change_full.log
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: State change to Paused never completes on OS X

Gottfried Haider

Thanks for looking into this!

And indeed, when I remove the glcolorconvert the hang is gone (and my video is black). I am oddly also not seeing the line "Attempting to create opengl context" in the debug output anymore. Maybe this wasn't supposed to happen with a shared context in the first place?

Hoping Matt or someone else in the know when it comes to GL has an idea, but thanks a lot for your help!

Best
G

On Jul 9, 2016 10:09, "[hidden email]" <[hidden email]> wrote:
Ok now please run the same on platform on which it works for you and look for differences :)

The suspicious thing is

pad_query:<glcolorconvertelement0:src> pad peer query failed

but I am not using GStreamer for any GL-related things so I can't say whether this is expected behaviour or not

m.

2016-07-09 9:58 GMT+02:00 Gottfried Haider <[hidden email]>:
Thanks Marcin!

I captured the debug output [1] and from a cursory glance: I am seeing
many notifications of a successful state change to paused, no
indication of something failing. Caps event is happening. Right before
the hang there is this GL-related line:

gstglcontext.c:1157:gst_gl_context_create_thread:<glcontextcocoa0>
Attempting to create opengl context. user chosen api(s) (any),
compiled api support (opengl opengl3) display api (any)

Is me waiting for the state change to complete perhaps interfering
with GStreamer's ability to query and setup the shared GL context?
(the code handles GST_QUERY_CONTEXT) Any other ideas?

Thanks
Gottfried

[1] https://sukzessiv.net/~gohai/gstreamer/state_change_full.log
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: State change to Paused never completes on OS X

saepia

I think it should not hang anyway. IMO It's a topic for a bug report.

While filing besides this what you've already mentioned I suggest extending bug report with log with GST_DEBUG=*:5 (not 4) and you should attach gdb to your hanged process and get output of

thr a a bt

Within gdb

M.

09.07.2016 10:21 AM "Gottfried Haider" <[hidden email]> napisał(a):

Thanks for looking into this!

And indeed, when I remove the glcolorconvert the hang is gone (and my video is black). I am oddly also not seeing the line "Attempting to create opengl context" in the debug output anymore. Maybe this wasn't supposed to happen with a shared context in the first place?

Hoping Matt or someone else in the know when it comes to GL has an idea, but thanks a lot for your help!

Best
G

On Jul 9, 2016 10:09, "[hidden email]" <[hidden email]> wrote:
Ok now please run the same on platform on which it works for you and look for differences :)

The suspicious thing is

pad_query:<glcolorconvertelement0:src> pad peer query failed

but I am not using GStreamer for any GL-related things so I can't say whether this is expected behaviour or not

m.

2016-07-09 9:58 GMT+02:00 Gottfried Haider <[hidden email]>:
Thanks Marcin!

I captured the debug output [1] and from a cursory glance: I am seeing
many notifications of a successful state change to paused, no
indication of something failing. Caps event is happening. Right before
the hang there is this GL-related line:

gstglcontext.c:1157:gst_gl_context_create_thread:<glcontextcocoa0>
Attempting to create opengl context. user chosen api(s) (any),
compiled api support (opengl opengl3) display api (any)

Is me waiting for the state change to complete perhaps interfering
with GStreamer's ability to query and setup the shared GL context?
(the code handles GST_QUERY_CONTEXT) Any other ideas?

Thanks
Gottfried

[1] https://sukzessiv.net/~gohai/gstreamer/state_change_full.log
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: State change to Paused never completes on OS X

Gottfried Haider
Submitted as https://bugzilla.gnome.org/show_bug.cgi?id=768630

Best
Gottfried

On Sat, Jul 9, 2016 at 11:02 PM, [hidden email] <[hidden email]> wrote:

> I think it should not hang anyway. IMO It's a topic for a bug report.
>
> While filing besides this what you've already mentioned I suggest extending
> bug report with log with GST_DEBUG=*:5 (not 4) and you should attach gdb to
> your hanged process and get output of
>
> thr a a bt
>
> Within gdb
>
> M.
>
> 09.07.2016 10:21 AM "Gottfried Haider" <[hidden email]>
> napisał(a):
>>
>> Thanks for looking into this!
>>
>> And indeed, when I remove the glcolorconvert the hang is gone (and my
>> video is black). I am oddly also not seeing the line "Attempting to create
>> opengl context" in the debug output anymore. Maybe this wasn't supposed to
>> happen with a shared context in the first place?
>>
>> Hoping Matt or someone else in the know when it comes to GL has an idea,
>> but thanks a lot for your help!
>>
>> Best
>> G
>>
>> On Jul 9, 2016 10:09, "[hidden email]" <[hidden email]> wrote:
>>>
>>> Ok now please run the same on platform on which it works for you and look
>>> for differences :)
>>>
>>> The suspicious thing is
>>>
>>> pad_query:<glcolorconvertelement0:src> pad peer query failed
>>>
>>> but I am not using GStreamer for any GL-related things so I can't say
>>> whether this is expected behaviour or not
>>>
>>> m.
>>>
>>> 2016-07-09 9:58 GMT+02:00 Gottfried Haider <[hidden email]>:
>>>>
>>>> Thanks Marcin!
>>>>
>>>> I captured the debug output [1] and from a cursory glance: I am seeing
>>>> many notifications of a successful state change to paused, no
>>>> indication of something failing. Caps event is happening. Right before
>>>> the hang there is this GL-related line:
>>>>
>>>> gstglcontext.c:1157:gst_gl_context_create_thread:<glcontextcocoa0>
>>>> Attempting to create opengl context. user chosen api(s) (any),
>>>> compiled api support (opengl opengl3) display api (any)
>>>>
>>>> Is me waiting for the state change to complete perhaps interfering
>>>> with GStreamer's ability to query and setup the shared GL context?
>>>> (the code handles GST_QUERY_CONTEXT) Any other ideas?
>>>>
>>>> Thanks
>>>> Gottfried
>>>>
>>>> [1] https://sukzessiv.net/~gohai/gstreamer/state_change_full.log
>>>> _______________________________________________
>>>> gstreamer-devel mailing list
>>>> [hidden email]
>>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>
>>>
>>>
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> [hidden email]
>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel