vfs: check userland buffers before reading them.
[haiku.git] / src / add-ons / media / media-add-ons / multi_audio / Resampler.h
blob45cf2d3b5570a757a6d256aea16e9b7d996eaaa7
1 /*
2 * Copyright 2012 Jérôme Leveque
3 * Copyright 2003 Marcus Overhagen
4 * Distributed under the terms of the MIT License.
5 */
6 #ifndef _MULTI_AUDIO_RESAMPLER_H
7 #define _MULTI_AUDIO_RESAMPLER_H
10 #include <MediaDefs.h>
13 class Resampler {
14 public:
15 Resampler(uint32 sourceFormat,
16 uint32 destFormat);
18 virtual ~Resampler();
20 status_t InitCheck() const;
22 void Resample(const void *inputData,
23 uint32 inputStride, void *outputData,
24 uint32 outputStride, uint32 sampleCount);
26 protected:
27 //static functions for converting datas
28 void _Void(const void *inputData, uint32 inputStride,
29 void *outputData, uint32 outputStride,
30 uint32 sampleCount);
31 virtual void _CopyFloat2Float(const void *inputData,
32 uint32 inputStride, void *outputData,
33 uint32 outputStride, uint32 sampleCount);
34 virtual void _CopyFloat2Double(const void *inputData,
35 uint32 inputStride, void *outputData,
36 uint32 outputStride, uint32 sampleCount);
37 virtual void _CopyFloat2Short(const void *inputData,
38 uint32 inputStride, void *outputData,
39 uint32 outputStride, uint32 sampleCount);
40 virtual void _CopyFloat2Int(const void *inputData,
41 uint32 inputStride, void *outputData,
42 uint32 outputStride, uint32 sampleCount);
43 virtual void _CopyFloat2UChar(const void *inputData,
44 uint32 inputStride, void *outputData,
45 uint32 outputStride, uint32 sampleCount);
46 virtual void _CopyFloat2Char(const void *inputData,
47 uint32 inputStride, void *outputData,
48 uint32 outputStride, uint32 sampleCount);
50 virtual void _CopyDouble2Float(const void *inputData,
51 uint32 inputStride, void *outputData,
52 uint32 outputStride, uint32 sampleCount);
53 virtual void _CopyDouble2Double(const void *inputData,
54 uint32 inputStride, void *outputData,
55 uint32 outputStride, uint32 sampleCount);
56 virtual void _CopyDouble2Short(const void *inputData,
57 uint32 inputStride, void *outputData,
58 uint32 outputStride, uint32 sampleCount);
59 virtual void _CopyDouble2Int(const void *inputData,
60 uint32 inputStride, void *outputData,
61 uint32 outputStride, uint32 sampleCount);
62 virtual void _CopyDouble2UChar(const void *inputData,
63 uint32 inputStride, void *outputData,
64 uint32 outputStride, uint32 sampleCount);
65 virtual void _CopyDouble2Char(const void *inputData,
66 uint32 inputStride, void *outputData,
67 uint32 outputStride, uint32 sampleCount);
69 virtual void _CopyInt2Float(const void *inputData,
70 uint32 inputStride, void *outputData,
71 uint32 outputStride, uint32 sampleCount);
72 virtual void _CopyInt2Double(const void *inputData,
73 uint32 inputStride, void *outputData,
74 uint32 outputStride, uint32 sampleCount);
75 virtual void _CopyInt2Int(const void *inputData,
76 uint32 inputStride, void *outputData,
77 uint32 outputStride, uint32 sampleCount);
78 virtual void _CopyInt2Short(const void *inputData,
79 uint32 inputStride, void *outputData,
80 uint32 outputStride, uint32 sampleCount);
81 virtual void _CopyInt2UChar(const void *inputData,
82 uint32 inputStride, void *outputData,
83 uint32 outputStride, uint32 sampleCount);
84 virtual void _CopyInt2Char(const void *inputData,
85 uint32 inputStride, void *outputData,
86 uint32 outputStride, uint32 sampleCount);
88 virtual void _CopyShort2Float(const void *inputData,
89 uint32 inputStride, void *outputData,
90 uint32 outputStride, uint32 sampleCount);
91 virtual void _CopyShort2Double(const void *inputData,
92 uint32 inputStride, void *outputData,
93 uint32 outputStride, uint32 sampleCount);
94 virtual void _CopyShort2Int(const void *inputData,
95 uint32 inputStride, void *outputData,
96 uint32 outputStride, uint32 sampleCount);
97 virtual void _CopyShort2Short(const void *inputData,
98 uint32 inputStride, void *outputData,
99 uint32 outputStride, uint32 sampleCount);
100 virtual void _CopyShort2UChar(const void *inputData,
101 uint32 inputStride, void *outputData,
102 uint32 outputStride, uint32 sampleCount);
103 virtual void _CopyShort2Char(const void *inputData,
104 uint32 inputStride, void *outputData,
105 uint32 outputStride, uint32 sampleCount);
107 virtual void _CopyUChar2Float(const void *inputData,
108 uint32 inputStride, void *outputData,
109 uint32 outputStride, uint32 sampleCount);
110 virtual void _CopyUChar2Double(const void *inputData,
111 uint32 inputStride, void *outputData,
112 uint32 outputStride, uint32 sampleCount);
113 virtual void _CopyUChar2Short(const void *inputData,
114 uint32 inputStride, void *outputData,
115 uint32 outputStride, uint32 sampleCount);
116 virtual void _CopyUChar2Int(const void *inputData,
117 uint32 inputStride, void *outputData,
118 uint32 outputStride, uint32 sampleCount);
119 virtual void _CopyUChar2UChar(const void *inputData,
120 uint32 inputStride, void *outputData,
121 uint32 outputStride, uint32 sampleCount);
122 virtual void _CopyUChar2Char(const void *inputData,
123 uint32 inputStride, void *outputData,
124 uint32 outputStride, uint32 sampleCount);
126 virtual void _CopyChar2Float(const void *inputData,
127 uint32 inputStride, void *outputData,
128 uint32 outputStride, uint32 sampleCount);
129 virtual void _CopyChar2Double(const void *inputData,
130 uint32 inputStride, void *outputData,
131 uint32 outputStride, uint32 sampleCount);
132 virtual void _CopyChar2Short(const void *inputData,
133 uint32 inputStride, void *outputData,
134 uint32 outputStride, uint32 sampleCount);
135 virtual void _CopyChar2Int(const void *inputData,
136 uint32 inputStride, void *outputData,
137 uint32 outputStride, uint32 sampleCount);
138 virtual void _CopyChar2UChar(const void *inputData,
139 uint32 inputStride, void *outputData,
140 uint32 outputStride, uint32 sampleCount);
141 virtual void _CopyChar2Char(const void *inputData,
142 uint32 inputStride, void *outputData,
143 uint32 outputStride, uint32 sampleCount);
145 private:
146 void (Resampler::*fFunc)(const void *inputData,
147 uint32 inputStride, void *outputData,
148 uint32 outputStride, uint32 sampleCount);
152 inline void
153 Resampler::Resample(const void *inputData, uint32 inputStride,
154 void *outputData, uint32 outputStride, uint32 sampleCount)
156 (this->*fFunc)(inputData, inputStride, outputData, outputStride,
157 sampleCount);
161 #endif // _MULTI_AUDIO_RESAMPLER_H