📄 neostreamplayer.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 + -