Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
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 @@
...
@@ -31,11 +31,11 @@
#include "libavutil/mem.h"
#include "libavutil/mem.h"
#include "avcodec.h"
#include "avcodec.h"
#include "bitstream.h"
#include "blockdsp.h"
#include "blockdsp.h"
#include "bswapdsp.h"
#include "bswapdsp.h"
#include "fdctdsp.h"
#include "fdctdsp.h"
#include "idctdsp.h"
#include "idctdsp.h"
#include "get_bits.h"
#include "pixblockdsp.h"
#include "pixblockdsp.h"
#include "put_bits.h"
#include "put_bits.h"
...
@@ -47,7 +47,7 @@ typedef struct ASV1Context {
...
@@ -47,7 +47,7 @@ typedef struct ASV1Context {
IDCTDSPContext
idsp
;
IDCTDSPContext
idsp
;
PixblockDSPContext
pdsp
;
PixblockDSPContext
pdsp
;
PutBitContext
pb
;
PutBitContext
pb
;
GetBitContext
gb
;
BitstreamContext
bc
;
ScanTable
scantable
;
ScanTable
scantable
;
int
inv_qscale
;
int
inv_qscale
;
int
mb_width
;
int
mb_width
;
...
...
libavcodec/asvdec.c
View file @
41679be1
...
@@ -70,27 +70,27 @@ static av_cold void init_vlcs(ASV1Context *a)
...
@@ -70,27 +70,27 @@ static av_cold void init_vlcs(ASV1Context *a)
}
}
// FIXME write a reversed bitstream reader to avoid the double reverse
// 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
)
if
(
code
==
3
)
return
get_sbits
(
gb
,
8
);
return
bitstream_read_signed
(
bc
,
8
);
else
else
return
code
-
3
;
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
)
if
(
code
==
31
)
return
(
int8_t
)
asv2_get_bits
(
gb
,
8
);
return
(
int8_t
)
asv2_get_bits
(
bc
,
8
);
else
else
return
code
-
31
;
return
code
-
31
;
}
}
...
@@ -99,10 +99,10 @@ static inline int asv1_decode_block(ASV1Context *a, int16_t block[64])
...
@@ -99,10 +99,10 @@ static inline int asv1_decode_block(ASV1Context *a, int16_t block[64])
{
{
int
i
;
int
i
;
block
[
0
]
=
8
*
get_bits
(
&
a
->
gb
,
8
);
block
[
0
]
=
8
*
bitstream_read
(
&
a
->
bc
,
8
);
for
(
i
=
0
;
i
<
11
;
i
++
)
{
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
)
{
if
(
ccp
==
16
)
if
(
ccp
==
16
)
...
@@ -113,13 +113,13 @@ static inline int asv1_decode_block(ASV1Context *a, int16_t block[64])
...
@@ -113,13 +113,13 @@ static inline int asv1_decode_block(ASV1Context *a, int16_t block[64])
}
}
if
(
ccp
&
8
)
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
)
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
)
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
)
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])
...
@@ -130,32 +130,32 @@ static inline int asv2_decode_block(ASV1Context *a, int16_t block[64])
{
{
int
i
,
count
,
ccp
;
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
)
{
if
(
ccp
&
4
)
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
)
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
)
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
++
)
{
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
)
{
if
(
ccp
&
8
)
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
)
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
)
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
)
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,
...
@@ -232,7 +232,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
a
->
bitstream_buffer
[
i
]
=
ff_reverse
[
buf
[
i
]];
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_y
=
0
;
mb_y
<
a
->
mb_height2
;
mb_y
++
)
{
for
(
mb_x
=
0
;
mb_x
<
a
->
mb_width2
;
mb_x
++
)
{
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,
...
@@ -267,7 +267,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
emms_c
();
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
)
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