Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
50bb32ec
Commit
50bb32ec
authored
Oct 17, 2016
by
Jean-Marc Valin
Committed by
Yaowu Xu
Nov 02, 2016
Browse files
Splitting out 8->16 block copy code into copy_sb8_16()
No change in output. Change-Id: I4f0e37a879432e2647b3debe6a2c0c670a79dd6f
parent
39b0d2fb
Changes
1
Hide whitespace changes
Inline
Side-by-side
av1/common/dering.c
View file @
50bb32ec
...
...
@@ -113,6 +113,34 @@ void copy_blocks_16_8bit(uint8_t *dst, int dstride, int16_t *src,
}
}
/* TODO: Optimize this function for SSE. */
static
void
copy_sb8_16
(
AV1_COMMON
*
cm
,
int16_t
*
dst
,
int
dstride
,
const
uint8_t
*
src
,
int
src_voffset
,
int
src_hoffset
,
int
sstride
,
int
vsize
,
int
hsize
)
{
int
r
,
c
;
(
void
)
cm
;
#if CONFIG_AOM_HIGHBITDEPTH
if
(
cm
->
use_highbitdepth
)
{
const
uint16_t
*
base
=
&
CONVERT_TO_SHORTPTR
(
src
)[
src_voffset
*
sstride
+
src_hoffset
];
for
(
r
=
0
;
r
<
vsize
;
r
++
)
{
for
(
c
=
0
;
c
<
hsize
;
c
++
)
{
dst
[
r
*
dstride
+
c
]
=
base
[
r
*
sstride
+
c
];
}
}
}
else
#endif
{
const
uint8_t
*
base
=
&
src
[
src_voffset
*
sstride
+
src_hoffset
];
for
(
r
=
0
;
r
<
vsize
;
r
++
)
{
for
(
c
=
0
;
c
<
hsize
;
c
++
)
{
dst
[
r
*
dstride
+
c
]
=
base
[
r
*
sstride
+
c
];
}
}
}
}
void
av1_dering_frame
(
YV12_BUFFER_CONFIG
*
frame
,
AV1_COMMON
*
cm
,
MACROBLOCKD
*
xd
,
int
global_level
)
{
int
r
,
c
;
...
...
@@ -157,28 +185,10 @@ void av1_dering_frame(YV12_BUFFER_CONFIG *frame, AV1_COMMON *cm,
for
(
sbr
=
0
;
sbr
<
nvsb
;
sbr
++
)
{
last_sbc
=
-
1
;
for
(
pli
=
0
;
pli
<
nplanes
;
pli
++
)
{
#if CONFIG_AOM_HIGHBITDEPTH
if
(
cm
->
use_highbitdepth
)
{
for
(
r
=
0
;
r
<
OD_FILT_VBORDER
;
r
++
)
{
for
(
c
=
0
;
c
<
cm
->
mi_cols
<<
bsize
[
pli
];
c
++
)
{
curr_linebuf
[
pli
][
r
*
stride
+
c
]
=
CONVERT_TO_SHORTPTR
(
xd
->
plane
[
pli
].
dst
.
buf
)[((
MAX_MIB_SIZE
<<
bsize
[
pli
])
*
(
sbr
+
1
)
-
OD_FILT_VBORDER
+
r
)
*
xd
->
plane
[
pli
].
dst
.
stride
+
c
];
}
}
}
else
{
#endif
for
(
r
=
0
;
r
<
OD_FILT_VBORDER
;
r
++
)
{
for
(
c
=
0
;
c
<
cm
->
mi_cols
<<
bsize
[
pli
];
c
++
)
{
curr_linebuf
[
pli
][
r
*
stride
+
c
]
=
xd
->
plane
[
pli
].
dst
.
buf
[((
MAX_MIB_SIZE
<<
bsize
[
pli
])
*
(
sbr
+
1
)
-
OD_FILT_VBORDER
+
r
)
*
xd
->
plane
[
pli
].
dst
.
stride
+
c
];
}
}
#if CONFIG_AOM_HIGHBITDEPTH
}
#endif
copy_sb8_16
(
cm
,
curr_linebuf
[
pli
],
stride
,
xd
->
plane
[
pli
].
dst
.
buf
,
(
MAX_MIB_SIZE
<<
bsize
[
pli
])
*
(
sbr
+
1
)
-
OD_FILT_VBORDER
,
0
,
xd
->
plane
[
pli
].
dst
.
stride
,
OD_FILT_VBORDER
,
cm
->
mi_cols
<<
bsize
[
pli
]);
for
(
r
=
0
;
r
<
(
MAX_MIB_SIZE
<<
bsize
[
pli
])
+
OD_FILT_VBORDER
;
r
++
)
{
for
(
c
=
0
;
c
<
OD_FILT_HBORDER
;
c
++
)
{
colbuf
[
pli
][
r
][
c
]
=
OD_DERING_VERY_LARGE
;
...
...
@@ -218,28 +228,10 @@ void av1_dering_frame(YV12_BUFFER_CONFIG *frame, AV1_COMMON *cm,
coffset
=
sbc
*
MAX_MIB_SIZE
<<
bsize
[
pli
];
/* Copy in the pixels we need from the current superblock for
deringing.*/
#if CONFIG_AOM_HIGHBITDEPTH
if
(
cm
->
use_highbitdepth
)
{
for
(
r
=
0
;
r
<
rend
;
r
++
)
{
for
(
c
=
cstart
;
c
<
cend
;
++
c
)
{
src
[(
r
+
OD_FILT_VBORDER
)
*
OD_FILT_BSTRIDE
+
c
+
OD_FILT_HBORDER
]
=
CONVERT_TO_SHORTPTR
(
xd
->
plane
[
pli
].
dst
.
buf
)[
((
MAX_MIB_SIZE
<<
bsize
[
pli
])
*
sbr
+
r
)
*
xd
->
plane
[
pli
].
dst
.
stride
+
c
+
coffset
];
}
}
}
else
{
#endif
for
(
r
=
0
;
r
<
rend
;
r
++
)
{
for
(
c
=
cstart
;
c
<
cend
;
++
c
)
{
src
[(
r
+
OD_FILT_VBORDER
)
*
OD_FILT_BSTRIDE
+
c
+
OD_FILT_HBORDER
]
=
xd
->
plane
[
pli
].
dst
.
buf
[((
MAX_MIB_SIZE
<<
bsize
[
pli
])
*
sbr
+
r
)
*
xd
->
plane
[
pli
].
dst
.
stride
+
c
+
coffset
];
}
}
#if CONFIG_AOM_HIGHBITDEPTH
}
#endif
copy_sb8_16
(
cm
,
&
src
[
OD_FILT_VBORDER
*
OD_FILT_BSTRIDE
+
OD_FILT_HBORDER
+
cstart
],
OD_FILT_BSTRIDE
,
xd
->
plane
[
pli
].
dst
.
buf
,
(
MAX_MIB_SIZE
<<
bsize
[
pli
])
*
sbr
,
coffset
+
cstart
,
xd
->
plane
[
pli
].
dst
.
stride
,
rend
,
cend
-
cstart
);
if
(
sbc
==
nhsb
-
1
)
{
/* On the last superblock column, fill in the right border with
OD_DERING_VERY_LARGE to avoid filtering with the outside. */
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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