Saturates the last RC to 0.99 when Schur blows up
[opus.git] / silk / API.h
index ca24808..4b8ca12 100644 (file)
@@ -1,28 +1,28 @@
 /***********************************************************************
 Copyright (c) 2006-2011, Skype Limited. All rights reserved.
 Redistribution and use in source and binary forms, with or without
-modification, (subject to the limitations in the disclaimer below)
-are permitted provided that the following conditions are met:
+modification, are permitted provided that the following conditions
+are met:
 - Redistributions of source code must retain the above copyright notice,
 this list of conditions and the following disclaimer.
 - Redistributions in binary form must reproduce the above copyright
 notice, this list of conditions and the following disclaimer in the
 documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific
-contributors, may be used to endorse or promote products derived from
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+- Neither the name of Internet Society, IETF or IETF Trust, nor the 
+names of specific contributors, may be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
 ***********************************************************************/
 
 #ifndef SILK_API_H
@@ -43,9 +43,9 @@ extern "C"
 
 /* Struct for TOC (Table of Contents) */
 typedef struct {
-    opus_int     VADFlag;                                /* Voice activity for packet                            */
-    opus_int     VADFlags[ SILK_MAX_FRAMES_PER_PACKET ]; /* Voice activity for each frame in packet              */
-    opus_int     inbandFECFlag;                          /* Flag indicating if packet contains in-band FEC       */
+    opus_int    VADFlag;                                /* Voice activity for packet                            */
+    opus_int    VADFlags[ SILK_MAX_FRAMES_PER_PACKET ]; /* Voice activity for each frame in packet              */
+    opus_int    inbandFECFlag;                          /* Flag indicating if packet contains in-band FEC       */
 } silk_TOC_struct;
 
 /****************************************/
