[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-audio-dev
Subject:    [Audio-dev] Buffering problem with helix under load.
From:       <ext-jussi.1.puhakka () nokia ! com>
Date:       2008-11-20 1:06:08
Message-ID: B86468F2A3D507459769DD1EDD1F6444348870 () vaebe109 ! NOE ! Nokia ! com
[Download RAW message or body]

--===============1256429456==
Content-class: urn:content-classes:message
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C94AAC.2C64792D"

This is a multi-part message in MIME format.


So I'm having this weird buffering problem.

Here is the prequel to destruction:

I'm starting streaming playback with my symbian phone, example from my own server.

Initial Buffering goes OK playback starts, because of configuration this happens \
almost instantly. (This wont happen if there is enough bandwidth, ex wlan in use)

Anyways audio is saying that it is going to underflow, helix will start accelerated \
event delivery and sets REBUFFER_WARNING on.

- Eventually CHXAudioSession::GoingToUnderflow will return TRUE because \
                nBlocksRemaining will be less than m_ulMinBlocksTobeQueuedAtStart.
- It stops accelerated event delivery. 
- HxFeedbackbufferControl Changes state to Rebuffering
- REBUFFER_REQUIRED is set to the rebufferstatus.
- AudioRenderer says StartRebuffering.

It will buffer both audio and video buffers 100% (GetPercentDone returns 100)

Now engine should change state back to play and resumeaudio, however something goes \
wrong.  Playback is never resumed, There will be no other messages from AudioRenderer \
(ex. EndBuffering etc), There will never be \
HXFeedbackBufferControl::OnBufferingDone() , it will never set m_rebufferStatus back \
to REBUFFER_NONE.

Piece of log:

[16:55:31.282] xti1:MCU_ASCII_PRINTF; channel:0xE0; \
msg:TRAN¿565155¿0512¿HXSource::IsRebufferDone() called, m_rebufferStatus = 2| \
(REBUFFER_REQUIRED) [16:55:31.282] xti1:MCU_ASCII_PRINTF; channel:0xE0; \
msg:TRAN¿565156¿0512¿Check that streams are done with rebuffering, stream 0 status: \
m_unNeeded (0) m_unAvailable (0)| (Video) [16:55:31.282] xti1:MCU_ASCII_PRINTF; \
channel:0xE0; msg:TRAN¿565156¿0512¿Check that streams are done with rebuffering, \
stream 1 status: m_unNeeded (1) m_unAvailable (0)| (Audio) [16:55:31.282] \
xti1:MCU_ASCII_PRINTF; channel:0xE0; msg:BUFF¿565157¿0512¿HXNetSource::IsRebufferDone \
= FALSE [16:55:31.297] xti1:MCU_ASCII_PRINTF; channel:0xE0; \
msg:BUFF¿565158¿0512¿HXNetSource::GetStatus, status at exit: m_rebufferStatus 2, \
statusCode 4, uStatusCode 2, m_uLastStatusCode 2| [16:55:31.360] \
xti1:MCU_ASCII_PRINTF; channel:0xE0; \
msg:CORE¿565236¿0512¿HXBufferingState[video/MP4V-ES-0x16aa058]::GetPercentDone() \
return 100| [16:55:31.375] xti1:MCU_ASCII_PRINTF; channel:0xE0; \
msg:CORE¿565237¿0512¿HXBufferingState[audio/AMR-WB-0x16aa360]::GetPercentDone() \
return 100|

It loops above until timeout.

Any idea what could cause the problem? I Think that for some reason audio side is not \
reporting that buffering is complete, and thats why engine stays in indefinite \
buffering mode..  What could cause above? but i'm 100% sure that what ever it is, it \
is because of audio side. 

Best Regards,
Jussi


[Attachment #3 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7653.3">
<TITLE>Buffering problem with helix under load.</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">So I'm having this weird buffering \
problem.</FONT></SPAN> </P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Here is the prequel to \
destruction:</FONT></SPAN> </P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">I'm starting streaming playback with my \
symbian phone, example from my own server.</FONT></SPAN> </P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Initial Buffering goes OK playback \
starts, because of configuration this happens almost instantly. (This wont happen if \
there is enough bandwidth, ex wlan in use)</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Anyways audio is saying that it is going \
to underflow, helix will start accelerated event delivery and sets REBUFFER_WARNING \
on.</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">- Eventually \
CHXAudioSession::GoingToUnderflow will return TRUE because nBlocksRemaining will be \
less than m_ulMinBlocksTobeQueuedAtStart.</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">- It stops accelerated event delivery. \
</FONT></SPAN>

<BR><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">- HxFeedbackbufferControl Changes state \
to Rebuffering</FONT></SPAN>

<BR><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">- REBUFFER_REQUIRED is set to the \
rebufferstatus.</FONT></SPAN>

<BR><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">- AudioRenderer says \
StartRebuffering.</FONT></SPAN> </P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">It will buffer both audio and video \
buffers 100% (GetPercentDone returns 100)</FONT></SPAN> </P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Now engine should change state back to \
play and resumeaudio, however something goes wrong. </FONT></SPAN>

<BR><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Playback is never resumed, There will \
be no other messages from AudioRenderer (ex. EndBuffering etc), There will never be \
HXFeedbackBufferControl::OnBufferingDone() , it will never set m_rebufferStatus back \
to REBUFFER_NONE.</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Piece of log:</FONT></SPAN>
</P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">[16:55:31.282] xti1:MCU_ASCII_PRINTF; \
channel:0xE0; msg:TRAN¿565155¿0512¿HXSource::IsRebufferDone() called, \
m_rebufferStatus = 2| (REBUFFER_REQUIRED)</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">[16:55:31.282] xti1:MCU_ASCII_PRINTF; \
channel:0xE0; msg:TRAN¿565156¿0512¿Check that streams are done with rebuffering, \
stream 0 status: m_unNeeded (0) m_unAvailable (0)| (Video)</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">[16:55:31.282] xti1:MCU_ASCII_PRINTF; \
channel:0xE0; msg:TRAN¿565156¿0512¿Check that streams are done with rebuffering, \
stream 1 status: m_unNeeded (1) m_unAvailable (0)| (Audio)</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">[16:55:31.282] xti1:MCU_ASCII_PRINTF; \
channel:0xE0; msg:BUFF¿565157¿0512¿HXNetSource::IsRebufferDone = FALSE</FONT></SPAN>

<BR><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">[16:55:31.297] xti1:MCU_ASCII_PRINTF; \
channel:0xE0; msg:BUFF¿565158¿0512¿HXNetSource::GetStatus, status at exit: \
m_rebufferStatus 2, statusCode 4, uStatusCode 2, m_uLastStatusCode \
2|</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">[16:55:31.360] xti1:MCU_ASCII_PRINTF; \
channel:0xE0; msg:CORE¿565236¿0512¿HXBufferingState[video/MP4V-ES-0x16aa058]::GetPercentDone() \
return 100|</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">[16:55:31.375] xti1:MCU_ASCII_PRINTF; \
channel:0xE0; msg:CORE¿565237¿0512¿HXBufferingState[audio/AMR-WB-0x16aa360]::GetPercentDone() \
return 100|</FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">It loops above until \
timeout.</FONT></SPAN> </P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Any idea what could cause the problem? I \
Think that for some reason audio side is not reporting that buffering is complete, \
and thats why engine stays in indefinite buffering mode.. </FONT></SPAN></P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">What could cause above? but i'm 100% \
sure that what ever it is, it is because of audio side. </FONT></SPAN> </P>

<P><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Best Regards,</FONT></SPAN>

<BR><SPAN LANG="fi"><FONT SIZE=2 FACE="Arial">Jussi</FONT></SPAN>
</P>
<BR>
<BR>

</BODY>
</HTML>



_______________________________________________
Audio-dev mailing list
Audio-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/audio-dev

--===============1256429456==--


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic