/ source / libsmackerdec / include / HuffmanVLC.h
HuffmanVLC.h
 1  /*
 2   * libsmackerdec - Smacker video decoder
 3   * Copyright (C) 2011 Barry Duncan
 4   *
 5   * This library is free software; you can redistribute it and/or
 6   * modify it under the terms of the GNU Lesser General Public
 7   * License as published by the Free Software Foundation; either
 8   * version 2.1 of the License, or (at your option) any later version.
 9   *
10   * This library is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   * Lesser General Public License for more details.
14   *
15   * You should have received a copy of the GNU Lesser General Public
16   * License along with this library; if not, write to the Free Software
17   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18   */
19  
20  #ifndef _SmackerHuffmanVLC_h_
21  #define _SmackerHuffmanVLC_h_
22  
23  #include <stdint.h>
24  #include "BitReader.h"
25  #include <vector>
26  
27  namespace SmackerCommon {
28  
29  struct VLC
30  {
31      uint32_t symbol;
32      uint32_t code;
33  };
34  
35  typedef std::vector< std::vector<VLC> > VLCtable;
36  
37  uint16_t VLC_GetCodeBits(BitReader &bits, VLCtable &table);
38  void     VLC_InitTable  (VLCtable &table, uint32_t maxLength, uint32_t size, int *lengths, uint32_t *bits);
39  uint32_t VLC_GetSize    (VLCtable &table);
40  
41  } // close namespace SmackerCommon
42  
43  #endif