I would think that your approach could work, but 
perhaps you might be able to reliably figure out 
the end of the audio data.

You asked before if the audio session knows when the
end of stream is. I said the audio session doesn't 
really know. However, the audio decoder *does*. In 
the IHXAudioDecoder::Decode() call, the last argument
is a bEOF argument, which says that the input encoded
buffer is the last one available. Therefore the decoder
should be able to tell the timestamp of the last frame
audio decoded audio data it passes back to the renderer.

In your scenario, is there any way for the audio device
to retrieve this information from the decoder and then
wait for that timestamp to be written to it?

Eric

=======================================
Eric Hyche ([EMAIL PROTECTED])
Principal Engineer
RealNetworks, Inc.


>-----Original Message-----
>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
>[EMAIL PROTECTED]
>Sent: Wednesday, October 01, 2008 12:18 PM
>To: [email protected]; [EMAIL PROTECTED]
>Subject: [Audio-dev] Audio pushdown & Stream End
>
>Hello All,
>  I'm trying to evaluate an idea of pausing & resuming scheduler for local 
> playback for CPU
>optimization.
>
>As a part of this exercise, the AudioPushDown is increased (say 1 or 2 
>minutes). Scheduler will be
>paused and resumed based on the high and low water mark of unplayed data in 
>device.  AudioSession
>(client\audiosvc) does not detect  end of stream. This results in sending lot 
>of silence data to the
>device. The data is pushed to device is based on audio push down (Block 
>count). If audio push down is
>huge (say 1 min), and if the playback is close to duration ( say 50 msec to 
>end playback), the audio
>session pushes 1 min of data to device ( Mostly just silence).
>
>Given the problem, shouldn't the audio pushdown be dependent on presentation 
>duration. ?  Assumption:
>Presentation duration is greater among all stream playback.
>
>NumBlocksReqdToComplete =  (PresentationDuration - CurrTime) / Granularity
>
>If(uNumBlocksPushed > NumBlocksReqdToComplete) {
>  uNumBlocksPushed  = NumBlocksReqdToComplete;
>
>  // Add a tolerance.
>  uNumBlocksPushed  += Tolerance. (say 2 blocks, around 100 msecs) }
>
>We will not see this problem most of the time, if our audiopushdown values are 
>smaller.
>
>
>Thanks,
>Rajesh.



_______________________________________________
Audio-dev mailing list
[email protected]
http://lists.helixcommunity.org/mailman/listinfo/audio-dev

Reply via email to