Looping ogg/theora videos

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

Looping ogg/theora videos

David Johnson
I need to loop some ogg/theora videos. I can do this, but I am getting a  
noticable delay when looping. I need the looping to be seamless.

Depending on what times I am looping from/to, the delay can vary from not
noticable, to extreme. It can also vary depending on the file.

I have full sources of an example I can post if necessary. I have included a
short snippet to show what I am doing:

What am I doing wrong?

--
David Johnson

-----
gboolean OggPlayer::callbackMessage(GstBus *bus, GstMessage *message, gpointer
data)
{
    switch (GST_MESSAGE_TYPE(message)) {
    ...

    case GST_MESSAGE_SEGMENT_DONE:
    {
        GstElement *pipeline = (GstElement*)data;
        GstEvent *event;
        event = gst_event_new_seek(1.0, GST_FORMAT_TIME,
                                   (GstSeekFlags)(GST_SEEK_FLAG_FLUSH |
GST_SEEK_FLAG_SEGMENT),
                                   GST_SEEK_TYPE_SET, startval,
                                   GST_SEEK_TYPE_SET, endval);
        bool result = gst_element_send_event(pipeline, event);
        break;
    ...

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

Re: Looping ogg/theora videos

David Johnson
On Wednesday, April 27, 2011 05:28:09 pm David Johnson wrote:

> I need to loop some ogg/theora videos. I can do this, but I am getting a
> noticable delay when looping. I need the looping to be seamless.
>
> Depending on what times I am looping from/to, the delay can vary from not
> noticable, to extreme. It can also vary depending on the file.
>
> I have full sources of an example I can post if necessary. I have included
> a short snippet to show what I am doing:
>
> What am I doing wrong?

Still banging my head on this one. Am I even doing looping the right way? Is
OGG not suited to looping? Did I forget to cross a T or dot on I? Need help.

Thanks,

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

Re: Looping ogg/theora videos

Stefan Sauer
In reply to this post by David Johnson
Am 28.04.2011 03:28, schrieb David Johnson:

> I need to loop some ogg/theora videos. I can do this, but I am getting a  
> noticable delay when looping. I need the looping to be seamless.
>
> Depending on what times I am looping from/to, the delay can vary from not
> noticable, to extreme. It can also vary depending on the file.
>
> I have full sources of an example I can post if necessary. I have included a
> short snippet to show what I am doing:
>
> What am I doing wrong?
>

Only use GST_SEEK_FLAG_FLUSH for the first seek-event, when handling
SEGMENT_DONE try without it.

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

Re: Looping ogg/theora videos

David Johnson
On Thursday, April 28, 2011 01:14:40 pm Stefan Kost wrote:

> Am 28.04.2011 03:28, schrieb David Johnson:
> > I need to loop some ogg/theora videos. I can do this, but I am getting a
> > noticable delay when looping. I need the looping to be seamless.
> >
> > Depending on what times I am looping from/to, the delay can vary from not
> > noticable, to extreme. It can also vary depending on the file.
> >
> > I have full sources of an example I can post if necessary. I have
> > included a short snippet to show what I am doing:
> >
> > What am I doing wrong?
>
> Only use GST_SEEK_FLAG_FLUSH for the first seek-event, when handling
> SEGMENT_DONE try without it.

This does not help any. I am still getting about a quarter second freeze at
the end of the segment.

Some more investigation reveals that this only happens with ogg/theora (obv)
video clips. It is not happening with some DV clips.

Is this the fault of the Theora format? Perhaps it is not suited for seamless
looping?

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

Re: Looping ogg/theora videos

Stefan Sauer
Am 29.04.2011 00:12, schrieb David Johnson:

> On Thursday, April 28, 2011 01:14:40 pm Stefan Kost wrote:
>> Am 28.04.2011 03:28, schrieb David Johnson:
>>> I need to loop some ogg/theora videos. I can do this, but I am getting a
>>> noticable delay when looping. I need the looping to be seamless.
>>>
>>> Depending on what times I am looping from/to, the delay can vary from not
>>> noticable, to extreme. It can also vary depending on the file.
>>>
>>> I have full sources of an example I can post if necessary. I have
>>> included a short snippet to show what I am doing:
>>>
>>> What am I doing wrong?
>>
>> Only use GST_SEEK_FLAG_FLUSH for the first seek-event, when handling
>> SEGMENT_DONE try without it.
>
> This does not help any. I am still getting about a quarter second freeze at
> the end of the segment.
>
> Some more investigation reveals that this only happens with ogg/theora (obv)
> video clips. It is not happening with some DV clips.
>
> Is this the fault of the Theora format? Perhaps it is not suited for seamless
> looping?
>

There could be a bug in oggdemux or theoradec. You probably have to drill down
into the logs and see what code is executed when it is waiting.

I have a hunch that something not very optimal is happending when looping. In
buzztard I get unreasonable cpu-load when looping short audio. I had not yet
time to investigate though.

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