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
38025e68
Commit
38025e68
authored
Aug 13, 2015
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avcodec/faxcompr: Support cmode == 9 && xxx == 7
Signed-off-by:
Michael Niedermayer
<
michael@niedermayer.cc
>
parent
bd2d4cc4
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
72 additions
and
2 deletions
+72
-2
faxcompr.c
libavcodec/faxcompr.c
+72
-2
No files found.
libavcodec/faxcompr.c
View file @
38025e68
...
...
@@ -212,8 +212,78 @@ static int decode_group3_2d_line(AVCodecContext *avctx, GetBitContext *gb,
}
}
else
if
(
cmode
==
9
||
cmode
==
10
)
{
int
xxx
=
get_bits
(
gb
,
3
);
if
(
cmode
==
9
&&
xxx
==
7
)
{
int
eob
=
0
;
int
newmode
;
if
(
saved_run
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"saved run %d on entering uncompressed mode
\n
"
,
saved_run
);
return
AVERROR_INVALIDDATA
;
}
do
{
int
cwi
,
k
;
int
cw
=
0
;
int
codes
[
2
];
do
{
cwi
=
show_bits
(
gb
,
11
);
if
(
!
cwi
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Invalid uncompressed codeword
\n
"
);
return
AVERROR_INVALIDDATA
;
}
cwi
=
10
-
av_log2
(
cwi
);
skip_bits
(
gb
,
cwi
+
1
);
if
(
cwi
>
5
)
{
newmode
=
get_bits1
(
gb
);
eob
=
1
;
cwi
-=
6
;
}
cw
+=
cwi
;
}
while
(
cwi
==
5
);
codes
[
0
]
=
cw
;
codes
[
1
]
=
!
eob
;
for
(
k
=
0
;
k
<
2
;
k
++
)
{
if
(
codes
[
k
])
{
if
(
mode
==
k
)
{
*
runs
++
=
saved_run
;
if
(
runs
>=
runend
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"uncompressed run overrun
\n
"
);
return
AVERROR_INVALIDDATA
;
}
offs
+=
saved_run
;
if
(
offs
>
width
||
run
>
width
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"uncompressed run went out of bounds
\n
"
);
return
AVERROR_INVALIDDATA
;
}
saved_run
=
0
;
mode
=
!
mode
;
}
saved_run
+=
codes
[
k
];
}
}
}
while
(
!
eob
);
*
runs
++
=
saved_run
;
if
(
runs
>=
runend
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"uncompressed run overrun
\n
"
);
return
AVERROR_INVALIDDATA
;
}
offs
+=
saved_run
;
if
(
offs
>
width
||
run
>
width
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"uncompressed run went out of bounds
\n
"
);
return
AVERROR_INVALIDDATA
;
}
saved_run
=
0
;
mode
=
!
mode
;
if
(
newmode
!=
mode
)
{
//FIXME CHECK
*
runs
++
=
0
;
mode
=
newmode
;
}
}
else
{
avpriv_report_missing_feature
(
avctx
,
"Special mode %d xxx=%d support"
,
cmode
,
xxx
);
return
AVERROR_PATCHWELCOME
;
}
}
else
{
//vertical mode
run
=
run_off
-
offs
+
(
cmode
-
5
);
run_off
-=
*--
ref
;
...
...
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