@@ -17,23 +17,24 @@ class ADPCMDecoder : public AudioDecoderExt {
1717 info.sample_rate = 44100 ;
1818 info.channels = 2 ;
1919 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);
2223 }
2324
2425 // defines the block size
2526 void setBlockSize (int blockSize) override {
26- decoder. setBlockSize (blockSize);
27+ p_decoder-> setBlockSize (blockSize);
2728 }
2829
2930 // / Provides the block size (size of encoded frame) (only available after calling begin)
3031 int blockSize () {
31- return decoder. blockSize ();
32+ return p_decoder-> blockSize ();
3233 }
3334
3435 // / Provides the frame size (size of decoded frame) (only available after calling begin)
3536 int frameSize () {
36- return decoder. frameSize ()*2 ;
37+ return p_decoder-> frameSize ()*2 ;
3738 }
3839
3940
@@ -42,12 +43,12 @@ class ADPCMDecoder : public AudioDecoderExt {
4243 if (is_started) return true ;
4344 current_byte = 0 ;
4445 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 );
4647 LOGI (" frameSize: %d" , (int )frameSize ());
4748 LOGI (" blockSize: %d" , (int )blockSize ());
48- block_size = decoder. blockSize ();
49+ block_size = p_decoder-> blockSize ();
4950 assert (block_size > 0 );
50- assert (decoder. frameSize () > 0 );
51+ assert (p_decoder-> frameSize () > 0 );
5152 adpcm_block.resize (block_size);
5253
5354 notifyAudioChange (info);
@@ -57,7 +58,7 @@ class ADPCMDecoder : public AudioDecoderExt {
5758
5859 void end () override {
5960 TRACEI ();
60- decoder. end ();
61+ p_decoder-> end ();
6162 adpcm_block.resize (0 );
6263 is_started = false ;
6364 }
@@ -78,7 +79,7 @@ class ADPCMDecoder : public AudioDecoderExt {
7879 operator bool () override { return is_started; }
7980
8081 protected:
81- adpcm_ffmpeg::ADPCMDecoder decoder ;
82+ adpcm_ffmpeg::ADPCMDecoder *p_decoder= nullptr ;
8283 Vector<uint8_t > adpcm_block;
8384 Print *p_print = nullptr ;
8485 int current_byte = 0 ;
@@ -90,7 +91,7 @@ class ADPCMDecoder : public AudioDecoderExt {
9091
9192 if (current_byte >= block_size) {
9293 TRACED ();
93- AVFrame &frame = decoder. decode (&adpcm_block[0 ], block_size);
94+ adpcm_ffmpeg:: AVFrame &frame = p_decoder-> decode (&adpcm_block[0 ], block_size);
9495 // print the result
9596 int16_t *data = (int16_t *)frame.data [0 ];
9697 size_t byte_count = frame.nb_samples * sizeof (int16_t ) * info.channels ;
@@ -111,7 +112,7 @@ class ADPCMDecoder : public AudioDecoderExt {
111112/* *
112113 * @brief Encoder for ADPCM - Depends on https://github.com/pschatzmann/adpcm
113114 * @ingroup codecs
114- * @ingroup encoder
115+ * @ingroup p_encoder->
115116 * @author Phil Schatzmann
116117 * @copyright GPLv3
117118 */
@@ -121,30 +122,31 @@ class ADPCMEncoder : public AudioEncoderExt {
121122 info.sample_rate = 44100 ;
122123 info.channels = 2 ;
123124 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);
126128 }
127129
128130 // / Provides the block size (size of encoded frame) (only available after calling begin)
129131 int blockSize () override {
130- return encoder. blockSize ();
132+ return p_encoder-> blockSize ();
131133 }
132134
133135 // / Provides the frame size (size of decoded frame) (only available after calling begin)
134136 int frameSize () {
135- return encoder. frameSize ()*2 ;
137+ return p_encoder-> frameSize ()*2 ;
136138 }
137139
138140 bool begin () override {
139141 TRACEI ();
140142 if (is_started) return true ;
141143 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 );
143145 LOGI (" frameSize: %d" , (int )frameSize ());
144146 LOGI (" blockSize: %d" , (int )blockSize ());
145147 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 ;
148150 pcm_block.resize (total_samples);
149151 current_sample = 0 ;
150152
@@ -155,7 +157,7 @@ class ADPCMEncoder : public AudioEncoderExt {
155157 void end () override {
156158 TRACEI ();
157159 pcm_block.resize (0 );
158- encoder. end ();
160+ p_encoder-> end ();
159161 is_started = false ;
160162 }
161163
@@ -175,7 +177,7 @@ class ADPCMEncoder : public AudioEncoderExt {
175177 }
176178
177179 protected:
178- adpcm_ffmpeg::ADPCMEncoder encoder ;
180+ adpcm_ffmpeg::ADPCMEncoder* p_encoder = nullptr ;
179181 Vector<int16_t > pcm_block;
180182 Print *p_print = nullptr ;
181183 bool is_started = false ;
@@ -186,7 +188,7 @@ class ADPCMEncoder : public AudioEncoderExt {
186188 pcm_block[current_sample++] = sample;
187189 if (current_sample >= total_samples) {
188190 TRACED ();
189- AVPacket &packet = encoder. encode (&pcm_block[0 ], total_samples);
191+ adpcm_ffmpeg:: AVPacket &packet = p_encoder-> encode (&pcm_block[0 ], total_samples);
190192 if (packet.size > 0 ) {
191193 size_t written = p_print->write (packet.data , packet.size );
192194 if (written != packet.size ) {
0 commit comments