@@ -55,24 +55,16 @@ typedef struct {
 /***********************************************/
 /* Get size in bytes of the Silk encoder state */
 /***********************************************/
-opus_int silk_Get_Encoder_Size(                          /* O:   Returns error code                              */
-    int                                  *encSizeBytes   /* O:   Number of bytes in SILK encoder state           */
+opus_int silk_Get_Encoder_Size(                         /* O    Returns error code                              */
+    opus_int                        *encSizeBytes       /* O    Number of bytes in SILK encoder state           */
 );
 
 /*************************/
 /* Init or reset encoder */
 /*************************/
-opus_int silk_InitEncoder(                               /* O:   Returns error code                              */
-    void                                *encState,      /* I/O: State                                           */
-    silk_EncControlStruct               *encStatus      /* O:   Encoder Status                                  */
-);
-
-/***************************************/
-/* Read control structure from encoder */
-/***************************************/
-opus_int silk_QueryEncoder(                              /* O:   Returns error code                              */
-    const void                          *encState,      /* I:   State                                           */
-    silk_EncControlStruct               *encStatus      /* O:   Encoder Status                                  */
+opus_int silk_InitEncoder(                              /* O    Returns error code                              */
+    void                            *encState,          /* I/O  State                                           */
+    silk_EncControlStruct           *encStatus          /* O    Encoder Status                                  */
 );
 
 /**************************/
@@ -80,14 +72,14 @@ opus_int silk_QueryEncoder(                              /* O:   Returns error c
 /**************************/
 /* Note: if prefillFlag is set, the input must contain 10 ms of audio, irrespective of what                     */
 /* encControl->payloadSize_ms is set to                                                                         */
-opus_int silk_Encode(                                    /* O:   Returns error code                              */
-    void                                *encState,      /* I/O: State                                           */
-    silk_EncControlStruct               *encControl,    /* I:   Control status                                  */
-    const opus_int16                     *samplesIn,     /* I:   Speech sample input vector                      */
-    opus_int                             nSamplesIn,     /* I:   Number of samples in input vector               */
-    ec_enc                              *psRangeEnc,    /* I/O  Compressor data structure                       */
-    opus_int                             *nBytesOut,     /* I/O: Number of bytes in payload (input: Max bytes)   */
-    const opus_int                       prefillFlag     /* I:   Flag to indicate prefilling buffers no coding   */
+opus_int silk_Encode(                                   /* O    Returns error code                              */
+    void                            *encState,          /* I/O  State                                           */
+    silk_EncControlStruct           *encControl,        /* I    Control status                                  */
+    const opus_int16                *samplesIn,         /* I    Speech sample input vector                      */
+    opus_int                        nSamplesIn,         /* I    Number of samples in input vector               */
+    ec_enc                          *psRangeEnc,        /* I/O  Compressor data structure                       */
+    opus_int32                      *nBytesOut,         /* I/O  Number of bytes in payload (input: Max bytes)   */
+    const opus_int                  prefillFlag         /* I    Flag to indicate prefilling buffers no coding   */
 );
 
 /****************************************/
@@ -97,39 +89,41 @@ opus_int silk_Encode(                                    /* O:   Returns error c
 /***********************************************/
 /* Get size in bytes of the Silk decoder state */
 /***********************************************/
-opus_int silk_Get_Decoder_Size(                          /* O:   Returns error code                              */
-    int                                  *decSizeBytes   /* O:   Number of bytes in SILK decoder state           */
+opus_int silk_Get_Decoder_Size(                         /* O    Returns error code                              */
+    opus_int                        *decSizeBytes       /* O    Number of bytes in SILK decoder state           */
 );
 
 /*************************/
 /* Init or Reset decoder */
 /*************************/
-opus_int silk_InitDecoder(                               /* O:   Returns error code                              */
-    void                                *decState       /* I/O: State                                           */
+opus_int silk_InitDecoder(                              /* O    Returns error code                              */
+    void                            *decState           /* I/O  State                                           */
 );
 
 /******************/
 /* Decode a frame */
 /******************/
-opus_int silk_Decode(                                    /* O:   Returns error code                              */
-    void*                               decState,       /* I/O: State                                           */
-    silk_DecControlStruct*              decControl,     /* I/O: Control Structure                               */
-    opus_int                             lostFlag,       /* I:   0: no loss, 1 loss, 2 decode fec                */
-    opus_int                             newPacketFlag,  /* I:   Indicates first decoder call for this packet    */
-    ec_dec                              *psRangeDec,    /* I/O  Compressor data structure                       */
-    opus_int16                           *samplesOut,    /* O:   Decoded output speech vector                    */
-    opus_int32                           *nSamplesOut    /* O:   Number of samples decoded                       */
+opus_int silk_Decode(                                   /* O    Returns error code                              */
+    void*                           decState,           /* I/O  State                                           */
+    silk_DecControlStruct*          decControl,         /* I/O  Control Structure                               */
+    opus_int                        lostFlag,           /* I    0: no loss, 1 loss, 2 decode fec                */
+    opus_int                        newPacketFlag,      /* I    Indicates first decoder call for this packet    */
+    ec_dec                          *psRangeDec,        /* I/O  Compressor data structure                       */
+    opus_int16                      *samplesOut,        /* O    Decoded output speech vector                    */
+    opus_int32                      *nSamplesOut        /* O    Number of samples decoded                       */
 );
 
+#if 0
 /**************************************/
 /* Get table of contents for a packet */
 /**************************************/
 opus_int silk_get_TOC(
-    const opus_uint8                     *payload,           /* I    Payload data                                */
-    const opus_int                       nBytesIn,           /* I:   Number of input bytes                       */
-    const opus_int                       nFramesPerPayload,  /* I:   Number of SILK frames per payload           */
-    silk_TOC_struct                     *Silk_TOC           /* O:   Type of content                             */
+    const opus_uint8                *payload,           /* I    Payload data                                */
+    const opus_int                  nBytesIn,           /* I    Number of input bytes                       */
+    const opus_int                  nFramesPerPayload,  /* I    Number of SILK frames per payload           */
+    silk_TOC_struct                 *Silk_TOC           /* O    Type of content                             */
 );
+#endif
 
 #ifdef __cplusplus
 }