~paparazzi-uav/paparazzi/v5.0-manual

« back to all changes in this revision

Viewing changes to sw/ext/opencv_bebop/opencv/3rdparty/libwebp/utils/huffman_encode.h

  • Committer: Paparazzi buildbot
  • Date: 2016-05-18 15:00:29 UTC
  • Revision ID: felix.ruess+docbot@gmail.com-20160518150029-e8lgzi5kvb4p7un9
Manual import commit 4b8bbb730080dac23cf816b98908dacfabe2a8ec from v5.0 branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2011 Google Inc. All Rights Reserved.
 
2
//
 
3
// Use of this source code is governed by a BSD-style license
 
4
// that can be found in the COPYING file in the root of the source
 
5
// tree. An additional intellectual property rights grant can be found
 
6
// in the file PATENTS. All contributing project authors may
 
7
// be found in the AUTHORS file in the root of the source tree.
 
8
// -----------------------------------------------------------------------------
 
9
//
 
10
// Author: Jyrki Alakuijala (jyrki@google.com)
 
11
//
 
12
// Entropy encoding (Huffman) for webp lossless
 
13
 
 
14
#ifndef WEBP_UTILS_HUFFMAN_ENCODE_H_
 
15
#define WEBP_UTILS_HUFFMAN_ENCODE_H_
 
16
 
 
17
#include "../webp/types.h"
 
18
 
 
19
#if defined(__cplusplus) || defined(c_plusplus)
 
20
extern "C" {
 
21
#endif
 
22
 
 
23
// Struct for holding the tree header in coded form.
 
24
typedef struct {
 
25
  uint8_t code;         // value (0..15) or escape code (16,17,18)
 
26
  uint8_t extra_bits;   // extra bits for escape codes
 
27
} HuffmanTreeToken;
 
28
 
 
29
// Struct to represent the tree codes (depth and bits array).
 
30
typedef struct {
 
31
  int       num_symbols;   // Number of symbols.
 
32
  uint8_t*  code_lengths;  // Code lengths of the symbols.
 
33
  uint16_t* codes;         // Symbol Codes.
 
34
} HuffmanTreeCode;
 
35
 
 
36
// Turn the Huffman tree into a token sequence.
 
37
// Returns the number of tokens used.
 
38
int VP8LCreateCompressedHuffmanTree(const HuffmanTreeCode* const tree,
 
39
                                    HuffmanTreeToken* tokens, int max_tokens);
 
40
 
 
41
// Create an optimized tree, and tokenize it.
 
42
int VP8LCreateHuffmanTree(int* const histogram, int tree_depth_limit,
 
43
                          HuffmanTreeCode* const tree);
 
44
 
 
45
#if defined(__cplusplus) || defined(c_plusplus)
 
46
}
 
47
#endif
 
48
 
 
49
#endif  // WEBP_UTILS_HUFFMAN_ENCODE_H_