diff -r 608f67c22514 -r 896e9dbc5f19 internetradio2.0/mediaengineinc/iraacplayer.h --- a/internetradio2.0/mediaengineinc/iraacplayer.h Tue Jul 06 14:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,320 +0,0 @@ -/* -* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - -#ifndef IRAACPLAYER_H -#define IRAACPLAYER_H - -#include -#include - -#include "ircontrolparams.h" -#include "irmediaenginedef.h" -#include "irmediaengineinterface.h" - -class CIRBufferContainer; - -//========================================class declaration CIRAACPlayer============================================ - -/** - * This class is the implementation of AAC/AAC+ format.This forms a part of - * media engine which is implemented as an ECom plugin. The interface class - * is irmediaengineinterface.h The mime type of mp3 is used to load this - * plugin mimetype : audio/aac or audio/accp This is to be passed as the - * default data while creation of player - * - * @code - * - * //mimetype is buffer with audio/aac or audio/aacp as data - * iPlayer = CIRMediaEngineInterface::NewL(mimetype); - * - * TConfig config; - * config.iVolume = xxxxxx; //some integer value between 0 and Maximum Volume - * TUint8* buffer; //is a buffer of size [KINPUT_BUFFER_SIZE] as defined in IRMediaEngineBuffer.h - * //this is should have filled buffer when you call Intialize - * CIRCtrlCmdObserver* aChannel; //command channel dll's instant - * TInt volume; - * iPlayer->Intialize(config,buffer,channel); - * iPlayer->Play();//to play - * iPlayer->Stop();//to stop - * iPlayer->SetVolume(volume);//set the volume - * iPlayer->Volume;// returns current volume - * iPlayer->MaxVolume();//return maximum volume - * iPlayer->StopPlayerBuffering();//stop buffering if required - * iPlayer->StartPlayerBuffering();//start buffering (incase if stop you can restart with this method) - * iPlayer->BufferFilled(); //should be called when the buffer given by player is return - * //this will mark the buffer as filled - * - * @endcode - * - */ - -NONSHARABLE_CLASS(CIRAACPlayer) : public CIRMediaEngineInterface, - public MMdaAudioOutputStreamCallback - { -public: - //Member Functions - /** - * Function : NewL - * function to return an instance of CIRAACPlayer - * Two phase constructor - * @return instance of CIRAACPlayer - */ - static CIRAACPlayer* NewL(); - - /** - * Function : NewLC - * function to creates an instance of CIRAACPlayer - * Two phase constructor - * @return instance of CIRAACPlayer - */ - static CIRAACPlayer* NewLC(); - - /** - * Function : ~CIRAACPlayer - * Default Destructor - */ - ~CIRAACPlayer(); - - //Function which control the play - - /** - * Function : Play - * function to which intiates the playing - */ - void Play(); - - /** - * Function : Stop - * function to stop the player - */ - void Stop(); - - //Function to control the volume - - /** - * Function : SetVolume - * function to set the volume, integer level of volume is the input - * @param integer level of volume is the input - */ - void SetVolume(TInt aVolume); - - /** - * Function : MaxVolume - * function to returns the maximum volume , integer value is the Output - * @return integer value is the Output - */ - TInt MaxVolume() const; - - /** - * Function : Volume - * function to returns the volume, integer level of voume is the Output - * @return integer value is the Output - */ - TInt Volume() const; - - /** - * Function: Intialize - * Set the codec type and sampling rate channel of stream - * This is set to initial settings which is required to start the player - * @param configuration infomation - * @param instance of data buffer, whose size is defined in IRMediaEngineBuffer.h - * @param instance of the channel through with information is sent to UI - */ - void Intialize(TConfig& aConfig,TUint8* aInitParams, - CIRCtrlCmdObserver* aChannel); - - /** - * Function: StopPlayerBuffering - * Function is used to freeze bufferring - */ - void StopPlayerBuffering(); - - /** - * Function: BufferFilled - * Function which is called when network gets the buffer filled with data - */ - void BufferFilled(); - - /** - * Function: GetAudioPlayer - * Function which is called To return the Current Audio Player - */ - CMdaAudioOutputStream* GetAudioPlayer(); - -private: - /** - * Function: CIRAACPlayer - * This function is the default constructor - */ - CIRAACPlayer(); - - /** - * Function: ConstructL - * Two phase constructor is used to intialize data members - */ - void ConstructL(); - - /** - * Function: CreatebufferL - * Create the buffers and allocates address for each buffers - * keeps them in buffer queue - */ - void CreateBufferL(); - - /** - * Function: ReCreateBufferL - * Function is used to recreate the buffer - */ - void ReCreateBufferL(); - - //Call back functions from MMdaAudioOutputStreamCallback - - /** - * Function: MaoscBufferCopied - * call back to implement for using CMdaAudioOutputStream - * Call as callback from the CMdaAudioOutputStream::WriteL - * after frame work copies the stream to buffer - * @param Error - * @param reference to buffer - */ - void MaoscBufferCopied(TInt aError, const TDesC8 &aBuffer); - - /** - * Function: MaoscPlayComplete - * call back to implement for using CMdaAudioOutputStream - * Call as callback from the CMdaAudioOutputStream::WriteL - * after play is completed - * @param aError - */ - void MaoscPlayComplete(TInt aError); - - /** - * Function: MaoscOpenComplete - * call back to implement for using CMdaAudioOutputStream - * Call as callback from the CMdaAudioOutputStream::Open - * @param aError - */ - void MaoscOpenComplete(TInt aError); - - /** - * Function: GetAACAudioProperties - * extract all the information to start the play from the stream - */ - void GetAACAudioProperties(); - - /** - * Function: DoFindnDecodeAACHeader - * Function return a non modifiable pointer descriptor of data buffer - */ - void DoFindnDecodeAACHeaderL(); - - /** - * Function: ReArrangeBuffer - * Function rearranges the buffer, and should be called after finding the header - * from the address of buffers specified, the data buffers are kept in sink queue and - * remaining buffers are discarded that is put into source queue. - * - * @param address of starting of header - */ - void ReArrangeBufferL(TUint8* aInput); - - - //data members - -private: - //Enum for Play State - enum TState - { - ENotReady, //Not ready to play - EReadyToPlay, //Ready to play - EPlaying //Playing - }; - - // Player state - TState iState; - - //For implement Player functionalities - - //player utility - CMdaAudioOutputStream* iAudioPlayer; - - //Temporary holder for buffer container - CIRBufferContainer* iTempBufferHolder; - - //Holds the address of data buffer which is to be played - TUint8* iTempbuffer; - - //This represents a large input buffer which takes the input - TUint8* iInputBufferPtr; - - //Instance of channel through with data is sent UI - CIRCtrlCmdObserver* iChannel; - - //Setting for sampling rate, channel - TMdaAudioDataSettings iSettings; - - //FourCC representation of the codec - TFourCC iDataType; - - //hold the configuration information - TConfig iConfig; - - //Hold the pointer to the buffer to be filled - TPtr8 iInputBuffer; - - //Contains Data to be played - TPtr8 iInput; - - //Queue of buffer which is filled - TSglQue iSourceBufferQ; - - //Queue of buffer which is empty - TSglQue iSinkBufferQ; - - //Holds the audio format data - TAudioFormatData iAudioInfo; - - //Holds the percentage of data in the buffer - TInt iBufferPercentage; - - // For First time play - TBool iFirstTime; - - //checks whether header is found or not - TBool iHeaderFound; - - //this bool indicates buffering is taking place initially or rebuffering - //mainly to intial parameter like volume during rebuffering - TBool iNeedReBuffering; - - //Indicates that it is a new player - TBool iNewPlayer; - - //This is used to StopPlayerBuffering - TBool iStopPlayerBuffering; - - //This is used to stop buffering if its rebuffering, set if stop function is called - //and reset when play function is called - TBool iStopState; - - //skips sending the error code during stop if stop internally - //is during play called - TBool iSkipPlayCompleted; - }; - -#endif //IRAACPLAYER_H