]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update code in mod_celt to match API of 0.10.0
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 24 Jan 2011 15:49:27 +0000 (09:49 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 24 Jan 2011 15:49:27 +0000 (09:49 -0600)
src/mod/codecs/mod_celt/mod_celt.c

index 37983f3683981281d30e72e067f376657557d264..8d36b6af120d7e89df7227ce70a8d134b5e7c8b3 100644 (file)
@@ -53,8 +53,8 @@ static switch_status_t switch_celt_init(switch_codec_t *codec, switch_codec_flag
                return SWITCH_STATUS_FALSE;
        }
 
-       context->mode_object = celt_mode_create(codec->implementation->actual_samples_per_second, codec->implementation->samples_per_packet, NULL);
-
+       context->frame_size = codec->implementation->samples_per_packet;
+       context->mode_object = celt_mode_create(codec->implementation->actual_samples_per_second, context->frame_size, NULL);
        context->bytes_per_packet = (codec->implementation->bits_per_second * context->frame_size / codec->implementation->actual_samples_per_second + 4) / 8;
 
        /*
@@ -106,15 +106,22 @@ static switch_status_t switch_celt_encode(switch_codec_t *codec,
                                                                                  unsigned int *flag)
 {
        struct celt_context *context = codec->private_info;
+       int bytes = 0;
 
        if (!context) {
                return SWITCH_STATUS_FALSE;
        }
 
-       *encoded_data_len = (uint32_t) celt_encode(context->encoder_object, (void *) decoded_data, codec->implementation->samples_per_packet,
-                                                                                          (unsigned char *) encoded_data, context->bytes_per_packet);
+       bytes = (uint32_t) celt_encode(context->encoder_object, (void *) decoded_data, codec->implementation->samples_per_packet,
+                                                                  (unsigned char *) encoded_data, context->bytes_per_packet);
 
-       return SWITCH_STATUS_SUCCESS;
+       if (bytes > 0) {
+               *encoded_data_len = (uint32_t) bytes;
+               return SWITCH_STATUS_SUCCESS;
+       }
+
+       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Encoder Error!\n");
+       return SWITCH_STATUS_GENERR;
 }
 
 static switch_status_t switch_celt_decode(switch_codec_t *codec,
@@ -152,23 +159,6 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_celt_load)
 
        SWITCH_ADD_CODEC(codec_interface, "CELT ultra-low delay");
 
-       switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO,    /* enumeration defining the type of the codec */
-                                                                                114,   /* the IANA code number */
-                                                                                "CELT",        /* the IANA code name */
-                                                                                NULL,  /* default fmtp to send (can be overridden by the init function) */
-                                                                                32000, /* samples transferred per second */
-                                                                                32000, /* actual samples transferred per second */
-                                                                                32000, /* bits transferred per second */
-                                                                                10000, /* number of microseconds per frame */
-                                                                                320,   /* number of samples per frame */
-                                                                                640,   /* number of bytes per frame decompressed */
-                                                                                0,     /* number of bytes per frame compressed */
-                                                                                1,     /* number of channels represented */
-                                                                                1,     /* number of frames per network packet */
-                                                                                switch_celt_init,      /* function to initialize a codec handle using this implementation */
-                                                                                switch_celt_encode,    /* function to encode raw data into encoded data */
-                                                                                switch_celt_decode,    /* function to decode encoded data into raw data */
-                                                                                switch_celt_destroy);  /* deinitalize a codec handle using this implementation */
        ms_per_frame = 2000;
        samples_per_frame = 96;
        bytes_per_frame = 192;