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
a1f7885a
Commit
a1f7885a
authored
Sep 14, 2011
by
Justin Ruggles
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shorten: split reading of file header into a separate functions
parent
9ef6c797
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
70 additions
and
61 deletions
+70
-61
shorten.c
libavcodec/shorten.c
+70
-61
No files found.
libavcodec/shorten.c
View file @
a1f7885a
...
...
@@ -273,6 +273,73 @@ static void decode_subframe_lpc(ShortenContext *s, int channel, int residual_siz
}
}
static
int
read_header
(
ShortenContext
*
s
)
{
int
i
;
int
maxnlpc
=
0
;
/* shorten signature */
if
(
get_bits_long
(
&
s
->
gb
,
32
)
!=
AV_RB32
(
"ajkg"
))
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"missing shorten magic 'ajkg'
\n
"
);
return
-
1
;
}
s
->
lpcqoffset
=
0
;
s
->
blocksize
=
DEFAULT_BLOCK_SIZE
;
s
->
channels
=
1
;
s
->
nmean
=
-
1
;
s
->
version
=
get_bits
(
&
s
->
gb
,
8
);
s
->
internal_ftype
=
get_uint
(
s
,
TYPESIZE
);
s
->
channels
=
get_uint
(
s
,
CHANSIZE
);
if
(
s
->
channels
>
MAX_CHANNELS
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"too many channels: %d
\n
"
,
s
->
channels
);
return
-
1
;
}
/* get blocksize if version > 0 */
if
(
s
->
version
>
0
)
{
int
skip_bytes
;
s
->
blocksize
=
get_uint
(
s
,
av_log2
(
DEFAULT_BLOCK_SIZE
));
maxnlpc
=
get_uint
(
s
,
LPCQSIZE
);
s
->
nmean
=
get_uint
(
s
,
0
);
skip_bytes
=
get_uint
(
s
,
NSKIPSIZE
);
for
(
i
=
0
;
i
<
skip_bytes
;
i
++
)
{
skip_bits
(
&
s
->
gb
,
8
);
}
}
s
->
nwrap
=
FFMAX
(
NWRAP
,
maxnlpc
);
if
(
allocate_buffers
(
s
))
return
-
1
;
init_offset
(
s
);
if
(
s
->
version
>
1
)
s
->
lpcqoffset
=
V2LPCQOFFSET
;
if
(
get_ur_golomb_shorten
(
&
s
->
gb
,
FNSIZE
)
!=
FN_VERBATIM
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"missing verbatim section at beginning of stream
\n
"
);
return
-
1
;
}
s
->
header_size
=
get_ur_golomb_shorten
(
&
s
->
gb
,
VERBATIM_CKSIZE_SIZE
);
if
(
s
->
header_size
>=
OUT_BUFFER_SIZE
||
s
->
header_size
<
CANONICAL_HEADER_SIZE
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"header is wrong size: %d
\n
"
,
s
->
header_size
);
return
-
1
;
}
for
(
i
=
0
;
i
<
s
->
header_size
;
i
++
)
s
->
header
[
i
]
=
(
char
)
get_ur_golomb_shorten
(
&
s
->
gb
,
VERBATIM_BYTE_SIZE
);
if
(
decode_wave_header
(
s
->
avctx
,
s
->
header
,
s
->
header_size
)
<
0
)
return
-
1
;
s
->
cur_chan
=
0
;
s
->
bitshift
=
0
;
return
0
;
}
static
int
shorten_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
data_size
,
...
...
@@ -311,67 +378,9 @@ static int shorten_decode_frame(AVCodecContext *avctx,
skip_bits
(
&
s
->
gb
,
s
->
bitindex
);
if
(
!
s
->
blocksize
)
{
int
maxnlpc
=
0
;
/* shorten signature */
if
(
get_bits_long
(
&
s
->
gb
,
32
)
!=
AV_RB32
(
"ajkg"
))
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"missing shorten magic 'ajkg'
\n
"
);
return
-
1
;
}
s
->
lpcqoffset
=
0
;
s
->
blocksize
=
DEFAULT_BLOCK_SIZE
;
s
->
channels
=
1
;
s
->
nmean
=
-
1
;
s
->
version
=
get_bits
(
&
s
->
gb
,
8
);
s
->
internal_ftype
=
get_uint
(
s
,
TYPESIZE
);
s
->
channels
=
get_uint
(
s
,
CHANSIZE
);
if
(
s
->
channels
>
MAX_CHANNELS
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"too many channels: %d
\n
"
,
s
->
channels
);
return
-
1
;
}
/* get blocksize if version > 0 */
if
(
s
->
version
>
0
)
{
int
skip_bytes
;
s
->
blocksize
=
get_uint
(
s
,
av_log2
(
DEFAULT_BLOCK_SIZE
));
maxnlpc
=
get_uint
(
s
,
LPCQSIZE
);
s
->
nmean
=
get_uint
(
s
,
0
);
skip_bytes
=
get_uint
(
s
,
NSKIPSIZE
);
for
(
i
=
0
;
i
<
skip_bytes
;
i
++
)
{
skip_bits
(
&
s
->
gb
,
8
);
}
}
s
->
nwrap
=
FFMAX
(
NWRAP
,
maxnlpc
);
if
(
allocate_buffers
(
s
))
return
-
1
;
init_offset
(
s
);
if
(
s
->
version
>
1
)
s
->
lpcqoffset
=
V2LPCQOFFSET
;
if
(
get_ur_golomb_shorten
(
&
s
->
gb
,
FNSIZE
)
!=
FN_VERBATIM
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"missing verbatim section at beginning of stream
\n
"
);
return
-
1
;
}
s
->
header_size
=
get_ur_golomb_shorten
(
&
s
->
gb
,
VERBATIM_CKSIZE_SIZE
);
if
(
s
->
header_size
>=
OUT_BUFFER_SIZE
||
s
->
header_size
<
CANONICAL_HEADER_SIZE
)
{
av_log
(
s
->
avctx
,
AV_LOG_ERROR
,
"header is wrong size: %d
\n
"
,
s
->
header_size
);
return
-
1
;
}
for
(
i
=
0
;
i
<
s
->
header_size
;
i
++
)
s
->
header
[
i
]
=
(
char
)
get_ur_golomb_shorten
(
&
s
->
gb
,
VERBATIM_BYTE_SIZE
);
if
(
decode_wave_header
(
avctx
,
s
->
header
,
s
->
header_size
)
<
0
)
return
-
1
;
s
->
cur_chan
=
0
;
s
->
bitshift
=
0
;
int
ret
;
if
((
ret
=
read_header
(
s
))
<
0
)
return
ret
;
}
else
{
...
...
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