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
cb62510c
Commit
cb62510c
authored
Feb 13, 2011
by
Peter Ross
Committed by
Mans Rullgard
Feb 13, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bink: simplify how quantization matrices are passed to read_dct_coeffs()
Signed-off-by:
Mans Rullgard
<
mans@mansr.com
>
parent
f344903c
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
15 deletions
+8
-15
bink.c
libavcodec/bink.c
+8
-15
No files found.
libavcodec/bink.c
View file @
cb62510c
...
@@ -571,24 +571,17 @@ static inline int binkb_get_value(BinkContext *c, int bundle_num)
...
@@ -571,24 +571,17 @@ static inline int binkb_get_value(BinkContext *c, int bundle_num)
return
ret
;
return
ret
;
}
}
typedef
const
uint32_t
quant_matrices
[
16
][
64
];
static
const
quant_matrices
*
bink_quant_matrices
[
2
][
2
]
=
{
{
&
bink_inter_quant
,
&
bink_intra_quant
},
{
&
binkb_inter_quant
,
&
binkb_intra_quant
},
};
/**
/**
* Read 8x8 block of DCT coefficients.
* Read 8x8 block of DCT coefficients.
*
*
* @param gb context for reading bits
* @param gb context for reading bits
* @param block place for storing coefficients
* @param block place for storing coefficients
* @param scan scan order table
* @param scan scan order table
* @param is_binkb use version 'b' quantizer matrices
* @param quant_matrices quantization matrices
* @param is_intra tells what set of quantizer matrices to use
* @return 0 for success, negative value in other cases
* @return 0 for success, negative value in other cases
*/
*/
static
int
read_dct_coeffs
(
GetBitContext
*
gb
,
DCTELEM
block
[
64
],
const
uint8_t
*
scan
,
static
int
read_dct_coeffs
(
GetBitContext
*
gb
,
DCTELEM
block
[
64
],
const
uint8_t
*
scan
,
int
is_binkb
,
int
is_intra
,
int
q
)
const
uint32_t
quant_matrices
[
16
][
64
]
,
int
q
)
{
{
int
coef_list
[
128
];
int
coef_list
[
128
];
int
mode_list
[
128
];
int
mode_list
[
128
];
...
@@ -674,7 +667,7 @@ static int read_dct_coeffs(GetBitContext *gb, DCTELEM block[64], const uint8_t *
...
@@ -674,7 +667,7 @@ static int read_dct_coeffs(GetBitContext *gb, DCTELEM block[64], const uint8_t *
quant_idx
=
q
;
quant_idx
=
q
;
}
}
quant
=
(
*
bink_quant_matrices
[
is_binkb
][
is_intra
])
[
quant_idx
];
quant
=
quant_matrices
[
quant_idx
];
block
[
0
]
=
(
block
[
0
]
*
quant
[
0
])
>>
11
;
block
[
0
]
=
(
block
[
0
]
*
quant
[
0
])
>>
11
;
for
(
i
=
0
;
i
<
coef_count
;
i
++
)
{
for
(
i
=
0
;
i
<
coef_count
;
i
++
)
{
...
@@ -855,7 +848,7 @@ static int binkb_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
...
@@ -855,7 +848,7 @@ static int binkb_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
c
->
dsp
.
clear_block
(
block
);
c
->
dsp
.
clear_block
(
block
);
block
[
0
]
=
binkb_get_value
(
c
,
BINKB_SRC_INTRA_DC
);
block
[
0
]
=
binkb_get_value
(
c
,
BINKB_SRC_INTRA_DC
);
qp
=
binkb_get_value
(
c
,
BINKB_SRC_INTRA_Q
);
qp
=
binkb_get_value
(
c
,
BINKB_SRC_INTRA_Q
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
1
,
1
,
qp
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
binkb_intra_quant
,
qp
);
c
->
dsp
.
idct_put
(
dst
,
stride
,
block
);
c
->
dsp
.
idct_put
(
dst
,
stride
,
block
);
break
;
break
;
case
3
:
case
3
:
...
@@ -888,7 +881,7 @@ static int binkb_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
...
@@ -888,7 +881,7 @@ static int binkb_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
c
->
dsp
.
clear_block
(
block
);
c
->
dsp
.
clear_block
(
block
);
block
[
0
]
=
binkb_get_value
(
c
,
BINKB_SRC_INTER_DC
);
block
[
0
]
=
binkb_get_value
(
c
,
BINKB_SRC_INTER_DC
);
qp
=
binkb_get_value
(
c
,
BINKB_SRC_INTER_Q
);
qp
=
binkb_get_value
(
c
,
BINKB_SRC_INTER_Q
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
1
,
0
,
qp
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
binkb_inter_quant
,
qp
);
c
->
dsp
.
idct_add
(
dst
,
stride
,
block
);
c
->
dsp
.
idct_add
(
dst
,
stride
,
block
);
break
;
break
;
case
5
:
case
5
:
...
@@ -1028,7 +1021,7 @@ static int bink_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
...
@@ -1028,7 +1021,7 @@ static int bink_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
case
INTRA_BLOCK
:
case
INTRA_BLOCK
:
c
->
dsp
.
clear_block
(
block
);
c
->
dsp
.
clear_block
(
block
);
block
[
0
]
=
get_value
(
c
,
BINK_SRC_INTRA_DC
);
block
[
0
]
=
get_value
(
c
,
BINK_SRC_INTRA_DC
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
0
,
1
,
-
1
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
bink_intra_quant
,
-
1
);
c
->
dsp
.
idct
(
block
);
c
->
dsp
.
idct
(
block
);
c
->
dsp
.
put_pixels_nonclamped
(
block
,
ublock
,
8
);
c
->
dsp
.
put_pixels_nonclamped
(
block
,
ublock
,
8
);
break
;
break
;
...
@@ -1112,7 +1105,7 @@ static int bink_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
...
@@ -1112,7 +1105,7 @@ static int bink_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
case
INTRA_BLOCK
:
case
INTRA_BLOCK
:
c
->
dsp
.
clear_block
(
block
);
c
->
dsp
.
clear_block
(
block
);
block
[
0
]
=
get_value
(
c
,
BINK_SRC_INTRA_DC
);
block
[
0
]
=
get_value
(
c
,
BINK_SRC_INTRA_DC
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
0
,
1
,
-
1
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
bink_intra_quant
,
-
1
);
c
->
dsp
.
idct_put
(
dst
,
stride
,
block
);
c
->
dsp
.
idct_put
(
dst
,
stride
,
block
);
break
;
break
;
case
FILL_BLOCK
:
case
FILL_BLOCK
:
...
@@ -1126,7 +1119,7 @@ static int bink_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
...
@@ -1126,7 +1119,7 @@ static int bink_decode_plane(BinkContext *c, GetBitContext *gb, int plane_idx,
c
->
dsp
.
put_pixels_tab
[
1
][
0
](
dst
,
ref
,
stride
,
8
);
c
->
dsp
.
put_pixels_tab
[
1
][
0
](
dst
,
ref
,
stride
,
8
);
c
->
dsp
.
clear_block
(
block
);
c
->
dsp
.
clear_block
(
block
);
block
[
0
]
=
get_value
(
c
,
BINK_SRC_INTER_DC
);
block
[
0
]
=
get_value
(
c
,
BINK_SRC_INTER_DC
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
0
,
0
,
-
1
);
read_dct_coeffs
(
gb
,
block
,
c
->
scantable
.
permutated
,
bink_inter_quant
,
-
1
);
c
->
dsp
.
idct_add
(
dst
,
stride
,
block
);
c
->
dsp
.
idct_add
(
dst
,
stride
,
block
);
break
;
break
;
case
PATTERN_BLOCK
:
case
PATTERN_BLOCK
:
...
...
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