internetradio2.0/streamsourceinc/iricyflowreader.h
changeset 14 896e9dbc5f19
parent 12 608f67c22514
child 15 065198191975
--- 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
-
-
-