Discussion Board

Results 1 to 3 of 3
  1. #1
    Registered User
    Join Date
    Nov 2004

    CMdaAudioOutputStream playout scheme

    Is there any information about the size of the MMF internal buffer used by CMdaAudioOutputStream and the playout scheme?

    I've observed that if i feed the audio device by calling WriteL(), in the MaoscBufferCopied() callback, passing a 320byte PCM descriptor a time (from my array of decsriptors containing audio data), the sequence of callback is very quick and several audio frames are taken from my array at higher rate than that of playout (that should be about 1/(20msec) ), say from 2 to 5-8 in about 20-40 msecs. After this burst, the next callbacks happens some time later but then with a new burst.CMdaAudioOutputStream seems to copy the buffers in a non costant rate, sometimes grabbing many buffers in quick succession and then not copying any for a long while.

    This clearly shows a strong buffering behaviour of the MMF.
    In my streaming audio app I'd have preferred a constant rate in emptying my buffer to make some meaningful characterization of the whole playout process.

    My measures are done by timestamping the events in an array in memory an then writing it to file at the end of the streaming process for not affecting the playing process.
    Has anyone information about this process?


  2. #2
    Registered User
    Join Date
    Jul 2003

    Re: CMdaAudioOutputStream playout scheme

    I noticed the same (although testing on P990 now, it seems to be problem of Symbian as whole). The delays between callbacks to MaoscBufferCopied are nonconstant, sometimes very lagging, sometimes at zero lagging.

    I tried to utilize CMMFDevSound hoping to get rid of some buffering, unfortunately I can't find way how to setup requested playback rate and number of channels (like I used to with CMdaAudioOutputStream::SetAudioPropertiesL).
    Any idea how can I control this with CMMFDevSound? Or is CMMFDevSound always playing at device's maximum caps?

  3. #3
    Nokia Developer Moderator
    Join Date
    Feb 2006
    Oslo, Norway

    Re: CMdaAudioOutputStream playout scheme

    Quote Originally Posted by SDK Help, WriteL
    This function is asynchronous. When aData has been received, the client is notified by a call to MMdaAudioOutputStreamCallback::MaoscBufferCopied(). The client can call WriteL() again before this notification takes place because the buffers are maintained in a client-side queue until they have been sent. An active object performs the notification, and copies the next item in the queue to the server.
    Thus the rate of callback is not really related to the actual progress of playback, and you can pass multiple descriptors without having to wait them being consumed.

Similar Threads

  1. Replies: 6
    Last Post: 2005-10-03, 05:51
  2. CMdaAudioOutputStream - WriteL function leaves with KErrInUse
    By juliand77 in forum Symbian Media (Closed)
    Replies: 1
    Last Post: 2005-02-23, 15:54
  3. Replies: 7
    Last Post: 2004-11-30, 17:36
  4. Replies: 0
    Last Post: 2004-02-27, 09:18

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts