Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
eec7ade2
Commit
eec7ade2
authored
Jun 30, 2008
by
Vitor Sessak
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reindent the whole file
Originally committed as revision 14034 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
0abf0c53
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
195 additions
and
153 deletions
+195
-153
ra288.c
libavcodec/ra288.c
+195
-153
No files found.
libavcodec/ra288.c
View file @
eec7ade2
...
...
@@ -29,16 +29,16 @@ typedef struct {
float
pr2
[
10
];
int
phase
,
phasep
;
float
st1a
[
111
],
st1b
[
37
],
st1
[
37
];
float
st2a
[
38
],
st2b
[
11
],
st2
[
11
];
float
st1a
[
111
],
st1b
[
37
],
st1
[
37
];
float
st2a
[
38
],
st2b
[
11
],
st2
[
11
];
float
sb
[
41
];
float
lhist
[
10
];
}
Real288_internal
;
static
int
ra288_decode_init
(
AVCodecContext
*
avctx
)
{
Real288_internal
*
glob
=
avctx
->
priv_data
;
memset
(
glob
,
0
,
sizeof
(
Real288_internal
));
Real288_internal
*
glob
=
avctx
->
priv_data
;
memset
(
glob
,
0
,
sizeof
(
Real288_internal
));
return
0
;
}
...
...
@@ -49,83 +49,113 @@ static void colmult(float *tgt, float *m1, const float *m2, int n);
/* initial decode */
static
void
unpack
(
unsigned
short
*
tgt
,
const
unsigned
char
*
src
,
unsigned
int
len
)
static
void
unpack
(
unsigned
short
*
tgt
,
const
unsigned
char
*
src
,
unsigned
int
len
)
{
int
x
,
y
,
z
;
int
n
,
temp
;
int
x
,
y
,
z
;
int
n
,
temp
;
int
buffer
[
len
];
for
(
x
=
0
;
x
<
len
;
tgt
[
x
++
]
=
0
)
buffer
[
x
]
=
9
+
(
x
&
1
);
for
(
x
=
y
=
z
=
0
;
x
<
len
/*was 38*/
;
x
++
)
{
n
=
buffer
[
y
]
-
z
;
temp
=
src
[
x
];
if
(
n
<
8
)
temp
&=
255
>>
(
8
-
n
);
tgt
[
y
]
+=
temp
<<
z
;
if
(
n
<=
8
)
{
tgt
[
++
y
]
+=
src
[
x
]
>>
n
;
z
=
8
-
n
;
}
else
z
+=
8
;
for
(
x
=
0
;
x
<
len
;
tgt
[
x
++
]
=
0
)
buffer
[
x
]
=
9
+
(
x
&
1
);
for
(
x
=
y
=
z
=
0
;
x
<
len
/*was 38*/
;
x
++
)
{
n
=
buffer
[
y
]
-
z
;
temp
=
src
[
x
];
if
(
n
<
8
)
temp
&=
255
>>
(
8
-
n
);
tgt
[
y
]
+=
temp
<<
z
;
if
(
n
<=
8
)
{
tgt
[
++
y
]
+=
src
[
x
]
>>
n
;
z
=
8
-
n
;
}
else
z
+=
8
;
}
}
static
void
update
(
Real288_internal
*
glob
)
{
int
x
,
y
;
float
buffer1
[
40
],
temp1
[
37
];
float
buffer2
[
8
],
temp2
[
11
];
for
(
x
=
0
,
y
=
glob
->
phasep
+
5
;
x
<
40
;
buffer1
[
x
++
]
=
glob
->
output
[(
y
++
)
%
40
]);
co
(
36
,
40
,
35
,
buffer1
,
temp1
,
glob
->
st1a
,
glob
->
st1b
,
table1
);
if
(
pred
(
temp1
,
glob
->
st1
,
36
))
colmult
(
glob
->
pr1
,
glob
->
st1
,
table1a
,
36
);
for
(
x
=
0
,
y
=
glob
->
phase
+
1
;
x
<
8
;
buffer2
[
x
++
]
=
glob
->
history
[(
y
++
)
%
8
]);
co
(
10
,
8
,
20
,
buffer2
,
temp2
,
glob
->
st2a
,
glob
->
st2b
,
table2
);
if
(
pred
(
temp2
,
glob
->
st2
,
10
))
colmult
(
glob
->
pr2
,
glob
->
st2
,
table2a
,
10
);
float
buffer1
[
40
],
temp1
[
37
];
float
buffer2
[
8
],
temp2
[
11
];
for
(
x
=
0
,
y
=
glob
->
phasep
+
5
;
x
<
40
;
buffer1
[
x
++
]
=
glob
->
output
[(
y
++
)
%
40
]);
co
(
36
,
40
,
35
,
buffer1
,
temp1
,
glob
->
st1a
,
glob
->
st1b
,
table1
);
if
(
pred
(
temp1
,
glob
->
st1
,
36
))
colmult
(
glob
->
pr1
,
glob
->
st1
,
table1a
,
36
);
for
(
x
=
0
,
y
=
glob
->
phase
+
1
;
x
<
8
;
buffer2
[
x
++
]
=
glob
->
history
[(
y
++
)
%
8
]);
co
(
10
,
8
,
20
,
buffer2
,
temp2
,
glob
->
st2a
,
glob
->
st2b
,
table2
);
if
(
pred
(
temp2
,
glob
->
st2
,
10
))
colmult
(
glob
->
pr2
,
glob
->
st2
,
table2a
,
10
);
}
/* Decode and produce output */
static
void
decode
(
Real288_internal
*
glob
,
unsigned
int
input
)
{
unsigned
int
x
,
y
;
unsigned
int
x
,
y
;
float
f
;
double
sum
,
sumsum
;
float
*
p1
,
*
p2
;
double
sum
,
sumsum
;
float
*
p1
,
*
p2
;
float
buffer
[
5
];
const
float
*
table
;
for
(
x
=
36
;
x
--
;
glob
->
sb
[
x
+
5
]
=
glob
->
sb
[
x
]);
for
(
x
=
5
;
x
--
;)
{
p1
=
glob
->
sb
+
x
;
p2
=
glob
->
pr1
;
for
(
sum
=
0
,
y
=
36
;
y
--
;
sum
-=
(
*
(
++
p1
))
*
(
*
(
p2
++
)));
glob
->
sb
[
x
]
=
sum
;
for
(
x
=
36
;
x
--
;
glob
->
sb
[
x
+
5
]
=
glob
->
sb
[
x
]);
for
(
x
=
5
;
x
--
;)
{
p1
=
glob
->
sb
+
x
;
p2
=
glob
->
pr1
;
for
(
sum
=
0
,
y
=
36
;
y
--
;
sum
-=
(
*
(
++
p1
))
*
(
*
(
p2
++
)));
glob
->
sb
[
x
]
=
sum
;
}
f
=
amptable
[
input
&
7
];
table
=
codetable
+
(
input
>>
3
)
*
5
;
f
=
amptable
[
input
&
7
];
table
=
codetable
+
(
input
>>
3
)
*
5
;
/* convert log and do rms */
for
(
sum
=
32
,
x
=
10
;
x
--
;
sum
-=
glob
->
pr2
[
x
]
*
glob
->
lhist
[
x
]);
if
(
sum
<
0
)
sum
=
0
;
else
if
(
sum
>
60
)
sum
=
60
;
for
(
sum
=
32
,
x
=
10
;
x
--
;
sum
-=
glob
->
pr2
[
x
]
*
glob
->
lhist
[
x
]);
sumsum
=
exp
(
sum
*
0
.
1151292546497
)
*
f
;
/* pow(10.0,sum/20)*f */
for
(
sum
=
0
,
x
=
5
;
x
--
;)
{
buffer
[
x
]
=
table
[
x
]
*
sumsum
;
sum
+=
buffer
[
x
]
*
buffer
[
x
];
}
if
((
sum
/=
5
)
<
1
)
sum
=
1
;
if
(
sum
<
0
)
sum
=
0
;
else
if
(
sum
>
60
)
sum
=
60
;
sumsum
=
exp
(
sum
*
0
.
1151292546497
)
*
f
;
/* pow(10.0,sum/20)*f */
for
(
sum
=
0
,
x
=
5
;
x
--
;)
{
buffer
[
x
]
=
table
[
x
]
*
sumsum
;
sum
+=
buffer
[
x
]
*
buffer
[
x
];
}
if
((
sum
/=
5
)
<
1
)
sum
=
1
;
/* shift and store */
for
(
x
=
10
;
--
x
;
glob
->
lhist
[
x
]
=
glob
->
lhist
[
x
-
1
]);
*
glob
->
lhist
=
glob
->
history
[
glob
->
phase
]
=
10
*
log10
(
sum
)
-
32
;
for
(
x
=
10
;
--
x
;
glob
->
lhist
[
x
]
=
glob
->
lhist
[
x
-
1
]);
*
glob
->
lhist
=
glob
->
history
[
glob
->
phase
]
=
10
*
log10
(
sum
)
-
32
;
for
(
x
=
1
;
x
<
5
;
x
++
)
for
(
y
=
x
;
y
--
;
buffer
[
x
]
-=
glob
->
pr1
[
x
-
y
-
1
]
*
buffer
[
y
]);
for
(
x
=
1
;
x
<
5
;
x
++
)
for
(
y
=
x
;
y
--
;
buffer
[
x
]
-=
glob
->
pr1
[
x
-
y
-
1
]
*
buffer
[
y
]);
/* output */
for
(
x
=
0
;
x
<
5
;
x
++
)
{
f
=
glob
->
sb
[
4
-
x
]
+
buffer
[
x
];
if
(
f
>
4095
)
f
=
4095
;
else
if
(
f
<-
4095
)
f
=-
4095
;
glob
->
output
[
glob
->
phasep
+
x
]
=
glob
->
sb
[
4
-
x
]
=
f
;
for
(
x
=
0
;
x
<
5
;
x
++
)
{
f
=
glob
->
sb
[
4
-
x
]
+
buffer
[
x
];
if
(
f
>
4095
)
f
=
4095
;
else
if
(
f
<
-
4095
)
f
=
-
4095
;
glob
->
output
[
glob
->
phasep
+
x
]
=
glob
->
sb
[
4
-
x
]
=
f
;
}
}
...
...
@@ -133,42 +163,48 @@ static void decode(Real288_internal *glob, unsigned int input)
static
void
colmult
(
float
*
tgt
,
float
*
m1
,
const
float
*
m2
,
int
n
)
{
while
(
n
--
)
*
(
tgt
++
)
=
(
*
(
m1
++
))
*
(
*
(
m2
++
));
*
(
tgt
++
)
=
(
*
(
m1
++
))
*
(
*
(
m2
++
));
}
static
int
pred
(
float
*
in
,
float
*
tgt
,
int
n
)
{
int
x
,
y
;
float
*
p1
,
*
p2
;
double
f0
,
f1
,
f2
;
int
x
,
y
;
float
*
p1
,
*
p2
;
double
f0
,
f1
,
f2
;
float
temp
;
if
(
in
[
n
]
==
0
)
return
0
;
if
((
f0
=*
in
)
<=
0
)
return
0
;
for
(
x
=
1
;;
x
++
)
{
if
(
n
<
x
)
return
1
;
if
(
in
[
n
]
==
0
)
return
0
;
p1
=
in
+
x
;
p2
=
tgt
;
f1
=*
(
p1
--
);
for
(
y
=
x
;
--
y
;
f1
+=
(
*
(
p1
--
))
*
(
*
(
p2
++
)));
if
((
f0
=
*
in
)
<=
0
)
return
0
;
p1
=
tgt
+
x
-
1
;
p2
=
tgt
;
*
(
p1
--
)
=
f2
=-
f1
/
f0
;
for
(
y
=
x
>>
1
;
y
--
;)
{
temp
=*
p2
+*
p1
*
f2
;
*
(
p1
--
)
+=*
p2
*
f2
;
*
(
p2
++
)
=
temp
;
for
(
x
=
1
;
;
x
++
)
{
if
(
n
<
x
)
return
1
;
p1
=
in
+
x
;
p2
=
tgt
;
f1
=
*
(
p1
--
);
for
(
y
=
x
;
--
y
;
f1
+=
(
*
(
p1
--
))
*
(
*
(
p2
++
)));
p1
=
tgt
+
x
-
1
;
p2
=
tgt
;
*
(
p1
--
)
=
f2
=
-
f1
/
f0
;
for
(
y
=
x
>>
1
;
y
--
;)
{
temp
=
*
p2
+
*
p1
*
f2
;
*
(
p1
--
)
+=
*
p2
*
f2
;
*
(
p2
++
)
=
temp
;
}
if
((
f0
+=
f1
*
f2
)
<
0
)
return
0
;
if
((
f0
+=
f1
*
f2
)
<
0
)
return
0
;
}
}
static
void
co
(
int
n
,
int
i
,
int
j
,
float
*
in
,
float
*
out
,
float
*
st1
,
float
*
st2
,
const
float
*
table
)
static
void
co
(
int
n
,
int
i
,
int
j
,
float
*
in
,
float
*
out
,
float
*
st1
,
float
*
st2
,
const
float
*
table
)
{
int
a
,
b
,
c
;
int
a
,
b
,
c
;
unsigned
int
x
;
float
*
fp
;
float
buffer1
[
37
];
...
...
@@ -176,65 +212,71 @@ static void co(int n, int i, int j, float *in, float *out, float *st1, float *st
float
work
[
111
];
/* rotate and multiply */
c
=
(
b
=
(
a
=
n
+
i
)
+
j
)
-
i
;
fp
=
st1
+
i
;
for
(
x
=
0
;
x
<
b
;
x
++
)
{
if
(
x
==
c
)
fp
=
in
;
work
[
x
]
=*
(
table
++
)
*
(
*
(
st1
++
)
=*
(
fp
++
));
c
=
(
b
=
(
a
=
n
+
i
)
+
j
)
-
i
;
fp
=
st1
+
i
;
for
(
x
=
0
;
x
<
b
;
x
++
)
{
if
(
x
==
c
)
fp
=
in
;
work
[
x
]
=
*
(
table
++
)
*
(
*
(
st1
++
)
=
*
(
fp
++
));
}
prodsum
(
buffer1
,
work
+
n
,
i
,
n
);
prodsum
(
buffer2
,
work
+
a
,
j
,
n
);
prodsum
(
buffer1
,
work
+
n
,
i
,
n
);
prodsum
(
buffer2
,
work
+
a
,
j
,
n
);
for
(
x
=
0
;
x
<=
n
;
x
++
)
{
*
st2
=*
st2
*
(
0
.
5625
)
+
buffer1
[
x
];
out
[
x
]
=*
(
st2
++
)
+
buffer2
[
x
];
*
st2
=
*
st2
*
(
0
.
5625
)
+
buffer1
[
x
];
out
[
x
]
=
*
(
st2
++
)
+
buffer2
[
x
];
}
*
out
*=
1
.
003
90625
;
/* to prevent clipping */
*
out
*=
1
.
003
90625
;
/* to prevent clipping */
}
/* product sum (lsf) */
static
void
prodsum
(
float
*
tgt
,
float
*
src
,
int
len
,
int
n
)
{
unsigned
int
x
;
float
*
p1
,
*
p2
;
float
*
p1
,
*
p2
;
double
sum
;
while
(
n
>=
0
)
{
p1
=
(
p2
=
src
)
-
n
;
for
(
sum
=
0
,
x
=
len
;
x
--
;
sum
+=
(
*
p1
++
)
*
(
*
p2
++
));
tgt
[
n
--
]
=
sum
;
while
(
n
>=
0
)
{
p1
=
(
p2
=
src
)
-
n
;
for
(
sum
=
0
,
x
=
len
;
x
--
;
sum
+=
(
*
p1
++
)
*
(
*
p2
++
));
tgt
[
n
--
]
=
sum
;
}
}
static
void
*
decode_block
(
AVCodecContext
*
avctx
,
const
unsigned
char
*
in
,
signed
short
int
*
out
,
unsigned
len
)
static
void
*
decode_block
(
AVCodecContext
*
avctx
,
const
unsigned
char
*
in
,
signed
short
int
*
out
,
unsigned
len
)
{
int
x
,
y
;
Real288_internal
*
glob
=
avctx
->
priv_data
;
int
x
,
y
;
Real288_internal
*
glob
=
avctx
->
priv_data
;
unsigned
short
int
buffer
[
len
];
unpack
(
buffer
,
in
,
len
);
for
(
x
=
0
;
x
<
32
;
x
++
)
{
glob
->
phasep
=
(
glob
->
phase
=
x
&
7
)
*
5
;
decode
(
glob
,
buffer
[
x
]);
for
(
y
=
0
;
y
<
5
;
*
(
out
++
)
=
8
*
glob
->
output
[
glob
->
phasep
+
(
y
++
)]);
if
(
glob
->
phase
==
3
)
update
(
glob
);
unpack
(
buffer
,
in
,
len
);
for
(
x
=
0
;
x
<
32
;
x
++
)
{
glob
->
phasep
=
(
glob
->
phase
=
x
&
7
)
*
5
;
decode
(
glob
,
buffer
[
x
]);
for
(
y
=
0
;
y
<
5
;
*
(
out
++
)
=
8
*
glob
->
output
[
glob
->
phasep
+
(
y
++
)]);
if
(
glob
->
phase
==
3
)
update
(
glob
);
}
return
out
;
}
/* Decode a block (celp) */
static
int
ra288_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
data_size
,
const
uint8_t
*
buf
,
int
buf_size
)
static
int
ra288_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
data_size
,
const
uint8_t
*
buf
,
int
buf_size
)
{
void
*
datao
;
if
(
buf_size
<
avctx
->
block_align
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"ffra288: Error! Input buffer is too small [%d<%d]
\n
"
,
buf_size
,
avctx
->
block_align
);
if
(
buf_size
<
avctx
->
block_align
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"ffra288: Error! Input buffer is too small [%d<%d]
\n
"
,
buf_size
,
avctx
->
block_align
);
return
0
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment