summaryrefslogtreecommitdiffstats
path: root/Src/aacdec-mft/MFTDecoder.h
blob: 397702d54edef5a0c0a01942f5de830525523d55 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#pragma once
#include <mftransform.h>
#include <bfc/platform/types.h>

// generic API for use by all decoder flavors (MP4, MKV, etc)

class MFTDecoder
{
public:
	MFTDecoder();
	~MFTDecoder();
	HRESULT Open(const void *asc, size_t asc_bytes);
	HRESULT Open();
	void Flush();
	HRESULT GetOutputProperties(uint32_t *sampleRate, uint32_t *channels);
	HRESULT Feed(const void *buffer, size_t bufferBytes);
	HRESULT Decode(void *outputBuffer, size_t *outputBufferBytes, unsigned int bitsPerSample, bool useFloat, double gain);
	HRESULT OutputBlockSizeSamples(size_t *frameSize);
	bool AcceptingInput();
private:
	IMFTransform *decoder;
	IMFMediaBuffer *output_buffer;
	IMFSample *output_sample;
};