summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/decode_api_test.cc17
-rw-r--r--test/encode_api_test.cc17
-rw-r--r--vp9/vp9_dx_iface.c5
-rw-r--r--vpx/vpx_codec.h6
-rw-r--r--vpx/vpx_encoder.h4
5 files changed, 43 insertions, 6 deletions
diff --git a/test/decode_api_test.cc b/test/decode_api_test.cc
index 593637780..4167cf3e0 100644
--- a/test/decode_api_test.cc
+++ b/test/decode_api_test.cc
@@ -172,4 +172,21 @@ TEST(DecodeAPI, Vp9PeekSI) {
}
#endif // CONFIG_VP9_DECODER
+TEST(DecodeAPI, HighBitDepthCapability) {
+// VP8 should not claim VP9 HBD as a capability.
+#if CONFIG_VP8_DECODER
+ const vpx_codec_caps_t vp8_caps = vpx_codec_get_caps(&vpx_codec_vp8_dx_algo);
+ EXPECT_EQ(vp8_caps & VPX_CODEC_CAP_HIGHBITDEPTH, 0);
+#endif
+
+#if CONFIG_VP9_DECODER
+ const vpx_codec_caps_t vp9_caps = vpx_codec_get_caps(&vpx_codec_vp9_dx_algo);
+#if CONFIG_VP9_HIGHBITDEPTH
+ EXPECT_EQ(vp9_caps & VPX_CODEC_CAP_HIGHBITDEPTH, VPX_CODEC_CAP_HIGHBITDEPTH);
+#else
+ EXPECT_EQ(vp9_caps & VPX_CODEC_CAP_HIGHBITDEPTH, 0);
+#endif
+#endif
+}
+
} // namespace
diff --git a/test/encode_api_test.cc b/test/encode_api_test.cc
index 419e38506..f685493aa 100644
--- a/test/encode_api_test.cc
+++ b/test/encode_api_test.cc
@@ -62,4 +62,21 @@ TEST(EncodeAPI, InvalidParams) {
}
}
+TEST(EncodeAPI, HighBitDepthCapability) {
+// VP8 should not claim VP9 HBD as a capability.
+#if CONFIG_VP8_ENCODER
+ const vpx_codec_caps_t vp8_caps = vpx_codec_get_caps(&vpx_codec_vp8_cx_algo);
+ EXPECT_EQ(vp8_caps & VPX_CODEC_CAP_HIGHBITDEPTH, 0);
+#endif
+
+#if CONFIG_VP9_ENCODER
+ const vpx_codec_caps_t vp9_caps = vpx_codec_get_caps(&vpx_codec_vp9_cx_algo);
+#if CONFIG_VP9_HIGHBITDEPTH
+ EXPECT_EQ(vp9_caps & VPX_CODEC_CAP_HIGHBITDEPTH, VPX_CODEC_CAP_HIGHBITDEPTH);
+#else
+ EXPECT_EQ(vp9_caps & VPX_CODEC_CAP_HIGHBITDEPTH, 0);
+#endif
+#endif
+}
+
} // namespace
diff --git a/vp9/vp9_dx_iface.c b/vp9/vp9_dx_iface.c
index 3d8968896..3c68003a0 100644
--- a/vp9/vp9_dx_iface.c
+++ b/vp9/vp9_dx_iface.c
@@ -1053,7 +1053,10 @@ static vpx_codec_ctrl_fn_map_t decoder_ctrl_maps[] = {
CODEC_INTERFACE(vpx_codec_vp9_dx) = {
"WebM Project VP9 Decoder" VERSION_STRING,
VPX_CODEC_INTERNAL_ABI_VERSION,
- VPX_CODEC_CAP_DECODER | VP9_CAP_POSTPROC |
+#if CONFIG_VP9_HIGHBITDEPTH
+ VPX_CODEC_CAP_HIGHBITDEPTH |
+#endif
+ VPX_CODEC_CAP_DECODER | VP9_CAP_POSTPROC |
VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER, // vpx_codec_caps_t
decoder_init, // vpx_codec_init_fn_t
decoder_destroy, // vpx_codec_destroy_fn_t
diff --git a/vpx/vpx_codec.h b/vpx/vpx_codec.h
index fe75d2387..69f3c155b 100644
--- a/vpx/vpx_codec.h
+++ b/vpx/vpx_codec.h
@@ -83,7 +83,7 @@ extern "C" {
* types, removing or reassigning enums, adding/removing/rearranging
* fields to structures
*/
-#define VPX_CODEC_ABI_VERSION (3 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/
+#define VPX_CODEC_ABI_VERSION (4 + VPX_IMAGE_ABI_VERSION) /**<\hideinitializer*/
/*!\brief Algorithm return codes */
typedef enum {
@@ -152,6 +152,10 @@ typedef long vpx_codec_caps_t;
#define VPX_CODEC_CAP_DECODER 0x1 /**< Is a decoder */
#define VPX_CODEC_CAP_ENCODER 0x2 /**< Is an encoder */
+/*! Can support images at greater than 8 bitdepth.
+ */
+#define VPX_CODEC_CAP_HIGHBITDEPTH 0x4
+
/*! \brief Initialization-time Feature Enabling
*
* Certain codec features must be known at initialization time, to allow for
diff --git a/vpx/vpx_encoder.h b/vpx/vpx_encoder.h
index 28fcd5f99..c915ed671 100644
--- a/vpx/vpx_encoder.h
+++ b/vpx/vpx_encoder.h
@@ -83,10 +83,6 @@ extern "C" {
*/
#define VPX_CODEC_CAP_OUTPUT_PARTITION 0x20000
-/*! Can support input images at greater than 8 bitdepth.
- */
-#define VPX_CODEC_CAP_HIGHBITDEPTH 0x40000
-
/*! \brief Initialization-time Feature Enabling
*
* Certain codec features must be known at initialization time, to allow