FFmpeg
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
Functions
Variables
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
c
d
g
i
o
q
r
s
v
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Enumerator
a
d
e
f
i
j
l
m
n
p
r
s
v
Files
File List
Globals
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
l
m
o
p
q
r
s
t
u
v
w
x
y
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Examples
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
libavcodec
rl.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2000-2002 Fabrice Bellard
3
* Copyright (c) 2002-2004 Michael Niedermayer
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
/**
23
* @file
24
* rl header.
25
*/
26
27
#ifndef AVCODEC_RL_H
28
#define AVCODEC_RL_H
29
30
#include <stdint.h>
31
32
#include "
vlc.h
"
33
34
/* run length table */
35
#define MAX_RUN 64
36
#define MAX_LEVEL 64
37
38
/** RLTable. */
39
typedef
struct
RLTable
{
40
int
n
;
///< number of entries of table_vlc minus 1
41
int
last
;
///< number of values for last = 0
42
const
uint16_t (*
table_vlc
)[2];
43
const
int8_t *
table_run
;
44
const
int8_t *
table_level
;
45
uint8_t
*
index_run
[2];
///< encoding only
46
int8_t *
max_level
[2];
///< encoding & decoding
47
int8_t *
max_run
[2];
///< encoding & decoding
48
RL_VLC_ELEM
*
rl_vlc
[32];
///< decoding only
49
}
RLTable
;
50
51
/**
52
* @param static_store static uint8_t array[2][2*MAX_RUN + MAX_LEVEL + 3] which will hold
53
* the level and run tables, if this is NULL av_malloc() will be used
54
*/
55
int
ff_rl_init
(
RLTable
*rl,
uint8_t
static_store[2][2*
MAX_RUN
+
MAX_LEVEL
+ 3]);
56
void
ff_rl_init_vlc
(
RLTable
*rl,
unsigned
static_size);
57
58
/**
59
* Free the contents of a dynamically allocated table.
60
*/
61
void
ff_rl_free
(
RLTable
*rl);
62
63
#define INIT_VLC_RL(rl, static_size)\
64
{\
65
int q;\
66
static RL_VLC_ELEM rl_vlc_table[32][static_size];\
67
\
68
if(!rl.rl_vlc[0]){\
69
for(q=0; q<32; q++)\
70
rl.rl_vlc[q]= rl_vlc_table[q];\
71
\
72
ff_rl_init_vlc(&rl, static_size);\
73
}\
74
}
75
76
static
inline
int
get_rl_index
(
const
RLTable
*rl,
int
last,
int
run
,
int
level
)
77
{
78
int
index
;
79
index
= rl->
index_run
[last][
run
];
80
if
(
index
>= rl->
n
)
81
return
rl->
n
;
82
if
(
level
> rl->
max_level
[last][
run
])
83
return
rl->
n
;
84
return
index
+
level
- 1;
85
}
86
87
#endif
/* AVCODEC_RL_H */
level
uint8_t level
Definition:
svq3.c:210
RLTable::index_run
uint8_t * index_run[2]
encoding only
Definition:
rl.h:45
MAX_RUN
#define MAX_RUN
Definition:
rl.h:35
RLTable
RLTable.
Definition:
rl.h:39
RLTable::n
int n
number of entries of table_vlc minus 1
Definition:
rl.h:40
RLTable::max_level
int8_t * max_level[2]
encoding & decoding
Definition:
rl.h:46
get_rl_index
static int get_rl_index(const RLTable *rl, int last, int run, int level)
Definition:
rl.h:76
run
uint8_t run
Definition:
svq3.c:209
RLTable::table_vlc
const uint16_t(* table_vlc)[2]
Definition:
rl.h:42
index
int index
Definition:
gxfenc.c:89
MAX_LEVEL
#define MAX_LEVEL
Definition:
rl.h:36
RLTable::table_level
const int8_t * table_level
Definition:
rl.h:44
RL_VLC_ELEM
Definition:
vlc.h:32
ff_rl_init_vlc
void ff_rl_init_vlc(RLTable *rl, unsigned static_size)
Definition:
rl.c:105
RLTable::max_run
int8_t * max_run[2]
encoding & decoding
Definition:
rl.h:47
uint8_t
uint8_t
Definition:
audio_convert.c:194
RLTable::last
int last
number of values for last = 0
Definition:
rl.h:41
ff_rl_free
void ff_rl_free(RLTable *rl)
Free the contents of a dynamically allocated table.
Definition:
rl.c:28
vlc.h
RLTable::table_run
const int8_t * table_run
Definition:
rl.h:43
RLTable::rl_vlc
RL_VLC_ELEM * rl_vlc[32]
decoding only
Definition:
rl.h:48
ff_rl_init
int ff_rl_init(RLTable *rl, uint8_t static_store[2][2 *MAX_RUN+MAX_LEVEL+3])
Definition:
rl.c:39
Generated on Wed Aug 24 2022 21:31:32 for FFmpeg by
1.8.17