@@ -105,7 +105,7 @@ class OggContainerDecoder : public AudioDecoder {
105
105
106
106
virtual size_t write (const void *in_ptr, size_t in_size) override {
107
107
LOGD (" write: %d" , (int )in_size);
108
- if (p_print == nullptr ) return 0 ;
108
+ if (p_print == nullptr || in_ptr== nullptr ) return 0 ;
109
109
110
110
// fill buffer
111
111
size_t size_consumed = buffer.writeArray ((uint8_t *)in_ptr, in_size);
@@ -138,8 +138,8 @@ class OggContainerDecoder : public AudioDecoder {
138
138
OggContainerDecoder *self = (OggContainerDecoder *)user_handle;
139
139
int len = self->buffer .readArray ((uint8_t *)buf, n);
140
140
self->pos += len;
141
+ // self->p_print->write((uint8_t *)buf, n);
141
142
return len;
142
- // return self->p_print->write((uint8_t *)buf, n);
143
143
}
144
144
145
145
// Process full packet
@@ -236,13 +236,15 @@ class OggContainerEncoder : public AudioEncoder {
236
236
virtual void setAudioInfo (AudioInfo from) override { cfg = from; }
237
237
238
238
virtual void begin (AudioInfo from) {
239
- setAudioInfo (cfg );
239
+ setAudioInfo (from );
240
240
begin ();
241
241
}
242
242
243
243
// / starts the processing using the actual AudioInfo
244
244
virtual void begin () override {
245
245
TRACED ();
246
+ assert (cfg.channels !=0 );
247
+ assert (cfg.sample_rate !=0 );
246
248
is_open = true ;
247
249
codec_buffer.begin ();
248
250
if (p_oggz == nullptr ) {
@@ -277,14 +279,14 @@ class OggContainerEncoder : public AudioEncoder {
277
279
278
280
// / Writes raw data to be encoded and packaged
279
281
virtual size_t write (const void *in_ptr, size_t in_size) override {
280
- if (!is_open || p_print == nullptr ) return 0 ;
281
- LOGD (" write: %d" , (int ) in_size);
282
+ if (!is_open || p_print == nullptr || in_ptr== nullptr ) return 0 ;
283
+ LOGD (" OggContainerEncoder:: write: %d" , (int ) in_size);
282
284
283
285
if (p_codec!=nullptr ){
284
286
// encode the data
285
287
size_t eff = p_encoded_audio_stream->write ((uint8_t *)in_ptr, in_size);
286
288
if (eff!=in_size){
287
- LOGE (" Write overflow" );
289
+ LOGE (" Write overflow req:%d eff:%d " , in_size, eff );
288
290
}
289
291
// get the result from the buffer
290
292
void *encoded_data = buffer.address ();
@@ -338,7 +340,7 @@ class OggContainerEncoder : public AudioEncoder {
338
340
virtual bool writePacket (ogg_packet &op, int flag = 0 ) {
339
341
LOGD (" writePacket: %d" , (int ) op.bytes );
340
342
long result = oggz_write_feed (p_oggz, &op, serialno, flag, NULL );
341
- if (result < 0 ) {
343
+ if (result < 0 && result!=OGGZ_ERR_OUT_OF_MEMORY ) {
342
344
LOGE (" oggz_write_feed: %d" , (int ) result);
343
345
return false ;
344
346
}
0 commit comments