amr_filter.h

来自「MONOGRAM AMR Encoder v1.0.0.0」· C头文件 代码 · 共 79 行

H
79
字号
//-----------------------------------------------------------------------------
//
//	Monogram AMR Encoder
//
//	Base on the 3GPP source codes for AMR
//
//	Author : Igor Janos
//
//-----------------------------------------------------------------------------
#pragma once


//-----------------------------------------------------------------------------
//
//	CAMREncoder
//
//-----------------------------------------------------------------------------

class CAMREncoder : 
	public CTransformFilter,
	public ISpecifyPropertyPages,
	public IMonogramAMREncoder
{
protected:

	CCritSec		lock_info;
	AMR_INFO		info;
	Resample		resample;
	void			*encoder;
	int				dtx;
	int				mode;

	// temporary buffer
	REFERENCE_TIME	rtStart;
	bool			has_start;
	int16			*resampled_samples;
	int				resampled_count;

public:

	// constructor & destructor
	CAMREncoder(LPUNKNOWN pUnk, HRESULT *phr);
	virtual ~CAMREncoder();
	static CUnknown *WINAPI CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);

	DECLARE_IUNKNOWN;
	STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);

    // ISpecifyPropertyPages interface
    STDMETHODIMP GetPages(CAUUID *pPages);

	// Pure virtual methods
	virtual HRESULT CheckInputType(const CMediaType *mtIn);
	virtual HRESULT CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut);
	virtual HRESULT DecideBufferSize(IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *pProp);
	virtual HRESULT GetMediaType(int iPosition, CMediaType *pmt);
	virtual HRESULT SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt);
	virtual HRESULT BreakConnect(PIN_DIRECTION dir);

	// iny proces transformovania samplov
	virtual HRESULT Receive(IMediaSample *pSample);
	virtual HRESULT GetDeliveryBuffer(IMediaSample **sample);
	HRESULT Encode(int16 *samples, int count);

	// filter states
    virtual HRESULT StartStreaming();
	virtual HRESULT EndFlush();

	// IMonogramAMREncoder
	STDMETHODIMP GetInfo(AMR_INFO *info);
	STDMETHODIMP GetMode(int *mode);
	STDMETHODIMP SetMode(int mode);

	// open/close encoder
	int OpenEncoder();
	int CloseEncoder();
};

⌨️ 快捷键说明

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