On 08/22/2011 01:35 PM, Himanshu Chug wrote:
Hi Tanu, All,

I have an up-to-date gst pulse-sink with latest patches from David,
but this issue remains same.

_Background_: We are stablizing our audio driver on OMAP4 platform,

You might want to hang out in the #ubuntu-arm channel on freenode, at least if your product is Ubuntu based. OMAP4 is one of the platforms they are working with.

there are lot of changes went into our audio driver recently which break
this use-case which was working fine earlier with same PA and gst setup
but with old kernel and ALSA driver.
so there might no changes needed in PA and gst-pulsesink and I am trying
to understand the actual issue here and to avoid the work-around of
modifying the
tsched_buffer_size=1024 which says:   -the use-case is always working
fine by loading module-alsa-sink with tsched_buffer_size=1024

I am new to PA, so some of my questions sounds very basic, but I want to
dive deep into code details to get hold this problem , I seeks few
clarifications from here:

 From protocol-native.c handle_seek( ) function we are getting rewinds
due to rewrite on the condition when sink's read index is greater than
write index,
The comment says "  /* OK, the sink already asked for this data, so
let's have it ask us again */

          indexr = pa_memblockq_get_read_index(s->memblockq);

         if (indexw < indexr) {
             /* OK, the sink already asked for this data, so
              * let's have it usk us again */

             pa_log_debug("Requesting rewind due to rewrite.");
             pa_sink_input_request_rewind(s->sink_input, (size_t)
(indexr - indexw), TRUE, FALSE, FALSE);
         }


as per my understanding,
PA is going to write audio buffers on write index and update write index
after every write.
ALSA sink is going to read audio buffers from read index and update the
read index after every read.

here we are rewinding back (indexr - indexw) size due to PA rewrite, but
practically what causes the situation where indexr > indexw ??

When your client buffer is empty, your sink input hands out silence to PulseAudio internally. When you send in a new packet, that's internally being treated as an overwrite/rewind of the silence previously handed out.

1. Is ALSA not in Sync (to slow or too fast) in reading the buffers ?
2. Is gst-plusesink not giving enough buffers in time when ALSA needs ?
3. or something else ?

Given your log, you seem to start off with an empty buffer. This was fixed in gstreamer a while ago. See http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/ext/pulse/pulsesink.c?id=8ca094795add18733faeb2a1f335bb33f40f9894 - and perhaps a few of the following commits as well.

4. handle_seek( ) called  , why we need to seek streams in a smooth
playback scenario ? the same function is not called from pacmd play-file
scenario and the beep worked fine always here?

What is your Pulseaudio version? I'm not 100% sure, but from your log it looks like you're missing the optimisation in PulseAudio that does not split seek and write in two, which probably means you're missing the other optimisation as well. Don't know how much that will help in this case though.


Attached are the PA logs for beep (click.wav) playback 1. working fine
with pacmd play-file 2. Not working with gst-launch

Any comments/clarifications are helpful?

Recommend upgrading to latest stable releases of Gstreamer and PulseAudio unless already done so.


Thanks,
Himanshu


On Sun, Aug 21, 2011 at 5:21 PM, David Henningsson
<[email protected]
<mailto:[email protected]>> wrote:

    On 08/20/2011 06:12 PM, Tanu Kaskinen wrote:

        On Fri, 2011-08-19 at 14:08 +0530, Himanshu Chug wrote:

            Hi All

            I am able to get the small beep files working consistently
            using gst-launch
            now by modifying tsched_buffer_size param of
            module-alsa-sink like:

            load-module module-alsa-sink tsched_buffer_size=1024,
            (buffer size is default to 2s)

            I am using timer based tsched audio scheduling , on OMAP4
            platform.

            I have few questions:

            Q1. how does this change affect my system, if I always make
            tsched_buffer_size=1024? I suspect it may increase the power
            consumption and increase the ALSA
            wakeup's , if I reduce the buffer size and period like like
            this?


        Yes.

            Q2. When the beep file is not played on speakers , I can see
            a lot of rewind
            prints from PA
            protocol-native.c: Requesting rewind due to rewrite. and it
            continues and
            finally I got EOS from my gst pipeline

            I need to know what is rewind ? and what triggers PA to make
            these rewinds?


        As the log message says, the rewrites cause the rewinds.

            and what is "rewrite" here in terms of pulseaudio?


        It means rewriting part of the sink (hw) buffer. If that log message
        appears, it means that the client has written data to a position
        that
        requires a part of the sink's buffer to be overwritten, and thus a
        rewind is needed.

            (Just to remind you I can play the beep wav with paplay and
              pacmd
            play-file,  without any issues and without modifying the
            buffersize param.
            so I am just confused whats going here ? )


        So did you find out whether your system has David's patches that I
        referred to in my previous reply? If you did, and the patches are
        applied, then there's still something to fix in Pulseaudio's and
        Gstreamer's interaction.


    Btw, I posted an improved version of the patch a few days ago to the
    gstreamer mailinglist, and it has been committed. See
    
http://cgit.freedesktop.org/__gstreamer/gst-plugins-good/__commit/ext/pulse/pulsesink.c?__id=__e70020b45630d99132a99892ecc6e1__dcd1ce6f8a
    
<http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/ext/pulse/pulsesink.c?id=e70020b45630d99132a99892ecc6e1dcd1ce6f8a>

    Hopefully that can help.

    --
    David Henningsson, Canonical Ltd.
    http://launchpad.net/~diwic <http://launchpad.net/%7Ediwic>

    _________________________________________________
    pulseaudio-discuss mailing list
    pulseaudio-discuss@lists.__freedesktop.org
    <mailto:[email protected]>
    http://lists.freedesktop.org/__mailman/listinfo/pulseaudio-__discuss
    <http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss>




_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss



--
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to