summaryrefslogtreecommitdiff
path: root/silk/enc_API.c
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2011-10-04 20:20:13 -0400
committerJean-Marc Valin <jmvalin@jmvalin.ca>2011-10-04 20:20:13 -0400
commit32d5c2d6d4f7ea22a2e59649e6f26c376d9dfbe0 (patch)
tree240d61e97e49657d4d969070e7ea63b0282c188f /silk/enc_API.c
parentfd17eabc2830946c0358f48480c63e3009822b24 (diff)
downloadopus-32d5c2d6d4f7ea22a2e59649e6f26c376d9dfbe0.tar.gz
Disabling LBRR for whever there's a change in bandwidth/channels/framesize
Diffstat (limited to 'silk/enc_API.c')
-rw-r--r--silk/enc_API.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/silk/enc_API.c b/silk/enc_API.c
index 8251f018..3fa2715d 100644
--- a/silk/enc_API.c
+++ b/silk/enc_API.c
@@ -177,6 +177,7 @@ opus_int silk_Encode(
opus_int32 TargetRate_bps, MStargetRates_bps[ 2 ], channelRate_bps, LBRR_symbol;
silk_encoder *psEnc = ( silk_encoder * )encState;
opus_int16 buf[ MAX_FRAME_LENGTH_MS * MAX_API_FS_KHZ ];
+ opus_int transition;
psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded = psEnc->state_Fxx[ 1 ].sCmn.nFramesEncoded = 0;
@@ -199,6 +200,9 @@ opus_int silk_Encode(
silk_memcpy( &psEnc->state_Fxx[ 1 ].sCmn.In_HP_State, &psEnc->state_Fxx[ 0 ].sCmn.In_HP_State, sizeof( psEnc->state_Fxx[ 1 ].sCmn.In_HP_State ) );
}
}
+
+ transition = (encControl->payloadSize_ms != psEnc->state_Fxx[ 0 ].sCmn.PacketSize_ms) || (psEnc->nChannelsInternal != encControl->nChannelsInternal);
+
psEnc->nChannelsAPI = encControl->nChannelsAPI;
psEnc->nChannelsInternal = encControl->nChannelsInternal;
@@ -247,6 +251,12 @@ opus_int silk_Encode(
silk_assert( 0 );
return ret;
}
+ if (psEnc->state_Fxx[n].sCmn.first_frame_after_reset || transition)
+ {
+ for( i = 0; i < psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket; i++ ) {
+ psEnc->state_Fxx[ n ].sCmn.LBRR_flags[ i ] = 0;
+ }
+ }
}
silk_assert( encControl->nChannelsInternal == 1 || psEnc->state_Fxx[ 0 ].sCmn.fs_kHz == psEnc->state_Fxx[ 1 ].sCmn.fs_kHz );