FFmpeg
libavcodec
elsdec.h
Go to the documentation of this file.
1
/*
2
* ELS (Entropy Logarithmic-Scale) decoder
3
*
4
* Copyright (c) 2013 Maxim Poliakovski
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
28
#ifndef AVCODEC_ELSDEC_H
29
#define AVCODEC_ELSDEC_H
30
31
#include <stdint.h>
32
#include <sys/types.h>
33
34
#define ELS_EXPGOLOMB_LEN 10
35
36
typedef
struct
ElsDecCtx
{
37
const
uint8_t *in_buf;
38
unsigned
x;
39
size_t
data_size;
40
int
j, t, diff, err;
41
}
ElsDecCtx
;
42
43
typedef
struct
ElsRungNode
{
44
uint8_t rung;
45
uint16_t next_index;
46
}
ElsRungNode
;
47
48
typedef
struct
ElsUnsignedRung
{
49
uint8_t prefix_rung[ELS_EXPGOLOMB_LEN + 1];
50
ElsRungNode
*rem_rung_list;
51
size_t
rung_list_size;
52
uint16_t avail_index;
53
}
ElsUnsignedRung
;
54
55
void
ff_els_decoder_init(
ElsDecCtx
*ctx,
const
uint8_t *in,
size_t
data_size);
56
void
ff_els_decoder_uninit(
ElsUnsignedRung
*rung);
57
int
ff_els_decode_bit(
ElsDecCtx
*ctx,
unsigned
char
*rung);
58
unsigned
ff_els_decode_unsigned(
ElsDecCtx
*ctx,
ElsUnsignedRung
*ur);
59
60
#endif
/* AVCODEC_ELSDEC_H */
ElsUnsignedRung
Definition:
elsdec.h:48
ElsRungNode
Definition:
elsdec.h:43
ElsDecCtx
Definition:
elsdec.h:36
Generated by
1.8.12