@@ -17,23 +17,24 @@ class ADPCMDecoder : public AudioDecoderExt {
17
17
info.sample_rate = 44100 ;
18
18
info.channels = 2 ;
19
19
info.bits_per_sample = 16 ;
20
- decoder.setCodecID (id);
21
- decoder.setBlockSize (blockSize);
20
+ p_decoder = adpcm_ffmpeg::ADPCMDecoderFactory::create (id);
21
+ p_decoder->setCodecID (id);
22
+ p_decoder->setBlockSize (blockSize);
22
23
}
23
24
24
25
// defines the block size
25
26
void setBlockSize (int blockSize) override {
26
- decoder. setBlockSize (blockSize);
27
+ p_decoder-> setBlockSize (blockSize);
27
28
}
28
29
29
30
// / Provides the block size (size of encoded frame) (only available after calling begin)
30
31
int blockSize () {
31
- return decoder. blockSize ();
32
+ return p_decoder-> blockSize ();
32
33
}
33
34
34
35
// / Provides the frame size (size of decoded frame) (only available after calling begin)
35
36
int frameSize () {
36
- return decoder. frameSize ()*2 ;
37
+ return p_decoder-> frameSize ()*2 ;
37
38
}
38
39
39
40
@@ -42,12 +43,12 @@ class ADPCMDecoder : public AudioDecoderExt {
42
43
if (is_started) return true ;
43
44
current_byte = 0 ;
44
45
LOGI (" sample_rate: %d, channels: %d" , info.sample_rate , info.channels );
45
- decoder. begin (info.sample_rate , info.channels );
46
+ p_decoder-> begin (info.sample_rate , info.channels );
46
47
LOGI (" frameSize: %d" , (int )frameSize ());
47
48
LOGI (" blockSize: %d" , (int )blockSize ());
48
- block_size = decoder. blockSize ();
49
+ block_size = p_decoder-> blockSize ();
49
50
assert (block_size > 0 );
50
- assert (decoder. frameSize () > 0 );
51
+ assert (p_decoder-> frameSize () > 0 );
51
52
adpcm_block.resize (block_size);
52
53
53
54
notifyAudioChange (info);
@@ -57,7 +58,7 @@ class ADPCMDecoder : public AudioDecoderExt {
57
58
58
59
void end () override {
59
60
TRACEI ();
60
- decoder. end ();
61
+ p_decoder-> end ();
61
62
adpcm_block.resize (0 );
62
63
is_started = false ;
63
64
}
@@ -78,7 +79,7 @@ class ADPCMDecoder : public AudioDecoderExt {
78
79
operator bool () override { return is_started; }
79
80
80
81
protected:
81
- adpcm_ffmpeg::ADPCMDecoder decoder ;
82
+ adpcm_ffmpeg::ADPCMDecoder *p_decoder= nullptr ;
82
83
Vector<uint8_t > adpcm_block;
83
84
Print *p_print = nullptr ;
84
85
int current_byte = 0 ;
@@ -90,7 +91,7 @@ class ADPCMDecoder : public AudioDecoderExt {
90
91
91
92
if (current_byte >= block_size) {
92
93
TRACED ();
93
- AVFrame &frame = decoder. decode (&adpcm_block[0 ], block_size);
94
+ adpcm_ffmpeg:: AVFrame &frame = p_decoder-> decode (&adpcm_block[0 ], block_size);
94
95
// print the result
95
96
int16_t *data = (int16_t *)frame.data [0 ];
96
97
size_t byte_count = frame.nb_samples * sizeof (int16_t ) * info.channels ;
@@ -111,7 +112,7 @@ class ADPCMDecoder : public AudioDecoderExt {
111
112
/* *
112
113
* @brief Encoder for ADPCM - Depends on https://github.com/pschatzmann/adpcm
113
114
* @ingroup codecs
114
- * @ingroup encoder
115
+ * @ingroup p_encoder->
115
116
* @author Phil Schatzmann
116
117
* @copyright GPLv3
117
118
*/
@@ -121,30 +122,31 @@ class ADPCMEncoder : public AudioEncoderExt {
121
122
info.sample_rate = 44100 ;
122
123
info.channels = 2 ;
123
124
info.bits_per_sample = 16 ;
124
- encoder.setCodecID (id);
125
- encoder.setBlockSize (blockSize);
125
+ p_encoder = adpcm_ffmpeg::ADPCMEncoderFactory::create (id);
126
+ p_encoder->setCodecID (id);
127
+ p_encoder->setBlockSize (blockSize);
126
128
}
127
129
128
130
// / Provides the block size (size of encoded frame) (only available after calling begin)
129
131
int blockSize () override {
130
- return encoder. blockSize ();
132
+ return p_encoder-> blockSize ();
131
133
}
132
134
133
135
// / Provides the frame size (size of decoded frame) (only available after calling begin)
134
136
int frameSize () {
135
- return encoder. frameSize ()*2 ;
137
+ return p_encoder-> frameSize ()*2 ;
136
138
}
137
139
138
140
bool begin () override {
139
141
TRACEI ();
140
142
if (is_started) return true ;
141
143
LOGI (" sample_rate: %d, channels: %d" , info.sample_rate , info.channels );
142
- encoder. begin (info.sample_rate , info.channels );
144
+ p_encoder-> begin (info.sample_rate , info.channels );
143
145
LOGI (" frameSize: %d" , (int )frameSize ());
144
146
LOGI (" blockSize: %d" , (int )blockSize ());
145
147
assert (info.sample_rate != 0 );
146
- assert (encoder. frameSize () != 0 );
147
- total_samples = encoder. frameSize ()*info.channels ;
148
+ assert (p_encoder-> frameSize () != 0 );
149
+ total_samples = p_encoder-> frameSize ()*info.channels ;
148
150
pcm_block.resize (total_samples);
149
151
current_sample = 0 ;
150
152
@@ -155,7 +157,7 @@ class ADPCMEncoder : public AudioEncoderExt {
155
157
void end () override {
156
158
TRACEI ();
157
159
pcm_block.resize (0 );
158
- encoder. end ();
160
+ p_encoder-> end ();
159
161
is_started = false ;
160
162
}
161
163
@@ -175,7 +177,7 @@ class ADPCMEncoder : public AudioEncoderExt {
175
177
}
176
178
177
179
protected:
178
- adpcm_ffmpeg::ADPCMEncoder encoder ;
180
+ adpcm_ffmpeg::ADPCMEncoder* p_encoder = nullptr ;
179
181
Vector<int16_t > pcm_block;
180
182
Print *p_print = nullptr ;
181
183
bool is_started = false ;
@@ -186,7 +188,7 @@ class ADPCMEncoder : public AudioEncoderExt {
186
188
pcm_block[current_sample++] = sample;
187
189
if (current_sample >= total_samples) {
188
190
TRACED ();
189
- AVPacket &packet = encoder. encode (&pcm_block[0 ], total_samples);
191
+ adpcm_ffmpeg:: AVPacket &packet = p_encoder-> encode (&pcm_block[0 ], total_samples);
190
192
if (packet.size > 0 ) {
191
193
size_t written = p_print->write (packet.data , packet.size );
192
194
if (written != packet.size ) {
0 commit comments