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
9ab1a3e2
Commit
9ab1a3e2
authored
Apr 23, 2016
by
Alexandra Hájková
Committed by
Diego Biurrun
Nov 24, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
truemotion2: Convert to the new bitstream reader
parent
9f78e3a4
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
20 deletions
+20
-20
truemotion2.c
libavcodec/truemotion2.c
+20
-20
No files found.
libavcodec/truemotion2.c
View file @
9ab1a3e2
...
...
@@ -27,9 +27,9 @@
#include <inttypes.h>
#include "avcodec.h"
#include "bitstream.h"
#include "bswapdsp.h"
#include "bytestream.h"
#include "get_bits.h"
#include "internal.h"
#define TM2_ESCAPE 0x80000000
...
...
@@ -62,7 +62,7 @@ typedef struct TM2Context {
AVCodecContext
*
avctx
;
AVFrame
*
pic
;
GetBitContext
gb
;
BitstreamContext
bc
;
BswapDSPContext
bdsp
;
/* TM2 streams */
...
...
@@ -117,7 +117,7 @@ static int tm2_read_tree(TM2Context *ctx, uint32_t prefix, int length, TM2Huff *
return
AVERROR_INVALIDDATA
;
}
if
(
!
get_bits1
(
&
ctx
->
gb
))
{
/* literal */
if
(
!
bitstream_read_bit
(
&
ctx
->
bc
))
{
/* literal */
if
(
length
==
0
)
{
length
=
1
;
}
...
...
@@ -125,7 +125,7 @@ static int tm2_read_tree(TM2Context *ctx, uint32_t prefix, int length, TM2Huff *
av_log
(
ctx
->
avctx
,
AV_LOG_DEBUG
,
"Too many literals
\n
"
);
return
AVERROR_INVALIDDATA
;
}
huff
->
nums
[
huff
->
num
]
=
get_bits_long
(
&
ctx
->
gb
,
huff
->
val_bits
);
huff
->
nums
[
huff
->
num
]
=
bitstream_read
(
&
ctx
->
bc
,
huff
->
val_bits
);
huff
->
bits
[
huff
->
num
]
=
prefix
;
huff
->
lens
[
huff
->
num
]
=
length
;
huff
->
num
++
;
...
...
@@ -144,10 +144,10 @@ static int tm2_build_huff_table(TM2Context *ctx, TM2Codes *code)
TM2Huff
huff
;
int
res
=
0
;
huff
.
val_bits
=
get_bits
(
&
ctx
->
gb
,
5
);
huff
.
max_bits
=
get_bits
(
&
ctx
->
gb
,
5
);
huff
.
min_bits
=
get_bits
(
&
ctx
->
gb
,
5
);
huff
.
nodes
=
get_bits_long
(
&
ctx
->
gb
,
17
);
huff
.
val_bits
=
bitstream_read
(
&
ctx
->
bc
,
5
);
huff
.
max_bits
=
bitstream_read
(
&
ctx
->
bc
,
5
);
huff
.
min_bits
=
bitstream_read
(
&
ctx
->
bc
,
5
);
huff
.
nodes
=
bitstream_read
(
&
ctx
->
bc
,
17
);
huff
.
num
=
0
;
/* check for correct codes parameters */
...
...
@@ -222,10 +222,10 @@ static void tm2_free_codes(TM2Codes *code)
ff_free_vlc
(
&
code
->
vlc
);
}
static
inline
int
tm2_get_token
(
GetBitContext
*
gb
,
TM2Codes
*
code
)
static
inline
int
tm2_get_token
(
BitstreamContext
*
bc
,
TM2Codes
*
code
)
{
int
val
;
val
=
get_vlc2
(
gb
,
code
->
vlc
.
table
,
code
->
bits
,
1
);
val
=
bitstream_read_vlc
(
bc
,
code
->
vlc
.
table
,
code
->
bits
,
1
);
return
code
->
recode
[
val
];
}
...
...
@@ -254,8 +254,8 @@ static int tm2_read_deltas(TM2Context *ctx, int stream_id)
int
d
,
mb
;
int
i
,
v
;
d
=
get_bits
(
&
ctx
->
gb
,
9
);
mb
=
get_bits
(
&
ctx
->
gb
,
5
);
d
=
bitstream_read
(
&
ctx
->
bc
,
9
);
mb
=
bitstream_read
(
&
ctx
->
bc
,
5
);
if
((
d
<
1
)
||
(
d
>
TM2_DELTAS
)
||
(
mb
<
1
)
||
(
mb
>
32
))
{
av_log
(
ctx
->
avctx
,
AV_LOG_ERROR
,
"Incorrect delta table: %i deltas x %i bits
\n
"
,
d
,
mb
);
...
...
@@ -263,7 +263,7 @@ static int tm2_read_deltas(TM2Context *ctx, int stream_id)
}
for
(
i
=
0
;
i
<
d
;
i
++
)
{
v
=
get_bits_long
(
&
ctx
->
gb
,
mb
);
v
=
bitstream_read
(
&
ctx
->
bc
,
mb
);
if
(
v
&
(
1
<<
(
mb
-
1
)))
ctx
->
deltas
[
stream_id
][
i
]
=
v
-
(
1
<<
mb
);
else
...
...
@@ -306,10 +306,10 @@ static int tm2_read_stream(TM2Context *ctx, const uint8_t *buf, int stream_id, i
pos
=
bytestream2_tell
(
&
gb
);
if
(
skip
<=
pos
)
return
AVERROR_INVALIDDATA
;
init_get_bits
(
&
ctx
->
gb
,
buf
+
pos
,
(
skip
-
pos
)
*
8
);
bitstream_init
(
&
ctx
->
bc
,
buf
+
pos
,
(
skip
-
pos
)
*
8
);
if
((
ret
=
tm2_read_deltas
(
ctx
,
stream_id
))
<
0
)
return
ret
;
bytestream2_skip
(
&
gb
,
((
get_bits_count
(
&
ctx
->
gb
)
+
31
)
>>
5
)
<<
2
);
bytestream2_skip
(
&
gb
,
((
bitstream_tell
(
&
ctx
->
bc
)
+
31
)
>>
5
)
<<
2
);
}
}
/* skip unused fields */
...
...
@@ -323,10 +323,10 @@ static int tm2_read_stream(TM2Context *ctx, const uint8_t *buf, int stream_id, i
pos
=
bytestream2_tell
(
&
gb
);
if
(
skip
<=
pos
)
return
AVERROR_INVALIDDATA
;
init_get_bits
(
&
ctx
->
gb
,
buf
+
pos
,
(
skip
-
pos
)
*
8
);
bitstream_init
(
&
ctx
->
bc
,
buf
+
pos
,
(
skip
-
pos
)
*
8
);
if
((
ret
=
tm2_build_huff_table
(
ctx
,
&
codes
))
<
0
)
return
ret
;
bytestream2_skip
(
&
gb
,
((
get_bits_count
(
&
ctx
->
gb
)
+
31
)
>>
5
)
<<
2
);
bytestream2_skip
(
&
gb
,
((
bitstream_tell
(
&
ctx
->
bc
)
+
31
)
>>
5
)
<<
2
);
toks
>>=
1
;
/* check if we have sane number of tokens */
...
...
@@ -342,13 +342,13 @@ static int tm2_read_stream(TM2Context *ctx, const uint8_t *buf, int stream_id, i
pos
=
bytestream2_tell
(
&
gb
);
if
(
skip
<=
pos
)
return
AVERROR_INVALIDDATA
;
init_get_bits
(
&
ctx
->
gb
,
buf
+
pos
,
(
skip
-
pos
)
*
8
);
bitstream_init
(
&
ctx
->
bc
,
buf
+
pos
,
(
skip
-
pos
)
*
8
);
for
(
i
=
0
;
i
<
toks
;
i
++
)
{
if
(
get_bits_left
(
&
ctx
->
gb
)
<=
0
)
{
if
(
bitstream_bits_left
(
&
ctx
->
bc
)
<=
0
)
{
av_log
(
ctx
->
avctx
,
AV_LOG_ERROR
,
"Incorrect number of tokens: %i
\n
"
,
toks
);
return
AVERROR_INVALIDDATA
;
}
ctx
->
tokens
[
stream_id
][
i
]
=
tm2_get_token
(
&
ctx
->
gb
,
&
codes
);
ctx
->
tokens
[
stream_id
][
i
]
=
tm2_get_token
(
&
ctx
->
bc
,
&
codes
);
if
(
stream_id
<=
TM2_MOT
&&
ctx
->
tokens
[
stream_id
][
i
]
>=
TM2_DELTAS
)
{
av_log
(
ctx
->
avctx
,
AV_LOG_ERROR
,
"Invalid delta token index %d for type %d, n=%d
\n
"
,
ctx
->
tokens
[
stream_id
][
i
],
stream_id
,
i
);
...
...
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