1/* 2 * Copyright (C) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15#include <string> 16#include <securec.h> 17#include "gtest/gtest.h" 18#include "native_avcodec_videoencoder.h" 19#include "native_averrors.h" 20#include "native_avcodec_base.h" 21#include "avcodec_codec_name.h" 22#include "native_avcapability.h" 23 24namespace { 25OH_AVCodec *venc_ = NULL; 26OH_AVCapability *cap = nullptr; 27OH_AVCapability *cap_hevc = nullptr; 28constexpr uint32_t CODEC_NAME_SIZE = 128; 29char g_codecName[CODEC_NAME_SIZE] = {}; 30char g_codecNameHEVC[CODEC_NAME_SIZE] = {}; 31OH_AVFormat *format; 32} // namespace 33namespace OHOS { 34namespace Media { 35class HwCapabilityNdkTest : public testing::Test { 36public: 37 static void SetUpTestCase(); 38 static void TearDownTestCase(); 39 void SetUp() override; 40 void TearDown() override; 41 void InputFunc(); 42 void OutputFunc(); 43 void Release(); 44 int32_t Stop(); 45}; 46} // namespace Media 47} // namespace OHOS 48 49using namespace std; 50using namespace OHOS; 51using namespace OHOS::Media; 52using namespace testing::ext; 53 54void HwCapabilityNdkTest::SetUpTestCase() 55{ 56 cap = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 57 const char *tmpCodecName = OH_AVCapability_GetName(cap); 58 if (memcpy_s(g_codecName, sizeof(g_codecName), tmpCodecName, strlen(tmpCodecName)) != 0) 59 cout << "memcpy failed" << endl; 60 cout << "codecname: " << g_codecName << endl; 61 cap_hevc = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, true, HARDWARE); 62 const char *tmpCodecNameHevc = OH_AVCapability_GetName(cap_hevc); 63 if (memcpy_s(g_codecNameHEVC, sizeof(g_codecNameHEVC), tmpCodecNameHevc, strlen(tmpCodecNameHevc)) != 0) 64 cout << "memcpy failed" << endl; 65 cout << "codecname_hevc: " << g_codecNameHEVC << endl; 66} 67void HwCapabilityNdkTest::TearDownTestCase() {} 68void HwCapabilityNdkTest::SetUp() {} 69void HwCapabilityNdkTest::TearDown() 70{ 71 if (venc_ != NULL) { 72 OH_VideoEncoder_Destroy(venc_); 73 venc_ = nullptr; 74 } 75 if (format != nullptr) { 76 OH_AVFormat_Destroy(format); 77 format = nullptr; 78 } 79} 80namespace { 81/** 82 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0010 83 * @tc.name : OH_AVCapability_IsFeatureSupported para error 84 * @tc.desc : api test 85 */ 86HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0010, TestSize.Level2) 87{ 88 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 89 ASSERT_NE(nullptr, capability); 90 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, static_cast<OH_AVCapabilityFeature>(4))); 91} 92 93/** 94 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0011 95 * @tc.name : 解码,是否支持分层编码 96 * @tc.desc : api test 97 */ 98HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0011, TestSize.Level2) 99{ 100 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE); 101 ASSERT_NE(nullptr, capability); 102 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 103} 104 105/** 106 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0012 107 * @tc.name : 编码,是否支持分层编码 108 * @tc.desc : api test 109 */ 110HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0012, TestSize.Level1) 111{ 112 if (!access("/system/lib64/media/", 0)) { 113 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 114 ASSERT_NE(nullptr, capability); 115 ASSERT_EQ(true, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 116 } else { 117 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 118 ASSERT_NE(nullptr, capability); 119 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 120 } 121} 122 123/** 124 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0013 125 * @tc.name : 解码,是否支持LTR 126 * @tc.desc : api test 127 */ 128HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0013, TestSize.Level2) 129{ 130 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE); 131 ASSERT_NE(nullptr, capability); 132 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 133} 134 135/** 136 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0014 137 * @tc.name : 编码,是否支持LTR 138 * @tc.desc : api test 139 */ 140HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0014, TestSize.Level1) 141{ 142 if (!access("/system/lib64/media/", 0)) { 143 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 144 ASSERT_NE(nullptr, capability); 145 ASSERT_EQ(true, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 146 } else { 147 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 148 ASSERT_NE(nullptr, capability); 149 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 150 } 151} 152 153/** 154 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0015 155 * @tc.name : 软解,是否支持低时延 156 * @tc.desc : api test 157 */ 158HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0015, TestSize.Level2) 159{ 160 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, SOFTWARE); 161 ASSERT_NE(nullptr, capability); 162 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 163} 164 165/** 166 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0016 167 * @tc.name : 硬解,是否支持低时延 168 * @tc.desc : api test 169 */ 170HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0016, TestSize.Level2) 171{ 172 if (!access("/system/lib64/media/", 0)) { 173 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory( 174 OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE); 175 ASSERT_NE(nullptr, capability); 176 ASSERT_EQ(true, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 177 } else { 178 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory( 179 OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE); 180 ASSERT_NE(nullptr, capability); 181 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 182 } 183} 184 185/** 186 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0017 187 * @tc.name : 编码,是否支持低时延 188 * @tc.desc : api test 189 */ 190HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0017, TestSize.Level1) 191{ 192 if (!access("/system/lib64/media/", 0)) { 193 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 194 ASSERT_NE(nullptr, capability); 195 ASSERT_EQ(true, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 196 } else { 197 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 198 ASSERT_NE(nullptr, capability); 199 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 200 } 201} 202 203/** 204 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0018 205 * @tc.name : OH_AVCapability_GetFeatureProperties para error 206 * @tc.desc : api test 207 */ 208HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0018, TestSize.Level2) 209{ 210 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 211 ASSERT_NE(nullptr, capability); 212 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, static_cast<OH_AVCapabilityFeature>(4))); 213 214 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, static_cast<OH_AVCapabilityFeature>(-1))); 215 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, static_cast<OH_AVCapabilityFeature>(100))); 216 217 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 218} 219 220/** 221 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0019 222 * @tc.name : 解码,查询分层编码的能力值 223 * @tc.desc : api test 224 */ 225HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0019, TestSize.Level2) 226{ 227 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE); 228 ASSERT_NE(nullptr, capability); 229 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 230} 231 232/** 233 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0020 234 * @tc.name : 编码,查询分层编码的能力值 235 * @tc.desc : api test 236 */ 237HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0020, TestSize.Level1) 238{ 239 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 240 ASSERT_NE(nullptr, capability); 241 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 242} 243 244/** 245 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0021 246 * @tc.name : 解码,查询LTR能力值 247 * @tc.desc : api test 248 */ 249HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0021, TestSize.Level2) 250{ 251 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE); 252 ASSERT_NE(nullptr, capability); 253 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 254} 255 256/** 257 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0022 258 * @tc.name : 编码,查询LTR的能力值 259 * @tc.desc : api test 260 */ 261HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0022, TestSize.Level1) 262{ 263 if (!access("/system/lib64/media/", 0)) { 264 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 265 ASSERT_NE(nullptr, capability); 266 format = OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE); 267 ASSERT_NE(nullptr, format); 268 int ltrnum = 0; 269 EXPECT_EQ(OH_AVFormat_GetIntValue( 270 format, OH_FEATURE_PROPERTY_KEY_VIDEO_ENCODER_MAX_LTR_FRAME_COUNT, <rnum), true); 271 EXPECT_EQ(ltrnum, 10); 272 } else { 273 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 274 ASSERT_NE(nullptr, capability); 275 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 276 } 277} 278 279/** 280 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0023 281 * @tc.name : 软解,查询低时延的能力值 282 * @tc.desc : api test 283 */ 284HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0023, TestSize.Level2) 285{ 286 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, SOFTWARE); 287 ASSERT_NE(nullptr, capability); 288 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_LOW_LATENCY)); 289} 290 291/** 292 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0024 293 * @tc.name : 硬解,查询低时延的能力值 294 * @tc.desc : api test 295 */ 296HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0024, TestSize.Level2) 297{ 298 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE); 299 ASSERT_NE(nullptr, capability); 300 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_LOW_LATENCY)); 301} 302 303/** 304 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0025 305 * @tc.name : 编码,查询低时延的能力值 306 * @tc.desc : api test 307 */ 308HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0025, TestSize.Level1) 309{ 310 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE); 311 ASSERT_NE(nullptr, capability); 312 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_LOW_LATENCY)); 313} 314 315/** 316 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0026 317 * @tc.name : 能力查询是否支持LTRH265 318 * @tc.desc : function test 319 */ 320HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0026, TestSize.Level1) 321{ 322 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, true, HARDWARE); 323 if (!access("/system/lib64/media/", 0)) { 324 ASSERT_EQ(true, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 325 } else { 326 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 327 } 328} 329 330/** 331 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0027 332 * @tc.name : 能力查询是否支持LTRH265 333 * @tc.desc : function test 334 */ 335HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0027, TestSize.Level1) 336{ 337 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE); 338 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 339} 340/** 341 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0028 342 * @tc.name : 能力查询是否支持低时延H265 343 * @tc.desc : function test 344 */ 345HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0028, TestSize.Level1) 346{ 347 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, true, HARDWARE); 348 if (!access("/system/lib64/media/", 0)) { 349 ASSERT_EQ(true, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 350 } else { 351 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 352 } 353} 354 355/** 356 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0029 357 * @tc.name : 能力查询是否支持低时延H265 358 * @tc.desc : function test 359 */ 360HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0029, TestSize.Level1) 361{ 362 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE); 363 if (!access("/system/lib64/media/", 0)) { 364 ASSERT_EQ(true, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 365 } else { 366 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_LOW_LATENCY)); 367 } 368} 369/** 370 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0030 371 * @tc.name : 能力查询是否支持分层编码H265 372 * @tc.desc : function test 373 */ 374HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0030, TestSize.Level1) 375{ 376 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, true, HARDWARE); 377 if (!access("/system/lib64/media/", 0)) { 378 ASSERT_EQ(true, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 379 } else { 380 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 381 } 382} 383 384/** 385 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0031 386 * @tc.name : 能力查询是否支持分层编码H265 387 * @tc.desc : function test 388 */ 389HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0031, TestSize.Level1) 390{ 391 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE); 392 ASSERT_EQ(false, OH_AVCapability_IsFeatureSupported(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 393} 394/** 395 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0032 396 * @tc.name : 编码,查询低时延的能力值H265 397 * @tc.desc : api test 398 */ 399HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0032, TestSize.Level1) 400{ 401 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, true, HARDWARE); 402 ASSERT_NE(nullptr, capability); 403 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_LOW_LATENCY)); 404} 405/** 406 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0033 407 * @tc.name : 解码,查询低时延的能力值H265 408 * @tc.desc : api test 409 */ 410HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0033, TestSize.Level1) 411{ 412 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE); 413 ASSERT_NE(nullptr, capability); 414 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_LOW_LATENCY)); 415} 416/** 417 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0034 418 * @tc.name : 解码,查询分层编码的能力值H265 419 * @tc.desc : api test 420 */ 421HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0034, TestSize.Level2) 422{ 423 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE); 424 ASSERT_NE(nullptr, capability); 425 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 426} 427 428/** 429 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0035 430 * @tc.name : 编码,查询分层编码的能力值H265 431 * @tc.desc : api test 432 */ 433HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0035, TestSize.Level1) 434{ 435 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, true, HARDWARE); 436 ASSERT_NE(nullptr, capability); 437 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_TEMPORAL_SCALABILITY)); 438} 439/** 440 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0036 441 * @tc.name : 解码,查询LTR能力值H265 442 * @tc.desc : api test 443 */ 444HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0036, TestSize.Level2) 445{ 446 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE); 447 ASSERT_NE(nullptr, capability); 448 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 449} 450 451/** 452 * @tc.number : VIDEO_TEMPORAL_ENCODE_API_0037 453 * @tc.name : 编码,查询LTR的能力值H265 454 * @tc.desc : api test 455 */ 456HWTEST_F(HwCapabilityNdkTest, VIDEO_TEMPORAL_ENCODE_API_0037, TestSize.Level1) 457{ 458 if (!access("/system/lib64/media/", 0)) { 459 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, 460 true, HARDWARE); 461 ASSERT_NE(nullptr, capability); 462 format = OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE); 463 ASSERT_NE(nullptr, format); 464 int ltrnum = 0; 465 EXPECT_EQ(OH_AVFormat_GetIntValue( 466 format, OH_FEATURE_PROPERTY_KEY_VIDEO_ENCODER_MAX_LTR_FRAME_COUNT, <rnum), true); 467 EXPECT_EQ(ltrnum, 10); 468 } else { 469 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, 470 true, HARDWARE); 471 ASSERT_NE(nullptr, capability); 472 ASSERT_EQ(nullptr, OH_AVCapability_GetFeatureProperties(capability, VIDEO_ENCODER_LONG_TERM_REFERENCE)); 473 } 474} 475} // namespace