oggdemux

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

oggdemux

Neil Jones
Hi,

I'm currently trying to test my multi-format audio decoder plugin with
Ogg Vorbis files, specifically I've been checking to confirm I'm
putting the correct timestamps into the PCM buffers I forward on to
the sink.

Im am seeing some odd behaviour the first 4 buffers sent to me dont
have valid timestamps:

gstaxd: Chaining buffer of size 30 timestamp -1 duration -1
gstaxd: Chaining buffer of size 158 timestamp -1 duration -1
gstaxd: Chaining buffer of size 2888 timestamp -1 duration -1
gstaxd: Chaining buffer of size 55 timestamp 0 duration 0
gstaxd: Chaining buffer of size 51 timestamp 0 duration 2902494
gstaxd: Chaining buffer of size 328 timestamp 2902494 duration 13061224
gstaxd: Chaining buffer of size 50 timestamp 15963718 duration 13061225
gstaxd: Chaining buffer of size 50 timestamp 29024943 duration 2902494

why would the first buffers have no timestamps are these header frame
or id tags ? if so why hasn't oggdemux stripped these ? and why do I
get a buffer of 0 duration but is still 55 bytes big ?

If i get a buffer with a timestamp of none I read a fixed amount of
data from the decoder (input buffer size x 4) then try to interpolate
the time stamps based on the sample rate of the PCM data, thus with
this stream I get a discontinutiy with my outgoing buffer timestamps
(as seen at the sink):


Setting pipeline to PLAYING ...
fakesink0: last-message = "chain   ******* < (  120 bytes, timestamp:
0:00:00.000000000, duration: 0:00:00.000312500,
GST_STATE_CHANGE_PAUSED_TO_PLAYING
fakesink0: last-message = "chain   ******* < (  632 bytes, timestamp:
0:00:00.000312500, duration: 0:00:00.001645833,
New clock: GstSystemClock
fakesink0: last-message = "chain   ******* < (11552 bytes, timestamp:
0:00:00.001958333, duration: 0:00:00.030083333,
fakesink0: last-message = "chain   ******* < (    0 bytes, timestamp:
0:00:00.000000000, duration: 0:00:00.000000000,      ***
discontinutity ***
fakesink0: last-message = "chain   ******* < ( 1114 bytes, timestamp:
0:00:00.000000000, duration: 0:00:00.002902494,
fakesink0: last-message = "chain   ******* < ( 5015 bytes, timestamp:
0:00:00.002902494, duration: 0:00:00.013061224,
fakesink0: last-message = "chain   ******* < ( 5015 bytes, timestamp:
0:00:00.015963718, duration: 0:00:00.013061225,
fakesink0: last-message = "chain   ******* < ( 1114 bytes, timestamp:
0:00:00.029024943, duration: 0:00:00.002902494,

my pipeline is: gst-launch -v filesrc location=/home/08_Poison.ogg   !
typefind ! oggdemux ! axd ! fakesink

Any help appreciated,

Cheers

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

Re: oggdemux

Wim Taymans
On 01/27/2012 01:18 PM, Neil Jones wrote:

> Hi,
>
> I'm currently trying to test my multi-format audio decoder plugin with
> Ogg Vorbis files, specifically I've been checking to confirm I'm
> putting the correct timestamps into the PCM buffers I forward on to
> the sink.
>
> Im am seeing some odd behaviour the first 4 buffers sent to me dont
> have valid timestamps:
>
> gstaxd: Chaining buffer of size 30 timestamp -1 duration -1
> gstaxd: Chaining buffer of size 158 timestamp -1 duration -1
> gstaxd: Chaining buffer of size 2888 timestamp -1 duration -1
> gstaxd: Chaining buffer of size 55 timestamp 0 duration 0
> gstaxd: Chaining buffer of size 51 timestamp 0 duration 2902494
> gstaxd: Chaining buffer of size 328 timestamp 2902494 duration 13061224
> gstaxd: Chaining buffer of size 50 timestamp 15963718 duration 13061225
> gstaxd: Chaining buffer of size 50 timestamp 29024943 duration 2902494
>
> why would the first buffers have no timestamps are these header frame
> or id tags ? if so why hasn't oggdemux stripped these ? and why do I
> get a buffer of 0 duration but is still 55 bytes big ?

The first 3 packets are headers to setup the vorbis decoder, not sending
them would mean that the decoder can't work. The 4th packet contains
samples but does not produce any output so has a 0 duration.

Wim

