⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 neostreamplayer.h

📁 symbian下的FLV播放视频源码 可以快速便捷的播放FLV格式的视频
💻 H
字号:
/*
============================================================================
 Name        : NeoStreamPlayer.h
 Author      : 
 Version     :
 Copyright   : Your copyright notice
 Description : CNeoStreamPlayer declaration
============================================================================
*/

#ifndef NeoStreamPlayer_H
#define NeoStreamPlayer_H

// INCLUDES
#include <e32std.h>
#include <e32base.h>
#include <MdaAudioOutputStream.h>
#include <MdaAudioSamplePlayer.h>
#include <Mda\Common\Audio.h>
#include <mmf\server\mmfcodec.h>
#include <mmf\server\mmfdatabuffer.h>
#include <mmf\plugin\mmfCodecImplementationUIDs.hrh>

#include "NeoStreamBufferManager.h"

#define MAX_PCM_BUFFER_COUNT 10

#define SRC_SIZE 2048

#define FRAME_SIZE 5120

// CLASS DECLARATION

/**
*  Frame info structure.
*/
class TAudioFrameInfo
    {
	public:
		TInt iMode;            // encoding mode
		TInt iBitRate;         // bitrate (bit/s)
		TInt iSamplingRate;    // sampling frequency (Hz)
		TInt iChannels;        // number of channels
		TInt iFrameSize;       // encoded size (bytes)
		TInt iFrameSamples;    // decoded size (samples per channel)

		TInt iSamplingRateOut; // sampling frequency after conversion (Hz)
		TInt iChannelsOut;     // number of audio channels after conversion (1 or 2)
		TInt iFrameSamplesOut; // decoded size after conversion (samples per channel)
		TInt iPadding;         // padding flag (TRUE or FALSE, TRUE if p slot exists)
		TInt iId;              // id of algorithm (1 MPEG-1, 0 MPEG-2)
    };
    
/**
*  CNeoStreamPlayer
* 
*/
class CNeoStreamPlayer : public MMdaAudioOutputStreamCallback, public MNeoStreamBufferManager
{
public: // Constructors and destructor

	/**
        * Destructor.
        */
	virtual ~CNeoStreamPlayer();

        /**
        * Two-phased constructor.
        */
	static CNeoStreamPlayer* NewL();

        /**
        * Two-phased constructor.
        */
	static CNeoStreamPlayer* NewLC();

private:

	/**
        * Constructor for performing 1st stage construction
        */
	CNeoStreamPlayer();

	/**
        * EPOC default constructor for performing 2nd stage construction
        */
	void ConstructL();
	
protected:

	void MaoscOpenComplete(TInt aError);
	void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer);
	void MaoscPlayComplete(TInt aError);
	
private:

	CMdaAudioOutputStream*	iAudioOutputStream;
	
public:

	TMdaAudioDataSettings iStreamSettings;
	
	void InitStreamPlayer(TInt32 aChannels, TInt32 aSampleRate, TInt aFrameSize);
	
	static TInt GetMp3FrameInfo(const TUint8* aBuf, TInt aBufLen, TAudioFrameInfo& aInfo );
	
private:
	TUint iFrameSize;
	
	TUint iBufferLumpSize;
	TUint8* iBufferLump;
	TInt iBufferSize;
	
	RArray<TPtr8> iBuffersArray;

	TBool iBufferValid[MAX_PCM_BUFFER_COUNT];
	
	TInt iVolume;

public:
	void WriteBuffer(const signed short* aBuffer, TInt aLength);
	void WriteBufferMP3(const unsigned char* aBuffer, TInt aLength);
	
	void RefreshVolume();
	void IncreaseVolume();
	void DecreaseVolume();
	
	void Stop();
	
	TInt GetBytes();
	
	TInt Volume() { return iVolume; }
	
private:

	TBool iOpened;
	
private:

	CMMFCodec*	iMMFCodec;
	CMMFDescriptorBuffer* iSrcBuf;
	CMMFDescriptorBuffer* iDstBuf;


};

#endif // NeoStreamPlayer_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -