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
h
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
h
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
mpeg4audio_copy_pce.h
Go to the documentation of this file.
1
/*
2
* MPEG-4 Audio PCE copying function
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#ifndef AVCODEC_MPEG4AUDIO_COPY_PCE_H
22
#define AVCODEC_MPEG4AUDIO_COPY_PCE_H
23
24
#include "
libavutil/attributes.h
"
25
26
#include "
get_bits.h
"
27
#include "
put_bits.h
"
28
29
static
av_always_inline
unsigned
int
ff_pce_copy_bits
(
PutBitContext
*pb,
30
GetBitContext
*gb,
31
int
bits
)
32
{
33
unsigned
int
el =
get_bits
(gb,
bits
);
34
put_bits
(pb,
bits
, el);
35
return
el;
36
}
37
38
static
inline
int
ff_copy_pce_data
(
PutBitContext
*pb,
GetBitContext
*gb)
39
{
40
int
five_bit_ch, four_bit_ch, comment_size,
bits
;
41
int
offset
=
put_bits_count
(pb);
42
43
ff_pce_copy_bits
(pb, gb, 10);
// Tag, Object Type, Frequency
44
five_bit_ch =
ff_pce_copy_bits
(pb, gb, 4);
// Front
45
five_bit_ch +=
ff_pce_copy_bits
(pb, gb, 4);
// Side
46
five_bit_ch +=
ff_pce_copy_bits
(pb, gb, 4);
// Back
47
four_bit_ch =
ff_pce_copy_bits
(pb, gb, 2);
// LFE
48
four_bit_ch +=
ff_pce_copy_bits
(pb, gb, 3);
// Data
49
five_bit_ch +=
ff_pce_copy_bits
(pb, gb, 4);
// Coupling
50
if
(
ff_pce_copy_bits
(pb, gb, 1))
// Mono Mixdown
51
ff_pce_copy_bits
(pb, gb, 4);
52
if
(
ff_pce_copy_bits
(pb, gb, 1))
// Stereo Mixdown
53
ff_pce_copy_bits
(pb, gb, 4);
54
if
(
ff_pce_copy_bits
(pb, gb, 1))
// Matrix Mixdown
55
ff_pce_copy_bits
(pb, gb, 3);
56
for
(
bits
= five_bit_ch*5+four_bit_ch*4;
bits
> 16;
bits
-= 16)
57
ff_pce_copy_bits
(pb, gb, 16);
58
if
(
bits
)
59
ff_pce_copy_bits
(pb, gb,
bits
);
60
align_put_bits
(pb);
61
align_get_bits
(gb);
62
comment_size =
ff_pce_copy_bits
(pb, gb, 8);
63
for
(; comment_size > 0; comment_size--)
64
ff_pce_copy_bits
(pb, gb, 8);
65
66
return
put_bits_count
(pb) -
offset
;
67
}
68
69
#endif
/* AVCODEC_MPEG4AUDIO_COPY_PCE_H */
align_put_bits
static void align_put_bits(PutBitContext *s)
Pad the bitstream with zeros up to the next byte boundary.
Definition:
put_bits.h:420
put_bits
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
Definition:
j2kenc.c:223
get_bits
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
Definition:
get_bits.h:335
GetBitContext
Definition:
get_bits.h:108
ff_pce_copy_bits
static av_always_inline unsigned int ff_pce_copy_bits(PutBitContext *pb, GetBitContext *gb, int bits)
Definition:
mpeg4audio_copy_pce.h:29
bits
uint8_t bits
Definition:
vp3data.h:128
ff_copy_pce_data
static int ff_copy_pce_data(PutBitContext *pb, GetBitContext *gb)
Definition:
mpeg4audio_copy_pce.h:38
get_bits.h
PutBitContext
Definition:
put_bits.h:50
offset
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
Definition:
writing_filters.txt:86
attributes.h
put_bits_count
static int put_bits_count(PutBitContext *s)
Definition:
put_bits.h:80
av_always_inline
#define av_always_inline
Definition:
attributes.h:49
align_get_bits
static const uint8_t * align_get_bits(GetBitContext *s)
Definition:
get_bits.h:561
put_bits.h
Generated on Tue Feb 18 2025 19:22:12 for FFmpeg by
1.8.17