Skip to content

Commit 2d3b51c

Browse files
committed
CodecADPCM npe
1 parent dca6e34 commit 2d3b51c

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

src/AudioTools/AudioCodecs/CodecADPCM.h

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)