@@ -18,28 +18,34 @@ class ADPCMDecoder : public AudioDecoderExt {
1818 info.channels = 2 ;
1919 info.bits_per_sample = 16 ;
2020 p_decoder = adpcm_ffmpeg::ADPCMDecoderFactory::create (id);
21- p_decoder->setCodecID (id);
22- p_decoder->setBlockSize (blockSize);
21+ if (p_decoder!=nullptr ){
22+ p_decoder->setCodecID (id);
23+ p_decoder->setBlockSize (blockSize);
24+ }
2325 }
2426
2527 // defines the block size
2628 void setBlockSize (int blockSize) override {
29+ if (p_decoder==nullptr ) return ;
2730 p_decoder->setBlockSize (blockSize);
2831 }
2932
3033 // / Provides the block size (size of encoded frame) (only available after calling begin)
3134 int blockSize () {
35+ if (p_decoder==nullptr ) return 0 ;
3236 return p_decoder->blockSize ();
3337 }
3438
3539 // / Provides the frame size (size of decoded frame) (only available after calling begin)
3640 int frameSize () {
41+ if (p_decoder==nullptr ) return 0 ;
3742 return p_decoder->frameSize ()*2 ;
3843 }
3944
4045
4146 bool begin () override {
4247 TRACEI ();
48+ if (p_decoder==nullptr ) return false ;
4349 if (is_started) return true ;
4450 current_byte = 0 ;
4551 LOGI (" sample_rate: %d, channels: %d" , info.sample_rate , info.channels );
@@ -58,7 +64,8 @@ class ADPCMDecoder : public AudioDecoderExt {
5864
5965 void end () override {
6066 TRACEI ();
61- p_decoder->end ();
67+ if (p_decoder!=nullptr )
68+ p_decoder->end ();
6269 adpcm_block.resize (0 );
6370 is_started = false ;
6471 }
@@ -87,6 +94,7 @@ class ADPCMDecoder : public AudioDecoderExt {
8794 bool is_started = false ;
8895
8996 virtual bool decode (uint8_t byte) {
97+ if (p_decoder==nullptr ) return false ;
9098 adpcm_block[current_byte++] = byte;
9199
92100 if (current_byte >= block_size) {
@@ -123,22 +131,27 @@ class ADPCMEncoder : public AudioEncoderExt {
123131 info.channels = 2 ;
124132 info.bits_per_sample = 16 ;
125133 p_encoder = adpcm_ffmpeg::ADPCMEncoderFactory::create (id);
126- p_encoder->setCodecID (id);
127- p_encoder->setBlockSize (blockSize);
134+ if (p_encoder!=nullptr ){
135+ p_encoder->setCodecID (id);
136+ p_encoder->setBlockSize (blockSize);
137+ }
128138 }
129139
130140 // / Provides the block size (size of encoded frame) (only available after calling begin)
131141 int blockSize () override {
142+ if (p_encoder==nullptr ) return 0 ;
132143 return p_encoder->blockSize ();
133144 }
134145
135146 // / Provides the frame size (size of decoded frame) (only available after calling begin)
136147 int frameSize () {
148+ if (p_encoder==nullptr ) return 0 ;
137149 return p_encoder->frameSize ()*2 ;
138150 }
139151
140152 bool begin () override {
141153 TRACEI ();
154+ if (p_encoder==nullptr ) return false ;
142155 if (is_started) return true ;
143156 LOGI (" sample_rate: %d, channels: %d" , info.sample_rate , info.channels );
144157 p_encoder->begin (info.sample_rate , info.channels );
@@ -157,6 +170,7 @@ class ADPCMEncoder : public AudioEncoderExt {
157170 void end () override {
158171 TRACEI ();
159172 pcm_block.resize (0 );
173+ if (p_encoder==nullptr ) return ;
160174 p_encoder->end ();
161175 is_started = false ;
162176 }
@@ -185,6 +199,7 @@ class ADPCMEncoder : public AudioEncoderExt {
185199 int total_samples=0 ;
186200
187201 virtual bool encode (int16_t sample) {
202+ if (p_encoder==nullptr ) return false ;
188203 pcm_block[current_sample++] = sample;
189204 if (current_sample >= total_samples) {
190205 TRACED ();
0 commit comments