S60 Platform: Audio Streaming Example v2.1
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
   
This updated example application demonstrates the use of Audio Streaming API, 
which provides functionality for recording audio stream into a buffer, and for 
playback of the audio buffer. The application uses CMdaAudioInputStream for 
audio input and CMdaAudioOutputStream for audio output, and the respective 
callback classes MMdaAudioInputStreamCallback and 
MMdaAudioOutputStreamCallback.Operations for playing, recording, and stopping 
the audio stream are available. The recorded audio stream can also be saved into
a file, to be played again later.
 
The Audio Streaming API is part of the Symbian Multimedia Framework (MMF).

The example package contains two audio sample files in the data directory: 
sample.aud and sample.amr. The first file uses the default PCM encoding and the 
second one is an AMR-NB encoded file. The samples were recorded using this 
application on a Nokia N90 device.
   
--------------------------------------------------------------------------------

PREREQUISITES

- Symbian OS key concepts.

--------------------------------------------------------------------------------

IMPORTANT CLASSES

CAudioStreamEngine  
    The main engine class. Handles the input and output streams 
    and implements the callback methods defined in the mixin classes 
    MMdaAudioInputStreamCallback and MMdaAudioOutputStreamCallback.
    
--------------------------------------------------------------------------------

KNOWN ISSUES

No know issues. Note, however, that after calling the MaiscBufferCopied and 
MaoscBufferCopied callback methods, the streams must be stopped outside these 
methods. The method calling flow must be cut. This is done by 'sleeping' with 
CIdle and then calling stop.

--------------------------------------------------------------------------------

RUNNING THE EXAMPLE

The operations of the application are controlled
using the actions found in the menu:

* Record

Records the incoming audio stream for a few seconds or until stopped.  

* Play 
    
Plays the audio data stored in the buffer.

*Stop 
    
Stops the recording or playback of audio data.
  
*Save 
    
Saves the audio data stored in the buffer into a file.  

*Load
    
Loads the audio data from a file into the buffer.

--------------------------------------------------------------------------------

BUILD & INSTALLATION INSTRUCTIONS

MOBILE DEVICE
-------------
    Go to /AudioStreamExample/group
    bldmake bldfiles
    Note! Ensure that the sample.aud/.amr files located in
    /AudioStreamExample/data have been copied to 
    /epoc32/winscw/c/private/e01ff1c3/ in your SDK installation directory.

    abld build gcce urel
    Go to /AudioStreamExample/sis
    Edit AudioStreamEx_s60_3rd_ed.pkg's paths to match those on your system.
    makesis AudioStreamEx_s60_3rd_ed.pkg
    
    Sign the SIS package:
    Sign the sis file (for more information about signing the sis file and 
        developer certificate, visit http://www.symbiansigned.com/):
        signsis AudioStreamEx_s60_3rd_ed.sis AudioStreamEx3rdEd.sis YourCertificate.cer 
           YourKey.key YourPassword

    Install the signed .sis file on a device.


EMULATOR
--------
    Go to /AudioStreamExample/group
    bldmake bldfiles
    Note! Ensure that the sample.aud/.amr files located in
    /AudioStreamExample/data have been copied to 
    /epoc32/winscw/c/private/e01ff1c3/ in your SDK installation directory.

    abld build wins udeb
    Start the emulator.

--------------------------------------------------------------------------------

COMPATIBILITY

S60 5th Edition
S60 3rd Edition, Feature Pack 2
S60 3rd Edition, Feature Pack 1
S60 3rd Edition

TESTED WITH: Nokia 5800 XpressMusic, Nokia 6220 Classic, Nokia N95.

Created / tested with: S60 3rd Edition SDK MR and S60 5th Edition SDK v0.9.

--------------------------------------------------------------------------------

VERSION HISTORY

2.1  Stopping of streams fixed. S60 5th Edition support checked. S60 2nd Edition
     support removed.

2.0 (June 22, 2006) Added support for S60 3rd Edition and AMR-NB encoding. 
    Changed the buffer sizes to match the requirements of S60 3rd Edition and 
    S60 2nd Edition FP2/FP3 devices.

1.0 (January 20, 2004)  First release.