diff --git a/celt b/celt
index bdcaaf73c62844f7971b946ae19d641e58a8afad..c7bcf389da1d5537cd66ae552f0dfe164834bd3d 160000
--- a/celt
+++ b/celt
@@ -1 +1 @@
-Subproject commit bdcaaf73c62844f7971b946ae19d641e58a8afad
+Subproject commit c7bcf389da1d5537cd66ae552f0dfe164834bd3d
diff --git a/src/hybrid_encoder.c b/src/hybrid_encoder.c
index 7644c7d441dea5a520b82011b4e3e56c735e4dbc..85201ade5146a741c26f51a94a28e993a0425438 100644
--- a/src/hybrid_encoder.c
+++ b/src/hybrid_encoder.c
@@ -65,7 +65,7 @@ HybridEncoder *hybrid_encoder_create()
     st->encControl.useInBandFEC          = 0;
     st->encControl.useDTX                = 0;
     st->encControl.complexity            = 2;
-    st->encControl.bitRate               = 20000;
+    st->encControl.bitRate               = 18000;
 
     /* Create CELT encoder */
 	/* We should not have to create a CELT mode for each encoder state */
@@ -87,6 +87,10 @@ int hybrid_encode(HybridEncoder *st, const short *pcm, int frame_size,
 	ec_byte_writeinit_buffer(&buf, data, bytes_per_packet);
 	ec_enc_init(&enc,&buf);
 
+    st->encControl.bitRate               = (bytes_per_packet*50*8+4000)/2;
+    if (st->encControl.bitRate>30000)
+    	st->encControl.bitRate = 30000;
+
 	/* Call SILK encoder for the low band */
 	silk_ret = SKP_Silk_SDK_Encode( st->silk_enc, &st->encControl, pcm, 960, &enc, &nBytes );
     if( silk_ret ) {