LCOV - code coverage report
Current view: top level - media/libopus/celt - rate.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 20 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* Copyright (c) 2007-2008 CSIRO
       2             :    Copyright (c) 2007-2009 Xiph.Org Foundation
       3             :    Written by Jean-Marc Valin */
       4             : /*
       5             :    Redistribution and use in source and binary forms, with or without
       6             :    modification, are permitted provided that the following conditions
       7             :    are met:
       8             : 
       9             :    - Redistributions of source code must retain the above copyright
      10             :    notice, this list of conditions and the following disclaimer.
      11             : 
      12             :    - Redistributions in binary form must reproduce the above copyright
      13             :    notice, this list of conditions and the following disclaimer in the
      14             :    documentation and/or other materials provided with the distribution.
      15             : 
      16             :    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      17             :    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      18             :    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      19             :    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
      20             :    OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
      21             :    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
      22             :    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
      23             :    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
      24             :    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
      25             :    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
      26             :    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      27             : */
      28             : 
      29             : #ifndef RATE_H
      30             : #define RATE_H
      31             : 
      32             : #define MAX_PSEUDO 40
      33             : #define LOG_MAX_PSEUDO 6
      34             : 
      35             : #define CELT_MAX_PULSES 128
      36             : 
      37             : #define MAX_FINE_BITS 8
      38             : 
      39             : #define FINE_OFFSET 21
      40             : #define QTHETA_OFFSET 4
      41             : #define QTHETA_OFFSET_TWOPHASE 16
      42             : 
      43             : #include "cwrs.h"
      44             : #include "modes.h"
      45             : 
      46             : void compute_pulse_cache(CELTMode *m, int LM);
      47             : 
      48           0 : static OPUS_INLINE int get_pulses(int i)
      49             : {
      50           0 :    return i<8 ? i : (8 + (i&7)) << ((i>>3)-1);
      51             : }
      52             : 
      53           0 : static OPUS_INLINE int bits2pulses(const CELTMode *m, int band, int LM, int bits)
      54             : {
      55             :    int i;
      56             :    int lo, hi;
      57             :    const unsigned char *cache;
      58             : 
      59           0 :    LM++;
      60           0 :    cache = m->cache.bits + m->cache.index[LM*m->nbEBands+band];
      61             : 
      62           0 :    lo = 0;
      63           0 :    hi = cache[0];
      64           0 :    bits--;
      65           0 :    for (i=0;i<LOG_MAX_PSEUDO;i++)
      66             :    {
      67           0 :       int mid = (lo+hi+1)>>1;
      68             :       /* OPT: Make sure this is implemented with a conditional move */
      69           0 :       if ((int)cache[mid] >= bits)
      70           0 :          hi = mid;
      71             :       else
      72           0 :          lo = mid;
      73             :    }
      74           0 :    if (bits- (lo == 0 ? -1 : (int)cache[lo]) <= (int)cache[hi]-bits)
      75           0 :       return lo;
      76             :    else
      77           0 :       return hi;
      78             : }
      79             : 
      80           0 : static OPUS_INLINE int pulses2bits(const CELTMode *m, int band, int LM, int pulses)
      81             : {
      82             :    const unsigned char *cache;
      83             : 
      84           0 :    LM++;
      85           0 :    cache = m->cache.bits + m->cache.index[LM*m->nbEBands+band];
      86           0 :    return pulses == 0 ? 0 : cache[pulses]+1;
      87             : }
      88             : 
      89             : /** Compute the pulse allocation, i.e. how many pulses will go in each
      90             :   * band.
      91             :  @param m mode
      92             :  @param offsets Requested increase or decrease in the number of bits for
      93             :                 each band
      94             :  @param total Number of bands
      95             :  @param pulses Number of pulses per band (returned)
      96             :  @return Total number of bits allocated
      97             : */
      98             : int compute_allocation(const CELTMode *m, int start, int end, const int *offsets, const int *cap, int alloc_trim, int *intensity, int *dual_stero,
      99             :       opus_int32 total, opus_int32 *balance, int *pulses, int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int prev, int signalBandwidth);
     100             : 
     101             : #endif

Generated by: LCOV version 1.13