aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Encoder/enc_fhgaac/FhGAACEncoder.h
blob: 6bd8fec7d444310edef331e09c79a2620aaf81a2 (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
25
26
27
28
29
#pragma once
#include "MP4Writer.h"
#include "mp4FastAAClib.h"
#include "config.h"
#include "encoder_common.h"

class FhGAACEncoder : public EncoderCommon
{
public:
	static FhGAACEncoder *CreateDecoder(const AACConfiguration *cfg, int nch, int srate, int bps);
	FhGAACEncoder(HANDLE_MPEG4ENC_ENCODER encoder, const MPEG4ENC_SETUP *setup, int nch, int srate, int bps, float *sample_buffer, unsigned int next_samples);
	~FhGAACEncoder();
	int Encode(int framepos, void *in, int in_avail, int *in_used, void *out, int out_avail); 
	void PrepareToFinish();
	void Finish(const wchar_t *filename);
private:
	HANDLE_MPEG4ENC_ENCODER encoder;
	unsigned int channels;
	unsigned int sample_rate;
	unsigned int bits_per_sample;
	unsigned int next_samples;
	unsigned int samples_per_frame;
	float *sample_buffer;
	MP4Writer mp4_writer;
	uint64_t total_samples;
	uint64_t decodable_samples;
	bool finishing;
	bool resampling;
};