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
066fff75
Commit
066fff75
authored
Sep 21, 2011
by
Laurent Aimar
Committed by
Janne Grunau
Oct 06, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vp6: Check for huffman tree build errors
Signed-off-by:
Janne Grunau
<
janne-libav@jannau.net
>
parent
0ec6d6e9
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
18 additions
and
11 deletions
+18
-11
vp5.c
libavcodec/vp5.c
+2
-1
vp56.c
libavcodec/vp56.c
+3
-1
vp56.h
libavcodec/vp56.h
+1
-1
vp6.c
libavcodec/vp6.c
+12
-8
No files found.
libavcodec/vp5.c
View file @
066fff75
...
...
@@ -118,7 +118,7 @@ static void vp5_parse_vector_models(VP56Context *s)
model
->
vector_pdv
[
comp
][
node
]
=
vp56_rac_gets_nn
(
c
,
7
);
}
static
void
vp5_parse_coeff_models
(
VP56Context
*
s
)
static
int
vp5_parse_coeff_models
(
VP56Context
*
s
)
{
VP56RangeCoder
*
c
=
&
s
->
c
;
VP56Model
*
model
=
s
->
modelp
;
...
...
@@ -162,6 +162,7 @@ static void vp5_parse_coeff_models(VP56Context *s)
for
(
ctx
=
0
;
ctx
<
6
;
ctx
++
)
for
(
node
=
0
;
node
<
5
;
node
++
)
model
->
coeff_acct
[
pt
][
ct
][
cg
][
ctx
][
node
]
=
av_clip
(((
model
->
coeff_ract
[
pt
][
ct
][
cg
][
node
]
*
vp5_ract_lc
[
ct
][
cg
][
node
][
ctx
][
0
]
+
128
)
>>
8
)
+
vp5_ract_lc
[
ct
][
cg
][
node
][
ctx
][
1
],
1
,
254
);
return
0
;
}
static
void
vp5_parse_coeff
(
VP56Context
*
s
)
...
...
libavcodec/vp56.c
View file @
066fff75
...
...
@@ -541,7 +541,8 @@ int ff_vp56_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
s
->
mb_type
=
VP56_MB_INTER_NOVEC_PF
;
}
s
->
parse_coeff_models
(
s
);
if
(
s
->
parse_coeff_models
(
s
))
goto
next
;
memset
(
s
->
prev_dc
,
0
,
sizeof
(
s
->
prev_dc
));
s
->
prev_dc
[
1
][
VP56_FRAME_CURRENT
]
=
128
;
...
...
@@ -605,6 +606,7 @@ int ff_vp56_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
}
}
next:
if
(
p
->
key_frame
||
golden_frame
)
{
if
(
s
->
framep
[
VP56_FRAME_GOLDEN
]
->
data
[
0
]
&&
s
->
framep
[
VP56_FRAME_GOLDEN
]
!=
s
->
framep
[
VP56_FRAME_GOLDEN2
])
...
...
libavcodec/vp56.h
View file @
066fff75
...
...
@@ -48,7 +48,7 @@ typedef void (*VP56Filter)(VP56Context *s, uint8_t *dst, uint8_t *src,
typedef
void
(
*
VP56ParseCoeff
)(
VP56Context
*
s
);
typedef
void
(
*
VP56DefaultModelsInit
)(
VP56Context
*
s
);
typedef
void
(
*
VP56ParseVectorModels
)(
VP56Context
*
s
);
typedef
void
(
*
VP56ParseCoeffModels
)(
VP56Context
*
s
);
typedef
int
(
*
VP56ParseCoeffModels
)(
VP56Context
*
s
);
typedef
int
(
*
VP56ParseHeader
)(
VP56Context
*
s
,
const
uint8_t
*
buf
,
int
buf_size
,
int
*
golden_frame
);
...
...
libavcodec/vp6.c
View file @
066fff75
...
...
@@ -236,7 +236,7 @@ static int vp6_build_huff_tree(VP56Context *s, uint8_t coeff_model[],
FF_HUFFMAN_FLAG_HNODE_FIRST
);
}
static
void
vp6_parse_coeff_models
(
VP56Context
*
s
)
static
int
vp6_parse_coeff_models
(
VP56Context
*
s
)
{
VP56RangeCoder
*
c
=
&
s
->
c
;
VP56Model
*
model
=
s
->
modelp
;
...
...
@@ -281,15 +281,18 @@ static void vp6_parse_coeff_models(VP56Context *s)
if
(
s
->
use_huffman
)
{
for
(
pt
=
0
;
pt
<
2
;
pt
++
)
{
vp6_build_huff_tree
(
s
,
model
->
coeff_dccv
[
pt
],
vp6_huff_coeff_map
,
12
,
&
s
->
dccv_vlc
[
pt
]);
vp6_build_huff_tree
(
s
,
model
->
coeff_runv
[
pt
],
vp6_huff_run_map
,
9
,
&
s
->
runv_vlc
[
pt
]);
if
(
vp6_build_huff_tree
(
s
,
model
->
coeff_dccv
[
pt
],
vp6_huff_coeff_map
,
12
,
&
s
->
dccv_vlc
[
pt
]))
return
-
1
;
if
(
vp6_build_huff_tree
(
s
,
model
->
coeff_runv
[
pt
],
vp6_huff_run_map
,
9
,
&
s
->
runv_vlc
[
pt
]))
return
-
1
;
for
(
ct
=
0
;
ct
<
3
;
ct
++
)
for
(
cg
=
0
;
cg
<
6
;
cg
++
)
vp6_build_huff_tree
(
s
,
model
->
coeff_ract
[
pt
][
ct
][
cg
],
vp6_huff_coeff_map
,
12
,
&
s
->
ract_vlc
[
pt
][
ct
][
cg
]);
if
(
vp6_build_huff_tree
(
s
,
model
->
coeff_ract
[
pt
][
ct
][
cg
],
vp6_huff_coeff_map
,
12
,
&
s
->
ract_vlc
[
pt
][
ct
][
cg
]))
return
-
1
;
}
memset
(
s
->
nb_null
,
0
,
sizeof
(
s
->
nb_null
));
}
else
{
...
...
@@ -299,6 +302,7 @@ static void vp6_parse_coeff_models(VP56Context *s)
for
(
node
=
0
;
node
<
5
;
node
++
)
model
->
coeff_dcct
[
pt
][
ctx
][
node
]
=
av_clip
(((
model
->
coeff_dccv
[
pt
][
node
]
*
vp6_dccv_lc
[
ctx
][
node
][
0
]
+
128
)
>>
8
)
+
vp6_dccv_lc
[
ctx
][
node
][
1
],
1
,
255
);
}
return
0
;
}
static
void
vp6_parse_vector_adjustment
(
VP56Context
*
s
,
VP56mv
*
vect
)
...
...
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