LCOV - code coverage report
Current view: top level - libavcodec - lagarithrac.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 16 16 100.0 %
Date: 2017-12-14 01:15:32 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Lagarith range decoder
       3             :  * Copyright (c) 2009 Nathan Caldwell <saintdev (at) gmail.com>
       4             :  * Copyright (c) 2009 David Conrad
       5             :  *
       6             :  * This file is part of FFmpeg.
       7             :  *
       8             :  * FFmpeg is free software; you can redistribute it and/or
       9             :  * modify it under the terms of the GNU Lesser General Public
      10             :  * License as published by the Free Software Foundation; either
      11             :  * version 2.1 of the License, or (at your option) any later version.
      12             :  *
      13             :  * FFmpeg is distributed in the hope that it will be useful,
      14             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      15             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      16             :  * Lesser General Public License for more details.
      17             :  *
      18             :  * You should have received a copy of the GNU Lesser General Public
      19             :  * License along with FFmpeg; if not, write to the Free Software
      20             :  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
      21             :  */
      22             : 
      23             : /**
      24             :  * @file
      25             :  * Lagarith range decoder
      26             :  * @author Nathan Caldwell
      27             :  * @author David Conrad
      28             :  */
      29             : 
      30             : #include "get_bits.h"
      31             : #include "lagarithrac.h"
      32             : 
      33         130 : void ff_lag_rac_init(lag_rac *l, GetBitContext *gb, int length)
      34             : {
      35             :     int i, j, left;
      36             : 
      37             :     /* According to reference decoder "1st byte is garbage",
      38             :      * however, it gets skipped by the call to align_get_bits()
      39             :      */
      40         130 :     align_get_bits(gb);
      41         130 :     left                = get_bits_left(gb) >> 3;
      42         130 :     l->bytestream_start =
      43         130 :     l->bytestream       = gb->buffer + get_bits_count(gb) / 8;
      44         130 :     l->bytestream_end   = l->bytestream_start + left;
      45             : 
      46         130 :     l->range        = 0x80;
      47         130 :     l->low          = *l->bytestream >> 1;
      48         130 :     l->hash_shift   = FFMAX(l->scale, 10) - 10;
      49         130 :     l->overread     = 0;
      50             : 
      51      133250 :     for (i = j = 0; i < 1024; i++) {
      52      133120 :         unsigned r = i << l->hash_shift;
      53      299390 :         while (l->prob[j + 1] <= r)
      54       33150 :             j++;
      55      133120 :         l->range_hash[i] = j;
      56             :     }
      57         130 : }

Generated by: LCOV version 1.13