Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
50910f60
Commit
50910f60
authored
Apr 03, 2017
by
Angie Chiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Empty the dst buffer before inv txfm when PVQ on
Change-Id: I35b2b69e3937e70a7923ba76735f035f366de27f
parent
57605531
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
24 additions
and
48 deletions
+24
-48
av1/common/idct.c
av1/common/idct.c
+19
-0
av1/decoder/decodeframe.c
av1/decoder/decodeframe.c
+0
-16
av1/encoder/encodemb.c
av1/encoder/encodemb.c
+1
-25
av1/encoder/rdopt.c
av1/encoder/rdopt.c
+4
-7
No files found.
av1/common/idct.c
View file @
50910f60
...
...
@@ -2785,6 +2785,25 @@ void av1_inverse_transform_block(MACROBLOCKD *xd, const tran_low_t *dqcoeff,
const
TX_TYPE
tx_type
,
const
TX_SIZE
tx_size
,
uint8_t
*
dst
,
int
stride
,
int
eob
)
{
if
(
!
eob
)
return
;
#if CONFIG_PVQ
const
BLOCK_SIZE
tx_bsize
=
txsize_to_bsize
[
tx_size
];
const
int
txb_width
=
block_size_wide
[
tx_bsize
];
const
int
txb_height
=
block_size_high
[
tx_bsize
];
int
r
,
c
;
#if CONFIG_AOM_HIGHBITDEPTH
if
(
xd
->
cur_buf
->
flags
&
YV12_FLAG_HIGHBITDEPTH
)
{
uint16_t
*
dst16
=
CONVERT_TO_SHORTPTR
(
dst
);
for
(
r
=
0
;
r
<
txb_height
;
r
++
)
for
(
c
=
0
;
c
<
txb_width
;
c
++
)
CONVERT_TO_SHORTPTR
(
dst
)[
r
*
stride
+
c
]
=
0
;
}
else
{
#endif // CONFIG_AOM_HIGHBITDEPTH
for
(
r
=
0
;
r
<
txb_height
;
r
++
)
for
(
c
=
0
;
c
<
txb_width
;
c
++
)
dst
[
r
*
stride
+
c
]
=
0
;
#if CONFIG_AOM_HIGHBITDEPTH
}
#endif // CONFIG_AOM_HIGHBITDEPTH
#endif // CONFIG_PVQ
INV_TXFM_PARAM
inv_txfm_param
;
inv_txfm_param
.
tx_type
=
tx_type
;
inv_txfm_param
.
tx_size
=
tx_size
;
...
...
av1/decoder/decodeframe.c
View file @
50910f60
...
...
@@ -496,22 +496,6 @@ static int av1_pvq_decode_helper2(AV1_COMMON *cm, MACROBLOCKD *const xd,
eob
=
av1_pvq_decode_helper
(
xd
,
pvq_ref_coeff
,
dqcoeff
,
quant
,
plane
,
tx_size
,
tx_type
,
xdec
,
ac_dc_coded
);
// Since av1 does not have separate inverse transform
// but also contains adding to predicted image,
// pass blank dummy image to av1_inv_txfm_add_*x*(), i.e. set dst as zeros
#if CONFIG_AOM_HIGHBITDEPTH
if
(
xd
->
cur_buf
->
flags
&
YV12_FLAG_HIGHBITDEPTH
)
{
for
(
j
=
0
;
j
<
tx_blk_size
;
j
++
)
for
(
i
=
0
;
i
<
tx_blk_size
;
i
++
)
CONVERT_TO_SHORTPTR
(
dst
)[
j
*
pd
->
dst
.
stride
+
i
]
=
0
;
}
else
{
#endif
for
(
j
=
0
;
j
<
tx_blk_size
;
j
++
)
for
(
i
=
0
;
i
<
tx_blk_size
;
i
++
)
dst
[
j
*
pd
->
dst
.
stride
+
i
]
=
0
;
#if CONFIG_AOM_HIGHBITDEPTH
}
#endif
inverse_transform_block
(
xd
,
plane
,
tx_type
,
tx_size
,
dst
,
pd
->
dst
.
stride
,
max_scan_line
,
eob
);
}
...
...
av1/encoder/encodemb.c
View file @
50910f60
...
...
@@ -1105,10 +1105,6 @@ void av1_encode_block_intra(int plane, int block, int blk_row, int blk_col,
const
int
dst_stride
=
pd
->
dst
.
stride
;
uint8_t
*
dst
=
&
pd
->
dst
.
buf
[(
blk_row
*
dst_stride
+
blk_col
)
<<
tx_size_wide_log2
[
0
]];
#if CONFIG_PVQ
int
tx_blk_size
;
int
i
,
j
;
#endif
av1_predict_intra_block_facade
(
xd
,
plane
,
block_raster_idx
,
blk_col
,
blk_row
,
tx_size
);
...
...
@@ -1133,27 +1129,7 @@ void av1_encode_block_intra(int plane, int block, int blk_row, int blk_col,
if
(
!
x
->
pvq_skip
[
plane
])
*
(
args
->
skip
)
=
0
;
if
(
x
->
pvq_skip
[
plane
])
return
;
// transform block size in pixels
tx_blk_size
=
tx_size_wide
[
tx_size
];
// Since av1 does not have separate function which does inverse transform
// but av1_inv_txfm_add_*x*() also does addition of predicted image to
// inverse transformed image,
// pass blank dummy image to av1_inv_txfm_add_*x*(), i.e. set dst as zeros
#if CONFIG_AOM_HIGHBITDEPTH
if
(
xd
->
cur_buf
->
flags
&
YV12_FLAG_HIGHBITDEPTH
)
{
for
(
j
=
0
;
j
<
tx_blk_size
;
j
++
)
for
(
i
=
0
;
i
<
tx_blk_size
;
i
++
)
CONVERT_TO_SHORTPTR
(
dst
)[
j
*
dst_stride
+
i
]
=
0
;
}
else
{
#endif // CONFIG_AOM_HIGHBITDEPTH
for
(
j
=
0
;
j
<
tx_blk_size
;
j
++
)
for
(
i
=
0
;
i
<
tx_blk_size
;
i
++
)
dst
[
j
*
dst_stride
+
i
]
=
0
;
#if CONFIG_AOM_HIGHBITDEPTH
}
#endif // CONFIG_AOM_HIGHBITDEPTH
#endif // #if CONFIG_PVQ
#endif // CONFIG_PVQ
av1_inverse_transform_block
(
xd
,
dqcoeff
,
tx_type
,
tx_size
,
dst
,
dst_stride
,
*
eob
);
#if !CONFIG_PVQ
...
...
av1/encoder/rdopt.c
View file @
50910f60
...
...
@@ -1419,8 +1419,10 @@ static void dist_block(const AV1_COMP *cpi, MACROBLOCK *x, int plane,
*out_sse = this_sse >> shift;
} else {
const BLOCK_SIZE tx_bsize = txsize_to_bsize[tx_size];
#if !CONFIG_PVQ || CONFIG_DAALA_DIST
const int bsw = block_size_wide[tx_bsize];
const int bsh = block_size_high[tx_bsize];
#endif
const int src_stride = x->plane[plane].src.stride;
const int dst_stride = xd->plane[plane].dst.stride;
// Scale the transform block index to pixel unit.
...
...
@@ -1460,6 +1462,7 @@ static void dist_block(const AV1_COMP *cpi, MACROBLOCK *x, int plane,
DECLARE_ALIGNED(16, uint8_t, recon[MAX_TX_SQUARE]);
#endif // CONFIG_AOM_HIGHBITDEPTH
#if !CONFIG_PVQ
#if CONFIG_AOM_HIGHBITDEPTH
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
aom_highbd_convolve_copy(dst, dst_stride, recon, MAX_TX_SIZE, NULL, 0,
...
...
@@ -1467,16 +1470,10 @@ static void dist_block(const AV1_COMP *cpi, MACROBLOCK *x, int plane,
} else
#endif // CONFIG_AOM_HIGHBITDEPTH
{
#if !CONFIG_PVQ
aom_convolve_copy(dst, dst_stride, recon, MAX_TX_SIZE, NULL, 0, NULL, 0,
bsw, bsh);
#else
int i, j;
for (j = 0; j < bsh; j++)
for (i = 0; i < bsw; i++) recon[j * MAX_TX_SIZE + i] = 0;
#endif // !CONFIG_PVQ
}
#endif // !CONFIG_PVQ
const int block_raster_idx =
av1_block_index_to_raster_order(tx_size, 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