Alejandro Acuña
2024-08-12 1876e65234c20209001178705cfa50d8f9ded67a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// FixedSizeAudioBuffer.h: interface for the FixedSizeAudioBuffer class.
//
//////////////////////////////////////////////////////////////////////
 
#ifndef AFX_FIXEDSIZEAUDIOBUFFER_H__389EBF68_48E8_4B98_AF05_D42F438579C7__INCLUDED_
#define AFX_FIXEDSIZEAUDIOBUFFER_H__389EBF68_48E8_4B98_AF05_D42F438579C7__INCLUDED_
 
#include <vector>
#include "AudioTransformer.h"
 
class FixedSizeAudioBuffer : public AudioTransformer  
{
public:
    FixedSizeAudioBuffer();
    virtual ~FixedSizeAudioBuffer();
    int SetOutputDuration(int duration);    // duration in milliseconds
    virtual int TransformStarted();
    virtual int TransformStopped();
    int SetTraceLevel();
protected:
    virtual int RenderAudioSamples(std::vector<std::pair<AudioSample *, AudioSource *> > &data);
    virtual int GenerateData(AudioSample **ppAudioSample);
    virtual int TransformAudioSamples(std::vector<std::pair<AudioSample *, AudioSource *> > &data, AudioSample **ppAudioSample);
private:
    int EnqueuePacket(std::vector<std::pair<AudioSample *, AudioSource *> > &data);
private:
    int outputDuration;
    int outputSize;
    int minFrameDuration;
    int minFrameSize;
    WAVEFORMATEX audioFormat;
    bool bRunning;
    typedef std::vector<char> AUDIOBUFFER;
    AUDIOBUFFER audioBuffer;
    CRITICAL_SECTION audioBufferMutex;
};
 
#endif // !defined(AFX_FIXEDSIZEAUDIOBUFFER_H__389EBF68_48E8_4B98_AF05_D42F438579C7__INCLUDED_)