aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_mp4/AudioSample.h
blob: df483b268ab78497927483865f5a797ae6b11380 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#ifndef NULLSOFT_IN_MP4_AUDIOSAMPLE_H
#define NULLSOFT_IN_MP4_AUDIOSAMPLE_H

#include "main.h"

class AudioSample
{
public:
	AudioSample(size_t maxInput, size_t maxOutput)
	{
		input = (unsigned __int8 *)calloc(maxInput, sizeof(unsigned __int8));
		inputSize = maxInput;

		output = (__int8 *)calloc(maxOutput, sizeof(__int8));
		outputSize = maxOutput;

		inputValid = outputValid = result = sampleRate = numChannels =
		bitsPerSample = bitrate = sampleId = timestamp = duration = offset = 0;
		outputCursor = 0;
	}
	~AudioSample()
	{
		free(output);
		free(input);
	}
	bool OK()
	{
		return input && output;
	}
	// input
	unsigned __int8 *input;
	size_t inputSize, inputValid;
	MP4SampleId sampleId;

	// output
	__int8 *output, *outputCursor;
	size_t outputSize, outputValid;
	MP4Duration duration, offset, timestamp;
	int result;
	unsigned int sampleRate, numChannels, bitsPerSample;
	unsigned int bitrate;
};

class VideoSample
{
public:
	VideoSample(size_t maxInput) 
	{
		input = (unsigned __int8 *)calloc(maxInput, sizeof(unsigned __int8));
		inputSize = maxInput;
		timestamp = inputValid = 0;
	}
	~VideoSample()
	{
		free(input);
	}
	bool OK()
	{
		return !!input;
	}
	// input
	unsigned __int8 *input;
	size_t inputSize, inputValid;

	MP4Timestamp timestamp;
};

class DecodedVideoSample
{
public:
	~DecodedVideoSample()
	{
		decoder->FreePicture(output,decoder_data);
	}
	void *output;
	void *decoder_data;
	MP4VideoDecoder *decoder;
	MP4Timestamp timestamp;
};
#endif