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
23
/**
24
* @file
25
* Entropy Logarithmic-Scale binary arithmetic coder
26
*/
27
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 */
ElsRungNode::rung
uint8_t rung
Definition:
elsdec.h:44
ElsDecCtx::err
int err
Definition:
elsdec.h:40
ff_els_decode_unsigned
unsigned ff_els_decode_unsigned(ElsDecCtx *ctx, ElsUnsignedRung *ur)
Definition:
elsdec.c:352
ElsDecCtx::in_buf
const uint8_t * in_buf
Definition:
elsdec.h:37
ElsRungNode::next_index
uint16_t next_index
Definition:
elsdec.h:45
ElsDecCtx::diff
int diff
Definition:
elsdec.h:40
ElsDecCtx::x
unsigned x
Definition:
elsdec.h:38
ff_els_decoder_init
void ff_els_decoder_init(ElsDecCtx *ctx, const uint8_t *in, size_t data_size)
Definition:
elsdec.c:249
ElsUnsignedRung::avail_index
uint16_t avail_index
Definition:
elsdec.h:52
ElsDecCtx::t
int t
Definition:
elsdec.h:40
ElsDecCtx::j
int j
Definition:
elsdec.h:40
ctx
AVFormatContext * ctx
Definition:
movenc.c:48
ff_els_decoder_uninit
void ff_els_decoder_uninit(ElsUnsignedRung *rung)
Definition:
elsdec.c:274
ElsRungNode
Definition:
elsdec.h:43
ElsUnsignedRung
Definition:
elsdec.h:48
ELS_EXPGOLOMB_LEN
#define ELS_EXPGOLOMB_LEN
Definition:
elsdec.h:34
ElsDecCtx
Definition:
elsdec.h:36
ElsUnsignedRung::rem_rung_list
ElsRungNode * rem_rung_list
Definition:
elsdec.h:50
ElsUnsignedRung::rung_list_size
size_t rung_list_size
Definition:
elsdec.h:51
ff_els_decode_bit
int ff_els_decode_bit(ElsDecCtx *ctx, unsigned char *rung)
ElsUnsignedRung::prefix_rung
uint8_t prefix_rung[ELS_EXPGOLOMB_LEN+1]
Definition:
elsdec.h:49
ElsDecCtx::data_size
size_t data_size
Definition:
elsdec.h:39
Generated on Tue Feb 28 2023 21:33:14 for FFmpeg by
1.8.17