--- a/internetradio2.0/streamsourceinc/iricyflowreader.h Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,342 +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: Reads data from opened ICY session
-*
-*/
-
-
-/* ---------------------------------------------------------------------------
-* Version history:
-* Template version:
-* <ccm_history>
-*
-* Version: 2, Tue Feb 28 18:00:00 2008 by Rohit/Kranthi
-* Ref:
-* Added NetworkController instance for Byte Counter Impl
-*
-* </ccm_history>
-* ============================================================================
-*/
-
-#ifndef IR_IRICYFLOWREADER
-#define IR_IRICYFLOWREADER
-
-
-#include <e32base.h>
-#include <es_sock.h>
-
-class CIRMetaData;
-class CIRNetworkBuffer;
-class CIRStationConnection;
-class MIRStationDataObserver;
-class RSocket;
-class TChannelInfo;
-class CIRNetworkController;
-
-/**
-* This class handles reading audio and metadata from a connected
-* ICY session. It assumes that the socket is connected, the
-* ICY session has been requested and initial ICY headers have been
-* processed.
-*
-*/
-NONSHARABLE_CLASS( CIRIcyFlowReader ) : public CActive
- {
-public: // Constructors and destructors
-
- /**
- * Standard Symbian two-phase construction
- *
- * @param aSocket Socket to be read.
- * @param aOwner The owner of this CIRIcyFlowReader
- * @param aDataObserver The observer wishing to receive audio/metadata.
- * @param aChannelInfo Information describing the ICY session
- * @return Instance of CIRIcyFlowReader
- */
- static CIRIcyFlowReader* NewL( RSocket& aSocket, CIRStationConnection& aOwner,
- MIRStationDataObserver& aDataObserver,
- TChannelInfo& aChannelInfo );
-
- /**
- * Destructor
- */
- ~CIRIcyFlowReader();
-
-public:
-
- /**
- * Starts the reading from the socket
- */
- void Start();
-
- /**
- * Fills the buffer with the streamed data
- *
- * @param aInputBuffer Buffer into which audio data is to be copied
- */
- void FillBuffer(TDes8& aInputBuffer);
-
-private: // Functions from base classes
-
- /**
- * From CActive
- */
- void RunL();
-
- /**
- * From CActive
- */
- void DoCancel();
-
-private:
- /**
- * Copies the buffer to the mediaengine sink queue
- *
- * @param aData Data to copy.
- */
- void AddToSinkQueue( const TDesC8& aData );
-
- /**
- * Fills the media engine buffer with audio data upon request
- * by the media engine
- *
- * @param aInputBuffer Buffer into which audio data is to be copied
- */
- void FillMediaEngineBuffer(const TDes8& aInputBuffer);
-
- /**
- * Fills the unfilled media engine buffers with the remaining audio data
- */
- void FillRemainingBuffers();
-
- /**
- * C++ default constructor
- */
- CIRIcyFlowReader( RSocket& aSocket, CIRStationConnection& aOwner,
- MIRStationDataObserver& aDataObserver, TChannelInfo& aChannelInfo );
-
- /**
- * Second phase construction
- */
- void ConstructL();
-
-private:
-
- /**
- * The parsing states
- */
- enum TIRParsingState
- {
- EIRReadingAudioData, /**< Reading raw audio data. */
- EIRReadingMetaDataLength, /**< Reading the length of the meta data. */
- EIRReadingMetaData /**< Reading meta data. */
- };
-
- /**
- * Initiates a read from socket.
- */
- void IssueRead();
-
- /**
- * Initializes the buffers that will be used for streaming
- */
- void InitializeBuffersL();
-
- /**
- * Extracts the meta data from the stream
- */
- void ExtractMetadataL();
-
- /**
- * Handles received data.
- *
- * Can contain any amount of audio and/or meta data mixed in with it.
- *
- * @param aData Data received.
- */
- void HandleReceivedDataL( const TDesC8& aData );
-
- /**
- * Handles received audio data.
- *
- * Can only contain raw audio data.
- *
- * @param aData Data received.
- */
- void HandleReceivedAudioData( const TDesC8& aData );
-
- /**
- * Handles received meta data.
- *
- * Can only contain meta data.
- *
- * @param aData Data received.
- */
- void HandleReceivedMetaData( const TDesC8& aData );
- /**
- * Recognizes if the string is UTF-8 encoded and decodes it,
- * if required.
- *
- * @param aString The string to be decoded.
- * @return The string in Unicode/ISO-8859-1 format.
- */
- HBufC* DecodeMetadataStringLC( const TDesC8& aString ) const;
-
- /**
- * Tests whether the string is UTF-8 encoded.
- *
- * @param aString The string to be examined
- * @return ETrue, if the string is UTF-8 encoded, EFalse otherwise.
- */
- TBool IsUtf8Encoded( const TDesC8& aString ) const;
-
-private:
-
- /**
- * The pointer to buffer which holds the audio data.
- * Owned.
- */
- TUint8* iSongBuffer;
-
- /**
- * Buffer that holds the data received over the network.
- * Owned.
- */
- HBufC8* iSocketBuffer;
-
- /**
- * Buffer to contain unfinished song data.
- * Owned.
- */
- HBufC8* iTempSongBuffer;
-
- /**
- * Buffer to contain unfinished meta data.
- * Owned.
- */
- HBufC8* iTempMetaBuffer;
-
- /**
- * Current meta data information.
- * Owned.
- */
- CIRMetaData* iMetaData;
-
- /**
- * The socket that read.
- */
- RSocket& iSocket;
-
- /**
- * The owner of this object in the whole-part relation.
- */
- CIRStationConnection& iOwner;
-
- /**
- * The observer wishing to receive audio/metadata
- */
- MIRStationDataObserver& iDataObserver;
-
- /**
- * Queue of buffer which is filled
- */
- TSglQue<CIRNetworkBuffer> iSourceQ;
-
- /**
- * Queue of buffer which is empty
- */
- TSglQue<CIRNetworkBuffer> iSinkQ;
-
- /**
- * Temporary holder for network buffer.
- * Not owned.
- */
- CIRNetworkBuffer* iTempBufferHolder;
-
- /**
- * Pointer descriptor to the network data buffer.
- */
- TPtr8 iSocketBufferPtr;
-
- /**
- * Indicates the no. of bytes read from the socket
- */
- TSockXfrLength iSocketBytesRead;
-
- /**
- * Indicates that stream source ( network side ) buffering is happening.
- */
- TBool iInitialBuffering;
-
- /**
- * Indicates rebuffering is occurring
- */
- TBool iReBuffering;
-
- /**
- * Indicates no of chunks of buffers to be copied
- */
- TInt iNoOfChunks;
-
- /**
- * Indicates the number of chunks are remaining
- */
- TInt iChunksRemaining;
-
- /**
- * Length of the current meta data block in bytes.
- */
- TInt iMetaDataLength;
-
- /**
- * Pointer to buffer to be filled.
- * Not owned.
- */
- TUint8* iBufferFillPointer;
-
- /**
- * Used to give buffer fill value to progress bar
- */
- TInt iBufferCounter;
-
- /**
- * Used to determine the metadata position
- */
- TInt iAudioDataOffset;
-
- /**
- * Indicates the data parsing state.
- */
- TIRParsingState iParsingState;
-
- /**
- * Holds the channel information
- */
- TChannelInfo& iChannelInfo;
-
- /**
- * Indicates if the channel info should be published or not
- */
- TBool iPublishStationInfo;
-
- /**
- * NetworkController singleton instance
- */
- CIRNetworkController* iNetworkControllerHandle;
- };
-
-#endif // IR_IRICYFLOWREADER
-
-
-