From 7c0c62df1d25e76c52afb411ad342a82ed5d1ff0 Mon Sep 17 00:00:00 2001 From: Yaowu Xu Date: Thu, 16 Jul 2015 15:40:22 -0700 Subject: [PATCH] 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 --- test/decode_api_test.cc | 5 +++++ test/invalid_file_test.cc | 2 ++ vp9/decoder/vp9_decodeframe.c | 7 ++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/test/decode_api_test.cc b/test/decode_api_test.cc index 42ac13f31..32be1f411 100644 --- a/test/decode_api_test.cc +++ b/test/decode_api_test.cc @@ -129,8 +129,13 @@ TEST(DecodeAPI, Vp9InvalidDecode) { vpx_codec_ctx_t dec; EXPECT_EQ(VPX_CODEC_OK, vpx_codec_dec_init(&dec, codec, NULL, 0)); const uint32_t frame_size = static_cast(video.frame_size()); +#if CONFIG_VP9_HIGHBITDEPTH EXPECT_EQ(VPX_CODEC_MEM_ERROR, 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; EXPECT_EQ(NULL, vpx_codec_get_frame(&dec, &iter)); diff --git a/test/invalid_file_test.cc b/test/invalid_file_test.cc index 2cbbc6b0e..1b5ef5c87 100644 --- a/test/invalid_file_test.cc +++ b/test/invalid_file_test.cc @@ -112,7 +112,9 @@ TEST_P(InvalidFileTest, ReturnCode) { const DecodeParam kVP9InvalidFileTests[] = { {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"}, +#endif {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-z.ivf"}, diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index 8f7457e2f..b9983f410 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -1816,10 +1816,15 @@ static size_t read_uncompressed_header(VP9Decoder *pbi, "Invalid frame marker"); cm->profile = vp9_read_profile(rb); - +#if CONFIG_VP9_HIGHBITDEPTH if (cm->profile >= MAX_PROFILES) vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM, "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); if (cm->show_existing_frame) { -- 2.40.0