>
> If i get a buffer with a timestamp of none I read a fixed amount of
> data from the decoder (input buffer size x 4) then try to interpolate
> the time stamps based on the sample rate of the PCM data, thus with
> this stream I get a discontinutiy with my outgoing buffer timestamps
> (as seen at the sink):
>
>
> Setting pipeline to PLAYING ...
> fakesink0: last-message = "chain   *******<  (  120 bytes, timestamp:
> 0:00:00.000000000, duration: 0:00:00.000312500,
> GST_STATE_CHANGE_PAUSED_TO_PLAYING
> fakesink0: last-message = "chain   *******<  (  632 bytes, timestamp:
> 0:00:00.000312500, duration: 0:00:00.001645833,
> New clock: GstSystemClock
> fakesink0: last-message = "chain   *******<  (11552 bytes, timestamp:
> 0:00:00.001958333, duration: 0:00:00.030083333,
> fakesink0: last-message = "chain   *******<  (    0 bytes, timestamp:
> 0:00:00.000000000, duration: 0:00:00.000000000,      ***
> discontinutity ***
> fakesink0: last-message = "chain   *******<  ( 1114 bytes, timestamp:
> 0:00:00.000000000, duration: 0:00:00.002902494,
> fakesink0: last-message = "chain   *******<  ( 5015 bytes, timestamp:
> 0:00:00.002902494, duration: 0:00:00.013061224,
> fakesink0: last-message = "chain   *******<  ( 5015 bytes, timestamp:
> 0:00:00.015963718, duration: 0:00:00.013061225,
> fakesink0: last-message = "chain   *******<  ( 1114 bytes, timestamp:
> 0:00:00.029024943, duration: 0:00:00.002902494,
>
> my pipeline is: gst-launch -v filesrc location=/home/08_Poison.ogg   !
> typefind ! oggdemux ! axd ! fakesink
>
> Any help appreciated,
>
> Cheers
>
> Neil
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

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

Re: oggdemux

Neil Jones
Thanks that makes sense.

On Fri, Jan 27, 2012 at 2:22 PM, Wim Taymans <[hidden email]> wrote:

> On 01/27/2012 01:18 PM, Neil Jones wrote:
>>
>> Hi,
>>
>> I'm currently trying to test my multi-format audio decoder plugin with
>> Ogg Vorbis files, specifically I've been checking to confirm I'm
>> putting the correct timestamps into the PCM buffers I forward on to
>> the sink.
>>
>> Im am seeing some odd behaviour the first 4 buffers sent to me dont
>> have valid timestamps:
>>
>> gstaxd: Chaining buffer of size 30 timestamp -1 duration -1
>> gstaxd: Chaining buffer of size 158 timestamp -1 duration -1
>> gstaxd: Chaining buffer of size 2888 timestamp -1 duration -1
>> gstaxd: Chaining buffer of size 55 timestamp 0 duration 0
>> gstaxd: Chaining buffer of size 51 timestamp 0 duration 2902494
>> gstaxd: Chaining buffer of size 328 timestamp 2902494 duration 13061224
>> gstaxd: Chaining buffer of size 50 timestamp 15963718 duration 13061225
>> gstaxd: Chaining buffer of size 50 timestamp 29024943 duration 2902494
>>
>> why would the first buffers have no timestamps are these header frame
>> or id tags ? if so why hasn't oggdemux stripped these ? and why do I
>> get a buffer of 0 duration but is still 55 bytes big ?
>
>
> The first 3 packets are headers to setup the vorbis decoder, not sending
> them would mean that the decoder can't work. The 4th packet contains samples
> but does not produce any output so has a 0 duration.
>
> Wim
>>
>>
>> If i get a buffer with a timestamp of none I read a fixed amount of
>> data from the decoder (input buffer size x 4) then try to interpolate
>> the time stamps based on the sample rate of the PCM data, thus with
>> this stream I get a discontinutiy with my outgoing buffer timestamps
>> (as seen at the sink):
>>
>>
>> Setting pipeline to PLAYING ...
>> fakesink0: last-message = "chain   *******<  (  120 bytes, timestamp:
>> 0:00:00.000000000, duration: 0:00:00.000312500,
>> GST_STATE_CHANGE_PAUSED_TO_PLAYING
>> fakesink0: last-message = "chain   *******<  (  632 bytes, timestamp:
>> 0:00:00.000312500, duration: 0:00:00.001645833,
>> New clock: GstSystemClock
>> fakesink0: last-message = "chain   *******<  (11552 bytes, timestamp:
>> 0:00:00.001958333, duration: 0:00:00.030083333,
>> fakesink0: last-message = "chain   *******<  (    0 bytes, timestamp:
>> 0:00:00.000000000, duration: 0:00:00.000000000,      ***
>> discontinutity ***
>> fakesink0: last-message = "chain   *******<  ( 1114 bytes, timestamp:
>> 0:00:00.000000000, duration: 0:00:00.002902494,
>> fakesink0: last-message = "chain   *******<  ( 5015 bytes, timestamp:
>> 0:00:00.002902494, duration: 0:00:00.013061224,
>> fakesink0: last-message = "chain   *******<  ( 5015 bytes, timestamp:
>> 0:00:00.015963718, duration: 0:00:00.013061225,
>> fakesink0: last-message = "chain   *******<  ( 1114 bytes, timestamp:
>> 0:00:00.029024943, duration: 0:00:00.002902494,
>>
>> my pipeline is: gst-launch -v filesrc location=/home/08_Poison.ogg   !
>> typefind ! oggdemux ! axd ! fakesink
>>
>> Any help appreciated,
>>
>> Cheers
>>
>> Neil
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel