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;
};
|