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
41679be1
Commit
41679be1
authored
Apr 08, 2016
by
Alexandra Hájková
Committed by
Anton Khirnov
Nov 18, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
asvdec: Convert to the new bitstream reader
Signed-off-by:
Anton Khirnov
<
anton@khirnov.net
>
parent
012c4511
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
29 deletions
+29
-29
asv.h
libavcodec/asv.h
+2
-2
asvdec.c
libavcodec/asvdec.c
+27
-27
No files found.
libavcodec/asv.h
View file @
41679be1
...
...
@@ -31,11 +31,11 @@
#include "libavutil/mem.h"
#include "avcodec.h"
#include "bitstream.h"
#include "blockdsp.h"
#include "bswapdsp.h"
#include "fdctdsp.h"
#include "idctdsp.h"
#include "get_bits.h"
#include "pixblockdsp.h"
#include "put_bits.h"
...
...
@@ -47,7 +47,7 @@ typedef struct ASV1Context {
IDCTDSPContext
idsp
;
PixblockDSPContext
pdsp
;
PutBitContext
pb
;
GetBitContext
gb
;
BitstreamContext
bc
;
ScanTable
scantable
;
int
inv_qscale
;
int
mb_width
;
...
...
libavcodec/asvdec.c
View file @
41679be1
...
...
@@ -70,27 +70,27 @@ static av_cold void init_vlcs(ASV1Context *a)
}
// FIXME write a reversed bitstream reader to avoid the double reverse
static
inline
int
asv2_get_bits
(
GetBitContext
*
gb
,
int
n
)
static
inline
int
asv2_get_bits
(
BitstreamContext
*
bc
,
int
n
)
{
return
ff_reverse
[
get_bits
(
gb
,
n
)
<<
(
8
-
n
)];
return
ff_reverse
[
bitstream_read
(
bc
,
n
)
<<
(
8
-
n
)];
}
static
inline
int
asv1_get_level
(
GetBitContext
*
gb
)
static
inline
int
asv1_get_level
(
BitstreamContext
*
bc
)
{
int
code
=
get_vlc2
(
gb
,
level_vlc
.
table
,
VLC_BITS
,
1
);
int
code
=
bitstream_read_vlc
(
bc
,
level_vlc
.
table
,
VLC_BITS
,
1
);
if
(
code
==
3
)
return
get_sbits
(
gb
,
8
);
return
bitstream_read_signed
(
bc
,
8
);
else
return
code
-
3
;
}
static
inline
int
asv2_get_level
(
GetBitContext
*
gb
)
static
inline
int
asv2_get_level
(
BitstreamContext
*
bc
)
{
int
code
=
get_vlc2
(
gb
,
asv2_level_vlc
.
table
,
ASV2_LEVEL_VLC_BITS
,
1
);
int
code
=
bitstream_read_vlc
(
bc
,
asv2_level_vlc
.
table
,
ASV2_LEVEL_VLC_BITS
,
1
);
if
(
code
==
31
)
return
(
int8_t
)
asv2_get_bits
(
gb
,
8
);
return
(
int8_t
)
asv2_get_bits
(
bc
,
8
);
else
return
code
-
31
;
}
...
...
@@ -99,10 +99,10 @@ static inline int asv1_decode_block(ASV1Context *a, int16_t block[64])
{
int
i
;
block
[
0
]
=
8
*
get_bits
(
&
a
->
gb
,
8
);
block
[
0
]
=
8
*
bitstream_read
(
&
a
->
bc
,
8
);
for
(
i
=
0
;
i
<
11
;
i
++
)
{
const
int
ccp
=
get_vlc2
(
&
a
->
gb
,
ccp_vlc
.
table
,
VLC_BITS
,
1
);
const
int
ccp
=
bitstream_read_vlc
(
&
a
->
bc
,
ccp_vlc
.
table
,
VLC_BITS
,
1
);
if
(
ccp
)
{
if
(
ccp
==
16
)
...
...
@@ -113,13 +113,13 @@ static inline int asv1_decode_block(ASV1Context *a, int16_t block[64])
}
if
(
ccp
&
8
)
block
[
a
->
scantable
.
permutated
[
4
*
i
+
0
]]
=
(
asv1_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
4
*
i
+
0
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
4
*
i
+
0
]]
=
(
asv1_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
4
*
i
+
0
])
>>
4
;
if
(
ccp
&
4
)
block
[
a
->
scantable
.
permutated
[
4
*
i
+
1
]]
=
(
asv1_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
4
*
i
+
1
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
4
*
i
+
1
]]
=
(
asv1_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
4
*
i
+
1
])
>>
4
;
if
(
ccp
&
2
)
block
[
a
->
scantable
.
permutated
[
4
*
i
+
2
]]
=
(
asv1_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
4
*
i
+
2
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
4
*
i
+
2
]]
=
(
asv1_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
4
*
i
+
2
])
>>
4
;
if
(
ccp
&
1
)
block
[
a
->
scantable
.
permutated
[
4
*
i
+
3
]]
=
(
asv1_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
4
*
i
+
3
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
4
*
i
+
3
]]
=
(
asv1_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
4
*
i
+
3
])
>>
4
;
}
}
...
...
@@ -130,32 +130,32 @@ static inline int asv2_decode_block(ASV1Context *a, int16_t block[64])
{
int
i
,
count
,
ccp
;
count
=
asv2_get_bits
(
&
a
->
gb
,
4
);
count
=
asv2_get_bits
(
&
a
->
bc
,
4
);
block
[
0
]
=
8
*
asv2_get_bits
(
&
a
->
gb
,
8
);
block
[
0
]
=
8
*
asv2_get_bits
(
&
a
->
bc
,
8
);
ccp
=
get_vlc2
(
&
a
->
gb
,
dc_ccp_vlc
.
table
,
VLC_BITS
,
1
);
ccp
=
bitstream_read_vlc
(
&
a
->
bc
,
dc_ccp_vlc
.
table
,
VLC_BITS
,
1
);
if
(
ccp
)
{
if
(
ccp
&
4
)
block
[
a
->
scantable
.
permutated
[
1
]]
=
(
asv2_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
1
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
1
]]
=
(
asv2_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
1
])
>>
4
;
if
(
ccp
&
2
)
block
[
a
->
scantable
.
permutated
[
2
]]
=
(
asv2_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
2
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
2
]]
=
(
asv2_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
2
])
>>
4
;
if
(
ccp
&
1
)
block
[
a
->
scantable
.
permutated
[
3
]]
=
(
asv2_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
3
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
3
]]
=
(
asv2_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
3
])
>>
4
;
}
for
(
i
=
1
;
i
<
count
+
1
;
i
++
)
{
const
int
ccp
=
get_vlc2
(
&
a
->
gb
,
ac_ccp_vlc
.
table
,
VLC_BITS
,
1
);
const
int
ccp
=
bitstream_read_vlc
(
&
a
->
bc
,
ac_ccp_vlc
.
table
,
VLC_BITS
,
1
);
if
(
ccp
)
{
if
(
ccp
&
8
)
block
[
a
->
scantable
.
permutated
[
4
*
i
+
0
]]
=
(
asv2_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
4
*
i
+
0
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
4
*
i
+
0
]]
=
(
asv2_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
4
*
i
+
0
])
>>
4
;
if
(
ccp
&
4
)
block
[
a
->
scantable
.
permutated
[
4
*
i
+
1
]]
=
(
asv2_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
4
*
i
+
1
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
4
*
i
+
1
]]
=
(
asv2_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
4
*
i
+
1
])
>>
4
;
if
(
ccp
&
2
)
block
[
a
->
scantable
.
permutated
[
4
*
i
+
2
]]
=
(
asv2_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
4
*
i
+
2
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
4
*
i
+
2
]]
=
(
asv2_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
4
*
i
+
2
])
>>
4
;
if
(
ccp
&
1
)
block
[
a
->
scantable
.
permutated
[
4
*
i
+
3
]]
=
(
asv2_get_level
(
&
a
->
gb
)
*
a
->
intra_matrix
[
4
*
i
+
3
])
>>
4
;
block
[
a
->
scantable
.
permutated
[
4
*
i
+
3
]]
=
(
asv2_get_level
(
&
a
->
bc
)
*
a
->
intra_matrix
[
4
*
i
+
3
])
>>
4
;
}
}
...
...
@@ -232,7 +232,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
a
->
bitstream_buffer
[
i
]
=
ff_reverse
[
buf
[
i
]];
}
init_get_bits
(
&
a
->
gb
,
a
->
bitstream_buffer
,
buf_size
*
8
);
bitstream_init
(
&
a
->
bc
,
a
->
bitstream_buffer
,
buf_size
*
8
);
for
(
mb_y
=
0
;
mb_y
<
a
->
mb_height2
;
mb_y
++
)
{
for
(
mb_x
=
0
;
mb_x
<
a
->
mb_width2
;
mb_x
++
)
{
...
...
@@ -267,7 +267,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
emms_c
();
return
(
get_bits_count
(
&
a
->
gb
)
+
31
)
/
32
*
4
;
return
(
bitstream_tell
(
&
a
->
bc
)
+
31
)
/
32
*
4
;
}
static
av_cold
int
decode_init
(
AVCodecContext
*
avctx
)
...
...
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