Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
06b47089
Commit
06b47089
authored
Oct 31, 2017
by
Luc Trudeau
Committed by
Nathan Egge
Nov 01, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[CFL] 4:4:0 Support
Change-Id: Ic5cf4c8393a00810700e42a162fbb36a62d9b56f
parent
2b9ec2ea
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
10 deletions
+52
-10
av1/common/cfl.c
av1/common/cfl.c
+52
-10
No files found.
av1/common/cfl.c
View file @
06b47089
...
...
@@ -14,14 +14,13 @@
#include "av1/common/onyxc_int.h"
void
cfl_init
(
CFL_CTX
*
cfl
,
AV1_COMMON
*
cm
)
{
if
(
!
((
cm
->
subsampling_x
==
0
&&
cm
->
subsampling_y
==
0
)
||
(
cm
->
subsampling_x
==
1
&&
cm
->
subsampling_y
==
1
)
||
(
cm
->
subsampling_x
==
1
&&
cm
->
subsampling_y
==
0
)))
{
aom_internal_error
(
&
cm
->
error
,
AOM_CODEC_UNSUP_BITSTREAM
,
"Only 4:4:4, 4:2:2 and 4:2:0 are currently supported by CfL, %d %d "
"subsampling is not supported.
\n
"
,
cm
->
subsampling_x
,
cm
->
subsampling_y
);
if
((
cm
->
subsampling_x
!=
0
&&
cm
->
subsampling_x
!=
1
)
||
(
cm
->
subsampling_y
!=
0
&&
cm
->
subsampling_y
!=
1
))
{
aom_internal_error
(
&
cm
->
error
,
AOM_CODEC_UNSUP_BITSTREAM
,
"Only 4:4:4, 4:4:0, 4:2:2 and 4:2:0 are currently "
"supported by CfL, %d %d "
"subsampling is not supported.
\n
"
,
cm
->
subsampling_x
,
cm
->
subsampling_y
);
}
memset
(
&
cfl
->
pred_buf_q3
,
0
,
sizeof
(
cfl
->
pred_buf_q3
));
cfl
->
subsampling_x
=
cm
->
subsampling_x
;
...
...
@@ -341,6 +340,18 @@ static void cfl_luma_subsampling_422_lbd(const uint8_t *input, int input_stride,
}
}
static
void
cfl_luma_subsampling_440_lbd
(
const
uint8_t
*
input
,
int
input_stride
,
int16_t
*
output_q3
,
int
width
,
int
height
)
{
for
(
int
j
=
0
;
j
<
height
;
j
++
)
{
for
(
int
i
=
0
;
i
<
width
;
i
++
)
{
output_q3
[
i
]
=
(
input
[
i
]
+
input
[
i
+
input_stride
])
<<
2
;
}
input
+=
input_stride
<<
1
;
output_q3
+=
MAX_SB_SIZE
;
}
}
static
void
cfl_luma_subsampling_444_lbd
(
const
uint8_t
*
input
,
int
input_stride
,
int16_t
*
output_q3
,
int
width
,
int
height
)
{
...
...
@@ -382,6 +393,19 @@ static void cfl_luma_subsampling_422_hbd(const uint16_t *input,
}
}
static
void
cfl_luma_subsampling_440_hbd
(
const
uint16_t
*
input
,
int
input_stride
,
int16_t
*
output_q3
,
int
width
,
int
height
)
{
for
(
int
j
=
0
;
j
<
height
;
j
++
)
{
for
(
int
i
=
0
;
i
<
width
;
i
++
)
{
int
top
=
i
<<
1
;
output_q3
[
i
]
=
(
input
[
top
]
+
input
[
top
+
input_stride
])
<<
2
;
}
input
+=
input_stride
<<
1
;
output_q3
+=
MAX_SB_SIZE
;
}
}
static
void
cfl_luma_subsampling_444_hbd
(
const
uint16_t
*
input
,
int
input_stride
,
int16_t
*
output_q3
,
int
width
,
int
height
)
{
...
...
@@ -425,6 +449,21 @@ static void cfl_luma_subsampling_422(const uint8_t *input, int input_stride,
cfl_luma_subsampling_422_lbd
(
input
,
input_stride
,
output_q3
,
width
,
height
);
}
static
void
cfl_luma_subsampling_440
(
const
uint8_t
*
input
,
int
input_stride
,
int16_t
*
output_q3
,
int
width
,
int
height
,
int
use_hbd
)
{
#if CONFIG_HIGHBITDEPTH
if
(
use_hbd
)
{
const
uint16_t
*
input_16
=
CONVERT_TO_SHORTPTR
(
input
);
cfl_luma_subsampling_440_hbd
(
input_16
,
input_stride
,
output_q3
,
width
,
height
);
return
;
}
#endif // CONFIG_HIGHBITDEPTH
(
void
)
use_hbd
;
cfl_luma_subsampling_440_lbd
(
input
,
input_stride
,
output_q3
,
width
,
height
);
}
static
void
cfl_luma_subsampling_444
(
const
uint8_t
*
input
,
int
input_stride
,
int16_t
*
output_q3
,
int
width
,
int
height
,
int
use_hbd
)
{
...
...
@@ -482,10 +521,13 @@ static INLINE void cfl_store(CFL_CTX *cfl, const uint8_t *input,
}
else
if
(
sub_y
==
0
&&
sub_x
==
1
)
{
cfl_luma_subsampling_422
(
input
,
input_stride
,
pred_buf_q3
,
store_width
,
store_height
,
use_hbd
);
}
else
if
(
sub_y
==
1
&&
sub_x
==
0
)
{
cfl_luma_subsampling_440
(
input
,
input_stride
,
pred_buf_q3
,
store_width
,
store_height
,
use_hbd
);
}
else
{
fprintf
(
stderr
,
"Only 4:4:4, 4:2:2 and 4:2:0 are currently supported by
CfL, %d %d
"
"subsampling is not supported.
\n
"
,
"Only 4:4:4,
4:4:0,
4:2:2 and 4:2:0 are currently supported by "
"
CfL, %d %d
subsampling is not supported.
\n
"
,
sub_x
,
sub_y
);
abort
();
}
...
...
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