Correctly report "Unsupported bitstream profile"
For vp9 decoder build without profile 2 and profile 3 support, this commit changes to report error "Unsupported bitstream profile" for input streams in profile 2 or 3, rather than other misleading error information. In addition, one of the invalid files in unit tests is actually coded profile 2, this commit makes it tested only when the decoder is built with vp9-highbitdepth. This fixes issue #1028. Change-Id: I8b6c1210787c8f89c703a546687dcf973ac20fc0
This commit is contained in:
@@ -129,8 +129,13 @@ TEST(DecodeAPI, Vp9InvalidDecode) {
|
|||||||
vpx_codec_ctx_t dec;
|
vpx_codec_ctx_t dec;
|
||||||
EXPECT_EQ(VPX_CODEC_OK, vpx_codec_dec_init(&dec, codec, NULL, 0));
|
EXPECT_EQ(VPX_CODEC_OK, vpx_codec_dec_init(&dec, codec, NULL, 0));
|
||||||
const uint32_t frame_size = static_cast<uint32_t>(video.frame_size());
|
const uint32_t frame_size = static_cast<uint32_t>(video.frame_size());
|
||||||
|
#if CONFIG_VP9_HIGHBITDEPTH
|
||||||
EXPECT_EQ(VPX_CODEC_MEM_ERROR,
|
EXPECT_EQ(VPX_CODEC_MEM_ERROR,
|
||||||
vpx_codec_decode(&dec, video.cxdata(), frame_size, NULL, 0));
|
vpx_codec_decode(&dec, video.cxdata(), frame_size, NULL, 0));
|
||||||
|
#else
|
||||||
|
EXPECT_EQ(VPX_CODEC_UNSUP_BITSTREAM,
|
||||||
|
vpx_codec_decode(&dec, video.cxdata(), frame_size, NULL, 0));
|
||||||
|
#endif
|
||||||
vpx_codec_iter_t iter = NULL;
|
vpx_codec_iter_t iter = NULL;
|
||||||
EXPECT_EQ(NULL, vpx_codec_get_frame(&dec, &iter));
|
EXPECT_EQ(NULL, vpx_codec_get_frame(&dec, &iter));
|
||||||
|
|
||||||
|
@@ -112,7 +112,9 @@ TEST_P(InvalidFileTest, ReturnCode) {
|
|||||||
|
|
||||||
const DecodeParam kVP9InvalidFileTests[] = {
|
const DecodeParam kVP9InvalidFileTests[] = {
|
||||||
{1, "invalid-vp90-02-v2.webm"},
|
{1, "invalid-vp90-02-v2.webm"},
|
||||||
|
#if CONFIG_VP9_HIGHBITDEPTH
|
||||||
{1, "invalid-vp90-2-00-quantizer-00.webm.ivf.s5861_r01-05_b6-.v2.ivf"},
|
{1, "invalid-vp90-2-00-quantizer-00.webm.ivf.s5861_r01-05_b6-.v2.ivf"},
|
||||||
|
#endif
|
||||||
{1, "invalid-vp90-03-v3.webm"},
|
{1, "invalid-vp90-03-v3.webm"},
|
||||||
{1, "invalid-vp90-2-00-quantizer-11.webm.ivf.s52984_r01-05_b6-.ivf"},
|
{1, "invalid-vp90-2-00-quantizer-11.webm.ivf.s52984_r01-05_b6-.ivf"},
|
||||||
{1, "invalid-vp90-2-00-quantizer-11.webm.ivf.s52984_r01-05_b6-z.ivf"},
|
{1, "invalid-vp90-2-00-quantizer-11.webm.ivf.s52984_r01-05_b6-z.ivf"},
|
||||||
|
@@ -1816,10 +1816,15 @@ static size_t read_uncompressed_header(VP9Decoder *pbi,
|
|||||||
"Invalid frame marker");
|
"Invalid frame marker");
|
||||||
|
|
||||||
cm->profile = vp9_read_profile(rb);
|
cm->profile = vp9_read_profile(rb);
|
||||||
|
#if CONFIG_VP9_HIGHBITDEPTH
|
||||||
if (cm->profile >= MAX_PROFILES)
|
if (cm->profile >= MAX_PROFILES)
|
||||||
vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
|
vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
|
||||||
"Unsupported bitstream profile");
|
"Unsupported bitstream profile");
|
||||||
|
#else
|
||||||
|
if (cm->profile >= PROFILE_2)
|
||||||
|
vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
|
||||||
|
"Unsupported bitstream profile");
|
||||||
|
#endif
|
||||||
|
|
||||||
cm->show_existing_frame = vp9_rb_read_bit(rb);
|
cm->show_existing_frame = vp9_rb_read_bit(rb);
|
||||||
if (cm->show_existing_frame) {
|
if (cm->show_existing_frame) {
|
||||||
|
Reference in New Issue
Block a user