1
2 /*
3 * Copyright (C) 2024 Huawei Device Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 #include <iostream>
17 #include <cstdio>
18 #include <string>
19
20 #include "gtest/gtest.h"
21 #include "avcodec_common.h"
22 #include "meta/format.h"
23 #include "avcodec_video_encoder.h"
24 #include "videoenc_inner_sample.h"
25 #include "native_avcapability.h"
26 #include "avcodec_info.h"
27 #include "avcodec_list.h"
28
29 using namespace std;
30 using namespace OHOS;
31 using namespace OHOS::MediaAVCodec;
32 using namespace testing::ext;
33
34 namespace {
35 class HwEncInnerFuncNdkTest : public testing::Test {
36 public:
37 // SetUpTestCase: Called before all test cases
38 static void SetUpTestCase(void);
39 // TearDownTestCase: Called after all test case
40 static void TearDownTestCase(void);
41 // SetUp: Called before each test cases
42 void SetUp() override;
43 // TearDown: Called after each test cases
44 void TearDown() override;
45 };
46
47 std::string g_codecMime = "video/avc";
48 std::string g_codecName = "";
49 std::string g_codecMimeHevc = "video/hevc";
50 std::string g_codecNameHevc = "";
51 OH_AVCapability *cap = nullptr;
52
53 fileInfo file_640_480_rgba{"/data/test/media/640_480.rgba", GRAPHIC_PIXEL_FMT_RGBA_8888, 640, 480 };
54 fileInfo file_1280_536_nv21{"/data/test/media/1280_536_nv21.yuv", GRAPHIC_PIXEL_FMT_YCRCB_420_SP, 1280, 536 };
55 fileInfo file_1280_720_nv12{"/data/test/media/1280_720_nv12.yuv", GRAPHIC_PIXEL_FMT_YCBCR_420_SP, 1280, 720 };
56 fileInfo file_1920_816_rgba{"/data/test/media/1920_816.rgba", GRAPHIC_PIXEL_FMT_RGBA_8888, 1920, 816 };
57 fileInfo file_1920_1080_nv21{"/data/test/media/1920_1080_nv21.yuv", GRAPHIC_PIXEL_FMT_YCRCB_420_SP, 1920, 1080 };
58 fileInfo file_3840_2160_nv12{"/data/test/media/3840_2160_nv12.yuv", GRAPHIC_PIXEL_FMT_YCBCR_420_SP, 3840, 2160 };
59 fileInfo file_1280_720_nv12_10bit{"/data/test/media/1280_720_nv12_10bit.yuv", GRAPHIC_PIXEL_FMT_YCBCR_P010, 1280, 720 };
60 fileInfo file_1080_1920_nv12{"/data/test/media/1080_1920_nv12.yuv", GRAPHIC_PIXEL_FMT_YCBCR_420_SP, 1080, 1920 };
61 fileInfo file_1280_1280_nv12{"/data/test/media/1280_1280_nv12.yuv", GRAPHIC_PIXEL_FMT_YCBCR_420_SP, 1280, 1280 };
62
SetUpTestCase()63 void HwEncInnerFuncNdkTest::SetUpTestCase()
64 {
65 cap = OH_AVCodec_GetCapabilityByCategory(g_codecMime.c_str(), true, HARDWARE);
66 const char *tmpCodecName = OH_AVCapability_GetName(cap);
67 g_codecName = tmpCodecName;
68 cout << "g_codecName: " << g_codecName << endl;
69
70 OH_AVCapability *capHevc = OH_AVCodec_GetCapabilityByCategory(g_codecMimeHevc.c_str(), true, HARDWARE);
71 const char *tmpCodecNameHevc = OH_AVCapability_GetName(capHevc);
72 g_codecNameHevc = tmpCodecNameHevc;
73 cout << "g_codecNameHevc: " << g_codecNameHevc << endl;
74 }
75
TearDownTestCase()76 void HwEncInnerFuncNdkTest::TearDownTestCase() {}
77
SetUp()78 void HwEncInnerFuncNdkTest::SetUp()
79 {
80 }
81
TearDown()82 void HwEncInnerFuncNdkTest::TearDown()
83 {
84 }
85 } // namespace
86
87 namespace {
IsSupportRgba1010102Format()88 bool IsSupportRgba1010102Format()
89 {
90 const int32_t *pixelFormat = nullptr;
91 uint32_t pixelFormatNum = 0;
92 OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, true, HARDWARE);
93 if (capability == nullptr) {
94 return false;
95 }
96 int32_t ret = OH_AVCapability_GetVideoSupportedPixelFormats(capability, &pixelFormat, &pixelFormatNum);
97 if (pixelFormat == nullptr || pixelFormatNum == 0 || ret != AV_ERR_OK) {
98 return false;
99 }
100 for (int i = 0; i < pixelFormatNum; i++) {
101 if (pixelFormat[i] == static_cast<int32_t>(AV_PIXEL_FORMAT_RGBA1010102)) {
102 return true;
103 }
104 }
105 return false;
106 }
107 /**
108 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0100
109 * @tc.name : repeat surface h264 encode send eos,max count -1,frame after 73ms
110 * @tc.desc : function test
111 */
112 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0100, TestSize.Level0)
113 {
114 if (cap != nullptr) {
115 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
116 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
117 vEncInnerSample->DEFAULT_WIDTH = 1280;
118 vEncInnerSample->DEFAULT_HEIGHT = 720;
119 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
120 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0100.h264";
121 vEncInnerSample->surfaceInput = true;
122 vEncInnerSample->enableRepeat = true;
123 vEncInnerSample->enableSeekEos = true;
124 vEncInnerSample->setMaxCount = true;
125 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
126 vEncInnerSample->DEFAULT_MAX_COUNT = -1;
127 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
128 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
129 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
130 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
131 vEncInnerSample->WaitForEOS();
132 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
133 cout << "outCount: " << vEncInnerSample->outCount << endl;
134 EXPECT_LE(vEncInnerSample->outCount, 27);
135 EXPECT_GE(vEncInnerSample->outCount, 23);
136 }
137 }
138
139 /**
140 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0200
141 * @tc.name : repeat surface h264 encode send eos,max count 2,frame after 73ms
142 * @tc.desc : function test
143 */
144 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0200, TestSize.Level0)
145 {
146 if (cap != nullptr) {
147 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
148 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
149 vEncInnerSample->DEFAULT_WIDTH = 1280;
150 vEncInnerSample->DEFAULT_HEIGHT = 720;
151 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
152 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0200.h264";
153 vEncInnerSample->surfaceInput = true;
154 vEncInnerSample->enableSeekEos = true;
155 vEncInnerSample->enableRepeat = true;
156 vEncInnerSample->setMaxCount = true;
157 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
158 vEncInnerSample->DEFAULT_MAX_COUNT = 2;
159 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
160 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
161 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
162 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
163 vEncInnerSample->WaitForEOS();
164 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
165 cout << "outCount: " << vEncInnerSample->outCount << endl;
166 ASSERT_EQ(17, vEncInnerSample->outCount);
167 }
168 }
169
170 /**
171 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0300
172 * @tc.name : repeat surface h264 encode send frame,max count -1,frame after 73ms
173 * @tc.desc : function test
174 */
175 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0300, TestSize.Level0)
176 {
177 if (cap != nullptr) {
178 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
179 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
180 vEncInnerSample->DEFAULT_WIDTH = 1280;
181 vEncInnerSample->DEFAULT_HEIGHT = 720;
182 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
183 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0300.h264";
184 vEncInnerSample->surfaceInput = true;
185 vEncInnerSample->enableRepeat = true;
186 vEncInnerSample->setMaxCount = true;
187 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
188 vEncInnerSample->DEFAULT_MAX_COUNT = -1;
189 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
190 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
191 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
192 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
193 vEncInnerSample->WaitForEOS();
194 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
195 cout << "outCount: " << vEncInnerSample->outCount << endl;
196 EXPECT_LE(vEncInnerSample->outCount, 37);
197 EXPECT_GE(vEncInnerSample->outCount, 33);
198 }
199 }
200
201 /**
202 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0400
203 * @tc.name : repeat surface h264 encode send frame,max count 1,frame after 73ms
204 * @tc.desc : function test
205 */
206 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0400, TestSize.Level0)
207 {
208 if (cap != nullptr) {
209 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
210 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
211 vEncInnerSample->DEFAULT_WIDTH = 1280;
212 vEncInnerSample->DEFAULT_HEIGHT = 720;
213 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
214 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0400.h264";
215 vEncInnerSample->surfaceInput = true;
216 vEncInnerSample->enableRepeat = true;
217 vEncInnerSample->setMaxCount = true;
218 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
219 vEncInnerSample->DEFAULT_MAX_COUNT = 1;
220 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
221 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
222 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
223 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
224 vEncInnerSample->WaitForEOS();
225 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
226 cout << "outCount: " << vEncInnerSample->outCount << endl;
227 ASSERT_EQ(26, vEncInnerSample->outCount);
228 }
229 }
230
231 /**
232 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0500
233 * @tc.name : repeat surface h265 encode send eos,max count -1,frame after 73ms
234 * @tc.desc : function test
235 */
236 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0500, TestSize.Level0)
237 {
238 if (cap != nullptr) {
239 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
240 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
241 vEncInnerSample->DEFAULT_WIDTH = 1280;
242 vEncInnerSample->DEFAULT_HEIGHT = 720;
243 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
244 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0500.h264";
245 vEncInnerSample->surfaceInput = true;
246 vEncInnerSample->enableRepeat = true;
247 vEncInnerSample->enableSeekEos = true;
248 vEncInnerSample->setMaxCount = true;
249 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
250 vEncInnerSample->DEFAULT_MAX_COUNT = -1;
251 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
252 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
253 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
254 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
255 vEncInnerSample->WaitForEOS();
256 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
257 cout << "outCount: " << vEncInnerSample->outCount << endl;
258 EXPECT_LE(vEncInnerSample->outCount, 27);
259 EXPECT_GE(vEncInnerSample->outCount, 23);
260 }
261 }
262
263 /**
264 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0600
265 * @tc.name : repeat surface h265 encode send eos,max count 2,frame after 73ms
266 * @tc.desc : function test
267 */
268 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0600, TestSize.Level0)
269 {
270 if (cap != nullptr) {
271 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
272 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
273 vEncInnerSample->DEFAULT_WIDTH = 1280;
274 vEncInnerSample->DEFAULT_HEIGHT = 720;
275 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
276 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0600.h264";
277 vEncInnerSample->surfaceInput = true;
278 vEncInnerSample->enableSeekEos = true;
279 vEncInnerSample->enableRepeat = true;
280 vEncInnerSample->setMaxCount = true;
281 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
282 vEncInnerSample->DEFAULT_MAX_COUNT = 2;
283 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
284 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
285 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
286 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
287 vEncInnerSample->WaitForEOS();
288 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
289 cout << "outCount: " << vEncInnerSample->outCount << endl;
290 ASSERT_EQ(17, vEncInnerSample->outCount);
291 }
292 }
293
294 /**
295 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0700
296 * @tc.name : repeat surface h265 encode send frame,max count -1,frame after 73ms
297 * @tc.desc : function test
298 */
299 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0700, TestSize.Level0)
300 {
301 if (cap != nullptr) {
302 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
303 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
304 vEncInnerSample->DEFAULT_WIDTH = 1280;
305 vEncInnerSample->DEFAULT_HEIGHT = 720;
306 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
307 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0700.h264";
308 vEncInnerSample->surfaceInput = true;
309 vEncInnerSample->enableRepeat = true;
310 vEncInnerSample->setMaxCount = true;
311 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
312 vEncInnerSample->DEFAULT_MAX_COUNT = -1;
313 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
314 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
315 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
316 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
317 vEncInnerSample->WaitForEOS();
318 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
319 cout << "outCount: " << vEncInnerSample->outCount << endl;
320 EXPECT_LE(vEncInnerSample->outCount, 37);
321 EXPECT_GE(vEncInnerSample->outCount, 33);
322 }
323 }
324
325 /**
326 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0800
327 * @tc.name : repeat surface h265 encode send frame,max count 1,frame after 73ms
328 * @tc.desc : function test
329 */
330 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0800, TestSize.Level0)
331 {
332 if (cap != nullptr) {
333 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
334 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
335 vEncInnerSample->DEFAULT_WIDTH = 1280;
336 vEncInnerSample->DEFAULT_HEIGHT = 720;
337 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
338 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0800.h264";
339 vEncInnerSample->surfaceInput = true;
340 vEncInnerSample->enableRepeat = true;
341 vEncInnerSample->setMaxCount = true;
342 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
343 vEncInnerSample->DEFAULT_MAX_COUNT = 1;
344 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
345 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
346 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
347 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
348 vEncInnerSample->WaitForEOS();
349 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
350 cout << "outCount: " << vEncInnerSample->outCount << endl;
351 ASSERT_EQ(26, vEncInnerSample->outCount);
352 }
353 }
354
355 /**
356 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_0900
357 * @tc.name : repeat surface h265 encode send frame,frame after 73ms
358 * @tc.desc : function test
359 */
360 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_0900, TestSize.Level0)
361 {
362 if (cap != nullptr) {
363 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
364 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
365 vEncInnerSample->DEFAULT_WIDTH = 1280;
366 vEncInnerSample->DEFAULT_HEIGHT = 720;
367 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
368 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_0900.h264";
369 vEncInnerSample->surfaceInput = true;
370 vEncInnerSample->enableRepeat = true;
371 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
372 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
373 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
374 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
375 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
376 vEncInnerSample->WaitForEOS();
377 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
378 cout << "outCount: " << vEncInnerSample->outCount << endl;
379 ASSERT_EQ(35, vEncInnerSample->outCount);
380 }
381 }
382
383 /**
384 * @tc.number : VIDEO_ENCODE_INNER_REPEAT_FUNC_1000
385 * @tc.name : repeat surface h264 encode send frame,frame after 73ms
386 * @tc.desc : function test
387 */
388 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_REPEAT_FUNC_1000, TestSize.Level0)
389 {
390 if (cap != nullptr) {
391 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
392 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
393 vEncInnerSample->DEFAULT_WIDTH = 1280;
394 vEncInnerSample->DEFAULT_HEIGHT = 720;
395 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
396 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_REPEAT_FUNC_1000.h264";
397 vEncInnerSample->surfaceInput = true;
398 vEncInnerSample->enableRepeat = true;
399 vEncInnerSample->DEFAULT_FRAME_AFTER = 73;
400 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
401 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
402 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
403 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
404 vEncInnerSample->WaitForEOS();
405 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
406 cout << "outCount: " << vEncInnerSample->outCount << endl;
407 ASSERT_EQ(35, vEncInnerSample->outCount);
408 }
409 }
410 /**
411 * @tc.number : VIDEO_ENCODE_DISCARD_FUNC_0100
412 * @tc.name : discard the 1th frame with KEY_I_FRAME_INTERVAL 10
413 * @tc.desc : function test
414 */
415 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_DISCARD_FUNC_0100, TestSize.Level1)
416 {
417 std::shared_ptr<VEncInnerSignal> vencInnerSignal = std::make_shared<VEncInnerSignal>();
418 auto vEncInnerSample = make_unique<VEncNdkInnerSample>(vencInnerSignal);
419 std::shared_ptr<VEncParamWithAttrCallbackTest> VencParamWithAttrCallback_
420 = std::make_shared<VEncParamWithAttrCallbackTest>(vencInnerSignal);
421 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
422 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_DISCARD_FUNC_0100.h264";
423 vEncInnerSample->DEFAULT_WIDTH = 1280;
424 vEncInnerSample->DEFAULT_HEIGHT = 720;
425 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
426 vEncInnerSample->isDiscardFrame = true;
427 vEncInnerSample->discardMaxIndex = 1;
428 vEncInnerSample->enableRepeat = false;
429 vEncInnerSample->discardMinIndex = 1;
430 vEncInnerSample->surfaceInput = true;
431 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
432 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback(VencParamWithAttrCallback_));
433 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
434 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
435 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
436 vEncInnerSample->WaitForEOS();
437 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
438 ASSERT_EQ(true, vEncInnerSample->CheckOutputFrameCount());
439 }
440
441 /**
442 * @tc.number : VIDEO_ENCODE_DISCARD_FUNC_0200
443 * @tc.name : discard the 10th frame with KEY_I_FRAME_INTERVAL 10
444 * @tc.desc : function test
445 */
446 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_DISCARD_FUNC_0200, TestSize.Level1)
447 {
448 std::shared_ptr<VEncInnerSignal> vencInnerSignal = std::make_shared<VEncInnerSignal>();
449 auto vEncInnerSample = make_unique<VEncNdkInnerSample>(vencInnerSignal);
450 std::shared_ptr<VEncParamWithAttrCallbackTest> VencParamWithAttrCallback_
451 = std::make_shared<VEncParamWithAttrCallbackTest>(vencInnerSignal);
452 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
453 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_DISCARD_FUNC_0200.h264";
454 vEncInnerSample->DEFAULT_WIDTH = 1280;
455 vEncInnerSample->DEFAULT_HEIGHT = 720;
456 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
457 vEncInnerSample->isDiscardFrame = true;
458 vEncInnerSample->discardMaxIndex = 10;
459 vEncInnerSample->discardMinIndex = 10;
460 vEncInnerSample->surfaceInput = true;
461 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
462 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback(VencParamWithAttrCallback_));
463 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
464 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
465 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
466 vEncInnerSample->WaitForEOS();
467 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
468 ASSERT_EQ(true, vEncInnerSample->CheckOutputFrameCount());
469 }
470
471 /**
472 * @tc.number : VIDEO_ENCODE_DISCARD_FUNC_0300
473 * @tc.name : discard the 11th frame with KEY_I_FRAME_INTERVAL 10
474 * @tc.desc : function test
475 */
476 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_DISCARD_FUNC_0300, TestSize.Level1)
477 {
478 std::shared_ptr<VEncInnerSignal> vencInnerSignal = std::make_shared<VEncInnerSignal>();
479 auto vEncInnerSample = make_unique<VEncNdkInnerSample>(vencInnerSignal);
480 std::shared_ptr<VEncParamWithAttrCallbackTest> VencParamWithAttrCallback_
481 = std::make_shared<VEncParamWithAttrCallbackTest>(vencInnerSignal);
482 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
483 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_DISCARD_FUNC_0300.h264";
484 vEncInnerSample->DEFAULT_WIDTH = 1280;
485 vEncInnerSample->DEFAULT_HEIGHT = 720;
486 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
487 vEncInnerSample->isDiscardFrame = true;
488 vEncInnerSample->discardMaxIndex = 11;
489 vEncInnerSample->discardMinIndex = 11;
490 vEncInnerSample->surfaceInput = true;
491 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
492 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback(VencParamWithAttrCallback_));
493 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
494 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
495 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
496 vEncInnerSample->WaitForEOS();
497 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
498 ASSERT_EQ(true, vEncInnerSample->CheckOutputFrameCount());
499 }
500
501 /**
502 * @tc.number : VIDEO_ENCODE_DISCARD_FUNC_0400
503 * @tc.name : random discard with KEY_I_FRAME_INTERVAL 10
504 * @tc.desc : function test
505 */
506 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_DISCARD_FUNC_0400, TestSize.Level1)
507 {
508 std::shared_ptr<VEncInnerSignal> vencInnerSignal = std::make_shared<VEncInnerSignal>();
509 auto vEncInnerSample = make_unique<VEncNdkInnerSample>(vencInnerSignal);
510 std::shared_ptr<VEncParamWithAttrCallbackTest> VencParamWithAttrCallback_
511 = std::make_shared<VEncParamWithAttrCallbackTest>(vencInnerSignal);
512 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
513 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_DISCARD_FUNC_0400.h264";
514 vEncInnerSample->DEFAULT_WIDTH = 1280;
515 vEncInnerSample->DEFAULT_HEIGHT = 720;
516 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
517 vEncInnerSample->isDiscardFrame = true;
518 vEncInnerSample->surfaceInput = true;
519 vEncInnerSample->PushRandomDiscardIndex(3, 25, 1);
520 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
521 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback(VencParamWithAttrCallback_));
522 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
523 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
524 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
525 vEncInnerSample->WaitForEOS();
526 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
527 ASSERT_EQ(true, vEncInnerSample->CheckOutputFrameCount());
528 }
529
530 /**
531 * @tc.number : VIDEO_ENCODE_DISCARD_FUNC_0500
532 * @tc.name : every 3 frames lose 1 frame with KEY_I_FRAME_INTERVAL 10
533 * @tc.desc : function test
534 */
535 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_DISCARD_FUNC_0500, TestSize.Level1)
536 {
537 std::shared_ptr<VEncInnerSignal> vencInnerSignal = std::make_shared<VEncInnerSignal>();
538 auto vEncInnerSample = make_unique<VEncNdkInnerSample>(vencInnerSignal);
539 std::shared_ptr<VEncParamWithAttrCallbackTest> VencParamWithAttrCallback_
540 = std::make_shared<VEncParamWithAttrCallbackTest>(vencInnerSignal);
541 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
542 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_DISCARD_FUNC_0500.h264";
543 vEncInnerSample->DEFAULT_WIDTH = 1280;
544 vEncInnerSample->DEFAULT_HEIGHT = 720;
545 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
546 vEncInnerSample->isDiscardFrame = true;
547 vEncInnerSample->surfaceInput = true;
548 vEncInnerSample->discardInterval = 3;
549 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
550 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback(VencParamWithAttrCallback_));
551 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
552 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
553 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
554 vEncInnerSample->WaitForEOS();
555 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
556 ASSERT_EQ(true, vEncInnerSample->CheckOutputFrameCount());
557 }
558
559 /**
560 * @tc.number : VIDEO_ENCODE_DISCARD_FUNC_0600
561 * @tc.name : continuous loss of cache buffer frames with KEY_I_FRAME_INTERVAL 10
562 * @tc.desc : function test
563 */
564 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_DISCARD_FUNC_0600, TestSize.Level1)
565 {
566 std::shared_ptr<VEncInnerSignal> vencInnerSignal = std::make_shared<VEncInnerSignal>();
567 auto vEncInnerSample = make_unique<VEncNdkInnerSample>(vencInnerSignal);
568 std::shared_ptr<VEncParamWithAttrCallbackTest> VencParamWithAttrCallback_
569 = std::make_shared<VEncParamWithAttrCallbackTest>(vencInnerSignal);
570 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
571 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_DISCARD_FUNC_0600.h264";
572 vEncInnerSample->DEFAULT_WIDTH = 1280;
573 vEncInnerSample->DEFAULT_HEIGHT = 720;
574 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
575 vEncInnerSample->isDiscardFrame = true;
576 vEncInnerSample->surfaceInput = true;
577 vEncInnerSample->discardMaxIndex = 14;
578 vEncInnerSample->discardMinIndex = 5;
579 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
580 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback(VencParamWithAttrCallback_));
581 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
582 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
583 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
584 vEncInnerSample->WaitForEOS();
585 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
586 ASSERT_EQ(true, vEncInnerSample->CheckOutputFrameCount());
587 }
588
589 /**
590 * @tc.number : VIDEO_ENCODE_DISCARD_FUNC_0700
591 * @tc.name : retain the first frame with KEY_I_FRAME_INTERVAL 10
592 * @tc.desc : function test
593 */
594 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_DISCARD_FUNC_0700, TestSize.Level1)
595 {
596 std::shared_ptr<VEncInnerSignal> vencInnerSignal = std::make_shared<VEncInnerSignal>();
597 auto vEncInnerSample = make_unique<VEncNdkInnerSample>(vencInnerSignal);
598 std::shared_ptr<VEncParamWithAttrCallbackTest> VencParamWithAttrCallback_
599 = std::make_shared<VEncParamWithAttrCallbackTest>(vencInnerSignal);
600 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
601 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_DISCARD_FUNC_0700.h264";
602 vEncInnerSample->DEFAULT_WIDTH = 1280;
603 vEncInnerSample->DEFAULT_HEIGHT = 720;
604 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
605 vEncInnerSample->isDiscardFrame = true;
606 vEncInnerSample->surfaceInput = true;
607 vEncInnerSample->discardMaxIndex = 25;
608 vEncInnerSample->discardMinIndex = 2;
609 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
610 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback(VencParamWithAttrCallback_));
611 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
612 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
613 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
614 vEncInnerSample->WaitForEOS();
615 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
616 ASSERT_EQ(true, vEncInnerSample->CheckOutputFrameCount());
617 }
618
619 /**
620 * @tc.number : VIDEO_ENCODE_DISCARD_FUNC_0800
621 * @tc.name : keep the last frame with KEY_I_FRAME_INTERVAL 10
622 * @tc.desc : function test
623 */
624 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_DISCARD_FUNC_0800, TestSize.Level1)
625 {
626 std::shared_ptr<VEncInnerSignal> vencInnerSignal = std::make_shared<VEncInnerSignal>();
627 auto vEncInnerSample = make_unique<VEncNdkInnerSample>(vencInnerSignal);
628 std::shared_ptr<VEncParamWithAttrCallbackTest> VencParamWithAttrCallback_
629 = std::make_shared<VEncParamWithAttrCallbackTest>(vencInnerSignal);
630 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
631 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_DISCARD_FUNC_0800.h264";
632 vEncInnerSample->DEFAULT_WIDTH = 1280;
633 vEncInnerSample->DEFAULT_HEIGHT = 720;
634 vEncInnerSample->DEFAULT_BITRATE_MODE = CBR;
635 vEncInnerSample->isDiscardFrame = true;
636 vEncInnerSample->surfaceInput = true;
637 vEncInnerSample->discardMaxIndex = 24;
638 vEncInnerSample->discardMinIndex = 1;
639 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
640 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback(VencParamWithAttrCallback_));
641 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
642 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
643 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
644 vEncInnerSample->WaitForEOS();
645 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->errCount);
646 ASSERT_EQ(true, vEncInnerSample->CheckOutputFrameCount());
647 }
648
649 /**
650 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0010
651 * @tc.name : h264 set VIDEO_ENCODE_ENABLE_WATERMARK is 0
652 * @tc.desc : func test
653 */
654 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0010, TestSize.Level1)
655 {
656 auto vEncSample = make_unique<VEncNdkInnerSample>();
657 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
658 return;
659 }
660 BufferRequestConfig bufferConfig = {
661 .width = 300,
662 .height = 300,
663 .strideAlignment = 0x8,
664 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
665 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
666 .timeout = 0,
667 };
668 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
669 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0010.h264";
670 vEncSample->surfaceInput = true;
671 vEncSample->enableWaterMark = false;
672 vEncSample->videoCoordinateX = 100;
673 vEncSample->videoCoordinateY = 100;
674 vEncSample->videoCoordinateWidth = bufferConfig.width;
675 vEncSample->videoCoordinateHeight = bufferConfig.height;
676
677 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
678 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
679 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
680 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
681 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
682 vEncSample->WaitForEOS();
683 }
684
685 /**
686 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0020
687 * @tc.name : h264 set VIDEO_ENCODE_ENABLE_WATERMARK is 1
688 * @tc.desc : func test
689 */
690 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0020, TestSize.Level1)
691 {
692 auto vEncSample = make_unique<VEncNdkInnerSample>();
693 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
694 return;
695 }
696 BufferRequestConfig bufferConfig = {
697 .width = 128,
698 .height = 72,
699 .strideAlignment = 0x8,
700 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
701 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
702 .timeout = 0,
703 };
704 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
705 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0020.h264";
706 vEncSample->surfaceInput = true;
707 vEncSample->enableWaterMark = true;
708 vEncSample->videoCoordinateX = 100;
709 vEncSample->videoCoordinateY = 100;
710 vEncSample->videoCoordinateWidth = bufferConfig.width;
711 vEncSample->videoCoordinateHeight = bufferConfig.height;
712
713 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
714 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
715 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
716 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
717 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
718 vEncSample->WaitForEOS();
719 }
720
721 /**
722 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0030
723 * @tc.name : h264 before config
724 * @tc.desc : func test
725 */
726 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0030, TestSize.Level1)
727 {
728 auto vEncSample = make_unique<VEncNdkInnerSample>();
729 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
730 return;
731 }
732 BufferRequestConfig bufferConfig = {
733 .width = 128,
734 .height = 72,
735 .strideAlignment = 0x8,
736 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
737 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
738 .timeout = 0,
739 };
740 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
741 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0030.h264";
742 vEncSample->surfaceInput = true;
743 vEncSample->enableWaterMark = true;
744 vEncSample->videoCoordinateX = 100;
745 vEncSample->videoCoordinateY = 100;
746 vEncSample->videoCoordinateWidth = bufferConfig.width;
747 vEncSample->videoCoordinateHeight = bufferConfig.height;
748
749 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
750 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
751 ASSERT_EQ(AVCS_ERR_INVALID_STATE, vEncSample->SetCustomBuffer(bufferConfig));
752 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
753 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
754 vEncSample->WaitForEOS();
755 }
756
757 /**
758 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0040
759 * @tc.name : h264 after start
760 * @tc.desc : func test
761 */
762 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0040, TestSize.Level1)
763 {
764 auto vEncSample = make_unique<VEncNdkInnerSample>();
765 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
766 return;
767 }
768 BufferRequestConfig bufferConfig = {
769 .width = 128,
770 .height = 72,
771 .strideAlignment = 0x8,
772 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
773 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
774 .timeout = 0,
775 };
776 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
777 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0040.h264";
778 vEncSample->surfaceInput = true;
779 vEncSample->enableWaterMark = true;
780 vEncSample->videoCoordinateX = 100;
781 vEncSample->videoCoordinateY = 100;
782 vEncSample->videoCoordinateWidth = bufferConfig.width;
783 vEncSample->videoCoordinateHeight = bufferConfig.height;
784
785 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
786 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
787 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
788 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
789 ASSERT_EQ(AVCS_ERR_INVALID_STATE, vEncSample->SetCustomBuffer(bufferConfig));
790 vEncSample->WaitForEOS();
791 }
792
793 /**
794 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0050
795 * @tc.name : h264 reset-config-SetCustomBuffer
796 * @tc.desc : func test
797 */
798 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0050, TestSize.Level1)
799 {
800 auto vEncSample = make_unique<VEncNdkInnerSample>();
801 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
802 return;
803 }
804 BufferRequestConfig bufferConfig = {
805 .width = 128,
806 .height = 72,
807 .strideAlignment = 0x8,
808 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
809 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
810 .timeout = 0,
811 };
812 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
813 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0050.h264";
814 vEncSample->surfaceInput = true;
815 vEncSample->enableWaterMark = true;
816 vEncSample->videoCoordinateX = 100;
817 vEncSample->videoCoordinateY = 100;
818 vEncSample->videoCoordinateWidth = bufferConfig.width;
819 vEncSample->videoCoordinateHeight = bufferConfig.height;
820
821 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
822 ASSERT_EQ(AV_ERR_OK, vEncSample->Reset());
823 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
824 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
825 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
826 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
827 vEncSample->WaitForEOS();
828 }
829
830 /**
831 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0060
832 * @tc.name : h264 before prepare, after config
833 * @tc.desc : func test
834 */
835 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0060, TestSize.Level1)
836 {
837 auto vEncSample = make_unique<VEncNdkInnerSample>();
838 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
839 return;
840 }
841 BufferRequestConfig bufferConfig = {
842 .width = 128,
843 .height = 72,
844 .strideAlignment = 0x8,
845 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
846 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
847 .timeout = 0,
848 };
849 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
850 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0060.h264";
851 vEncSample->surfaceInput = true;
852 vEncSample->enableWaterMark = true;
853 vEncSample->videoCoordinateX = 100;
854 vEncSample->videoCoordinateY = 100;
855 vEncSample->videoCoordinateWidth = bufferConfig.width;
856 vEncSample->videoCoordinateHeight = bufferConfig.height;
857
858 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
859 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
860 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
861 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
862 ASSERT_EQ(AV_ERR_OK, vEncSample->Prepare());
863 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
864 vEncSample->WaitForEOS();
865 }
866
867 /**
868 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0070
869 * @tc.name : h264 before start, after prepare
870 * @tc.desc : func test
871 */
872 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0070, TestSize.Level1)
873 {
874 auto vEncSample = make_unique<VEncNdkInnerSample>();
875 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
876 return;
877 }
878 BufferRequestConfig bufferConfig = {
879 .width = 128,
880 .height = 72,
881 .strideAlignment = 0x8,
882 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
883 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
884 .timeout = 0,
885 };
886 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
887 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0070.h264";
888 vEncSample->surfaceInput = true;
889 vEncSample->enableWaterMark = true;
890 vEncSample->videoCoordinateX = 100;
891 vEncSample->videoCoordinateY = 100;
892 vEncSample->videoCoordinateWidth = bufferConfig.width;
893 vEncSample->videoCoordinateHeight = bufferConfig.height;
894
895 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
896 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
897 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
898 ASSERT_EQ(AV_ERR_OK, vEncSample->Prepare());
899 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
900 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
901 vEncSample->WaitForEOS();
902 }
903
904 /**
905 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0080
906 * @tc.name : h264 two times SetCustomBuffer with different watermark contents
907 * @tc.desc : func test
908 */
909 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0080, TestSize.Level1)
910 {
911 auto vEncSample = make_unique<VEncNdkInnerSample>();
912 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
913 return;
914 }
915 BufferRequestConfig bufferConfig = {
916 .width = 256,
917 .height = 144,
918 .strideAlignment = 0x8,
919 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
920 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
921 .timeout = 0,
922 };
923 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
924 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0080.h264";
925 vEncSample->surfaceInput = true;
926 vEncSample->enableWaterMark = true;
927 vEncSample->videoCoordinateX = 100;
928 vEncSample->videoCoordinateY = 100;
929 vEncSample->videoCoordinateWidth = bufferConfig.width;
930 vEncSample->videoCoordinateHeight = bufferConfig.height;
931
932 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
933 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
934 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
935 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
936 vEncSample->WATER_MARK_DIR = "/data/test/media/256_144.rgba";
937 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
938 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
939 vEncSample->WaitForEOS();
940 }
941
942 /**
943 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0090
944 * @tc.name : h264 the watermark transparency is 0% and located in the bottom right corner with 128*72
945 * @tc.desc : func test
946 */
947 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0090, TestSize.Level1)
948 {
949 auto vEncSample = make_unique<VEncNdkInnerSample>();
950 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
951 return;
952 }
953 BufferRequestConfig bufferConfig = {
954 .width = 128,
955 .height = 72,
956 .strideAlignment = 0x8,
957 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
958 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
959 .timeout = 0,
960 };
961 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
962 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0090.h264";
963 vEncSample->WATER_MARK_DIR = "/data/test/media/128_72_0.rgba";
964
965 vEncSample->surfaceInput = true;
966 vEncSample->enableWaterMark = true;
967 vEncSample->videoCoordinateX = vEncSample->DEFAULT_WIDTH - bufferConfig.width;
968 vEncSample->videoCoordinateY = vEncSample->DEFAULT_HEIGHT - bufferConfig.height;
969 vEncSample->videoCoordinateWidth = bufferConfig.width;
970 vEncSample->videoCoordinateHeight = bufferConfig.height;
971
972 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
973 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
974 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
975 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
976 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
977 vEncSample->WaitForEOS();
978 }
979
980 /**
981 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0100
982 * @tc.name : h264 the watermark transparency is 100% and located in the bottom right corner with 128*72
983 * @tc.desc : func test
984 */
985 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0100, TestSize.Level1)
986 {
987 auto vEncSample = make_unique<VEncNdkInnerSample>();
988 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
989 return;
990 }
991 BufferRequestConfig bufferConfig = {
992 .width = 128,
993 .height = 72,
994 .strideAlignment = 0x8,
995 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
996 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
997 .timeout = 0,
998 };
999 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1000 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0100.h264";
1001 vEncSample->WATER_MARK_DIR = "/data/test/media/128_72_100.rgba";
1002
1003 vEncSample->surfaceInput = true;
1004 vEncSample->enableWaterMark = true;
1005 vEncSample->videoCoordinateX = vEncSample->DEFAULT_WIDTH - bufferConfig.width;
1006 vEncSample->videoCoordinateY = vEncSample->DEFAULT_HEIGHT - bufferConfig.height;
1007 vEncSample->videoCoordinateWidth = bufferConfig.width;
1008 vEncSample->videoCoordinateHeight = bufferConfig.height;
1009
1010 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1011 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1012 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1013 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1014 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1015 vEncSample->WaitForEOS();
1016 }
1017
1018 /**
1019 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0110
1020 * @tc.name : h264 the watermark transparency is 25% and located in the bottom left corner with 256*144
1021 * @tc.desc : func test
1022 */
1023 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0110, TestSize.Level0)
1024 {
1025 auto vEncSample = make_unique<VEncNdkInnerSample>();
1026 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1027 return;
1028 }
1029 BufferRequestConfig bufferConfig = {
1030 .width = 256,
1031 .height = 144,
1032 .strideAlignment = 0x8,
1033 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1034 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1035 .timeout = 0,
1036 };
1037 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1038 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0110.h264";
1039 vEncSample->WATER_MARK_DIR = "/data/test/media/256_144.rgba";
1040
1041 vEncSample->surfaceInput = true;
1042 vEncSample->enableWaterMark = true;
1043 vEncSample->videoCoordinateX = 0;
1044 vEncSample->videoCoordinateY = vEncSample->DEFAULT_HEIGHT - bufferConfig.height;
1045 vEncSample->videoCoordinateWidth = bufferConfig.width;
1046 vEncSample->videoCoordinateHeight = bufferConfig.height;
1047
1048 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1049 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1050 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1051 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1052 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1053 vEncSample->WaitForEOS();
1054 }
1055
1056 /**
1057 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0120
1058 * @tc.name : h264 the watermark transparency is 25% and located in the bottom right corner with 256*144
1059 * @tc.desc : func test
1060 */
1061 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0120, TestSize.Level1)
1062 {
1063 auto vEncSample = make_unique<VEncNdkInnerSample>();
1064 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1065 return;
1066 }
1067 BufferRequestConfig bufferConfig = {
1068 .width = 256,
1069 .height = 144,
1070 .strideAlignment = 0x8,
1071 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1072 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1073 .timeout = 0,
1074 };
1075 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1076 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0120.h264";
1077 vEncSample->WATER_MARK_DIR = "/data/test/media/256_144.rgba";
1078
1079 vEncSample->surfaceInput = true;
1080 vEncSample->enableWaterMark = true;
1081 vEncSample->videoCoordinateX = vEncSample->DEFAULT_WIDTH - bufferConfig.width;
1082 vEncSample->videoCoordinateY = vEncSample->DEFAULT_HEIGHT - bufferConfig.height;
1083 vEncSample->videoCoordinateWidth = bufferConfig.width;
1084 vEncSample->videoCoordinateHeight = bufferConfig.height;
1085
1086 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1087 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1088 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1089 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1090 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1091 vEncSample->WaitForEOS();
1092 }
1093
1094
1095 /**
1096 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0130
1097 * @tc.name : h264 the watermark transparency is 50% and located in the upper left corner with 200*100
1098 * @tc.desc : func test
1099 */
1100 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0130, TestSize.Level1)
1101 {
1102 auto vEncSample = make_unique<VEncNdkInnerSample>();
1103 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1104 return;
1105 }
1106 BufferRequestConfig bufferConfig = {
1107 .width = 200,
1108 .height = 100,
1109 .strideAlignment = 0x8,
1110 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1111 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1112 .timeout = 0,
1113 };
1114 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1115 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0130.h264";
1116 vEncSample->WATER_MARK_DIR = "/data/test/media/200_100.rgba";
1117
1118 vEncSample->surfaceInput = true;
1119 vEncSample->enableWaterMark = true;
1120 vEncSample->videoCoordinateX = 0;
1121 vEncSample->videoCoordinateY = 0;
1122 vEncSample->videoCoordinateWidth = bufferConfig.width;
1123 vEncSample->videoCoordinateHeight = bufferConfig.height;
1124
1125 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1126 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1127 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1128 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1129 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1130 vEncSample->WaitForEOS();
1131 }
1132
1133 /**
1134 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0140
1135 * @tc.name : h264 the watermark transparency is 50% and located in the upper right corner with 200*100
1136 * @tc.desc : func test
1137 */
1138 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0140, TestSize.Level1)
1139 {
1140 auto vEncSample = make_unique<VEncNdkInnerSample>();
1141 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1142 return;
1143 }
1144 BufferRequestConfig bufferConfig = {
1145 .width = 200,
1146 .height = 100,
1147 .strideAlignment = 0x8,
1148 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1149 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1150 .timeout = 0,
1151 };
1152 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1153 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0140.h264";
1154 vEncSample->WATER_MARK_DIR = "/data/test/media/200_100.rgba";
1155
1156 vEncSample->surfaceInput = true;
1157 vEncSample->enableWaterMark = true;
1158 vEncSample->videoCoordinateX = vEncSample->DEFAULT_WIDTH - bufferConfig.width;
1159 vEncSample->videoCoordinateY = 0;
1160 vEncSample->videoCoordinateWidth = bufferConfig.width;
1161 vEncSample->videoCoordinateHeight = bufferConfig.height;
1162
1163 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1164 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1165 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1166 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1167 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1168 vEncSample->WaitForEOS();
1169 }
1170
1171 /**
1172 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0150
1173 * @tc.name : h264 the watermark transparency is 50% and located in the middle with 200*100
1174 * @tc.desc : func test
1175 */
1176 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0150, TestSize.Level1)
1177 {
1178 auto vEncSample = make_unique<VEncNdkInnerSample>();
1179 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1180 return;
1181 }
1182 BufferRequestConfig bufferConfig = {
1183 .width = 200,
1184 .height = 100,
1185 .strideAlignment = 0x8,
1186 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1187 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1188 .timeout = 0,
1189 };
1190 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1191 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0150.h264";
1192 vEncSample->WATER_MARK_DIR = "/data/test/media/200_100.rgba";
1193
1194 vEncSample->surfaceInput = true;
1195 vEncSample->enableWaterMark = true;
1196 vEncSample->videoCoordinateX = (vEncSample->DEFAULT_WIDTH - bufferConfig.width) / 2;
1197 vEncSample->videoCoordinateY = (vEncSample->DEFAULT_HEIGHT - bufferConfig.height) / 2;
1198 vEncSample->videoCoordinateWidth = bufferConfig.width;
1199 vEncSample->videoCoordinateHeight = bufferConfig.height;
1200
1201 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1202 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1203 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1204 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1205 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1206 vEncSample->WaitForEOS();
1207 }
1208
1209 /**
1210 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0160
1211 * @tc.name : h264 the watermark transparency is 0% with 1280*720
1212 * @tc.desc : func test
1213 */
1214 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0160, TestSize.Level1)
1215 {
1216 auto vEncSample = make_unique<VEncNdkInnerSample>();
1217 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1218 return;
1219 }
1220 BufferRequestConfig bufferConfig = {
1221 .width = 1280,
1222 .height = 720,
1223 .strideAlignment = 0x8,
1224 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1225 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1226 .timeout = 0,
1227 };
1228 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1229 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0160.h264";
1230 vEncSample->WATER_MARK_DIR = "/data/test/media/1280_720_0.rgba";
1231
1232 vEncSample->surfaceInput = true;
1233 vEncSample->enableWaterMark = true;
1234 vEncSample->videoCoordinateX = 0;
1235 vEncSample->videoCoordinateY = 0;
1236 vEncSample->videoCoordinateWidth = bufferConfig.width;
1237 vEncSample->videoCoordinateHeight = bufferConfig.height;
1238
1239 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1240 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1241 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1242 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1243 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1244 vEncSample->WaitForEOS();
1245 }
1246
1247 /**
1248 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0170
1249 * @tc.name : h264 the watermark transparency is 100% with 1280*720
1250 * @tc.desc : func test
1251 */
1252 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0170, TestSize.Level1)
1253 {
1254 auto vEncSample = make_unique<VEncNdkInnerSample>();
1255 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1256 return;
1257 }
1258 BufferRequestConfig bufferConfig = {
1259 .width = 1280,
1260 .height = 720,
1261 .strideAlignment = 0x8,
1262 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1263 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1264 .timeout = 0,
1265 };
1266 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1267 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0170.h264";
1268 vEncSample->WATER_MARK_DIR = "/data/test/media/1280_720_100.rgba";
1269
1270 vEncSample->surfaceInput = true;
1271 vEncSample->enableWaterMark = true;
1272 vEncSample->videoCoordinateX = 0;
1273 vEncSample->videoCoordinateY = 0;
1274 vEncSample->videoCoordinateWidth = bufferConfig.width;
1275 vEncSample->videoCoordinateHeight = bufferConfig.height;
1276
1277 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1278 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1279 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1280 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1281 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1282 vEncSample->WaitForEOS();
1283 }
1284
1285 /**
1286 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0180
1287 * @tc.name : h265 set VIDEO_ENCODE_ENABLE_WATERMARK is 0
1288 * @tc.desc : func test
1289 */
1290 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0180, TestSize.Level1)
1291 {
1292 auto vEncSample = make_unique<VEncNdkInnerSample>();
1293 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1294 return;
1295 }
1296 BufferRequestConfig bufferConfig = {
1297 .width = 128,
1298 .height = 72,
1299 .strideAlignment = 0x8,
1300 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1301 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1302 .timeout = 0,
1303 };
1304 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1305 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0180.h264";
1306 vEncSample->surfaceInput = true;
1307 vEncSample->enableWaterMark = false;
1308 vEncSample->videoCoordinateX = 100;
1309 vEncSample->videoCoordinateY = 100;
1310 vEncSample->videoCoordinateWidth = bufferConfig.width;
1311 vEncSample->videoCoordinateHeight = bufferConfig.height;
1312
1313 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1314 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1315 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1316 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1317 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1318 vEncSample->WaitForEOS();
1319 }
1320
1321 /**
1322 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0190
1323 * @tc.name : h265 set VIDEO_ENCODE_ENABLE_WATERMARK is 1
1324 * @tc.desc : func test
1325 */
1326 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0190, TestSize.Level1)
1327 {
1328 auto vEncSample = make_unique<VEncNdkInnerSample>();
1329 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1330 return;
1331 }
1332 BufferRequestConfig bufferConfig = {
1333 .width = 128,
1334 .height = 72,
1335 .strideAlignment = 0x8,
1336 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1337 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1338 .timeout = 0,
1339 };
1340 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1341 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0190.h264";
1342 vEncSample->surfaceInput = true;
1343 vEncSample->enableWaterMark = true;
1344 vEncSample->videoCoordinateX = 100;
1345 vEncSample->videoCoordinateY = 100;
1346 vEncSample->videoCoordinateWidth = bufferConfig.width;
1347 vEncSample->videoCoordinateHeight = bufferConfig.height;
1348
1349 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1350 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1351 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1352 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1353 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1354 vEncSample->WaitForEOS();
1355 }
1356
1357 /**
1358 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0200
1359 * @tc.name : h265 before config
1360 * @tc.desc : func test
1361 */
1362 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0200, TestSize.Level1)
1363 {
1364 auto vEncSample = make_unique<VEncNdkInnerSample>();
1365 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1366 return;
1367 }
1368 BufferRequestConfig bufferConfig = {
1369 .width = 128,
1370 .height = 72,
1371 .strideAlignment = 0x8,
1372 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1373 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1374 .timeout = 0,
1375 };
1376 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1377 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0200.h264";
1378 vEncSample->surfaceInput = true;
1379 vEncSample->enableWaterMark = true;
1380 vEncSample->videoCoordinateX = 100;
1381 vEncSample->videoCoordinateY = 100;
1382 vEncSample->videoCoordinateWidth = bufferConfig.width;
1383 vEncSample->videoCoordinateHeight = bufferConfig.height;
1384
1385 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1386 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1387 ASSERT_EQ(AVCS_ERR_INVALID_STATE, vEncSample->SetCustomBuffer(bufferConfig));
1388 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1389 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1390 vEncSample->WaitForEOS();
1391 }
1392
1393 /**
1394 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0210
1395 * @tc.name : h265 after start
1396 * @tc.desc : func test
1397 */
1398 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0210, TestSize.Level1)
1399 {
1400 auto vEncSample = make_unique<VEncNdkInnerSample>();
1401 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1402 return;
1403 }
1404 BufferRequestConfig bufferConfig = {
1405 .width = 128,
1406 .height = 72,
1407 .strideAlignment = 0x8,
1408 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1409 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1410 .timeout = 0,
1411 };
1412 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1413 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0210.h264";
1414 vEncSample->surfaceInput = true;
1415 vEncSample->enableWaterMark = true;
1416 vEncSample->videoCoordinateX = 100;
1417 vEncSample->videoCoordinateY = 100;
1418 vEncSample->videoCoordinateWidth = bufferConfig.width;
1419 vEncSample->videoCoordinateHeight = bufferConfig.height;
1420
1421 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1422 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1423 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1424 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1425 ASSERT_EQ(AVCS_ERR_INVALID_STATE, vEncSample->SetCustomBuffer(bufferConfig));
1426 vEncSample->WaitForEOS();
1427 }
1428
1429 /**
1430 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0220
1431 * @tc.name : h265 reset-config-SetCustomBuffer
1432 * @tc.desc : func test
1433 */
1434 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0220, TestSize.Level1)
1435 {
1436 auto vEncSample = make_unique<VEncNdkInnerSample>();
1437 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1438 return;
1439 }
1440 BufferRequestConfig bufferConfig = {
1441 .width = 128,
1442 .height = 72,
1443 .strideAlignment = 0x8,
1444 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1445 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1446 .timeout = 0,
1447 };
1448 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1449 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0220.h264";
1450 vEncSample->surfaceInput = true;
1451 vEncSample->enableWaterMark = true;
1452 vEncSample->videoCoordinateX = 100;
1453 vEncSample->videoCoordinateY = 100;
1454 vEncSample->videoCoordinateWidth = bufferConfig.width;
1455 vEncSample->videoCoordinateHeight = bufferConfig.height;
1456
1457 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1458 ASSERT_EQ(AV_ERR_OK, vEncSample->Reset());
1459 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1460 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1461 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1462 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1463 vEncSample->WaitForEOS();
1464 }
1465
1466 /**
1467 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0230
1468 * @tc.name : h265 before prepare, after config
1469 * @tc.desc : func test
1470 */
1471 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0230, TestSize.Level1)
1472 {
1473 auto vEncSample = make_unique<VEncNdkInnerSample>();
1474 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1475 return;
1476 }
1477 BufferRequestConfig bufferConfig = {
1478 .width = 128,
1479 .height = 72,
1480 .strideAlignment = 0x8,
1481 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1482 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1483 .timeout = 0,
1484 };
1485 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1486 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0230.h264";
1487 vEncSample->surfaceInput = true;
1488 vEncSample->enableWaterMark = true;
1489 vEncSample->videoCoordinateX = 100;
1490 vEncSample->videoCoordinateY = 100;
1491 vEncSample->videoCoordinateWidth = bufferConfig.width;
1492 vEncSample->videoCoordinateHeight = bufferConfig.height;
1493
1494 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1495 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1496 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1497 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1498 ASSERT_EQ(AV_ERR_OK, vEncSample->Prepare());
1499 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1500 vEncSample->WaitForEOS();
1501 }
1502
1503 /**
1504 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0240
1505 * @tc.name : h265 before start, after prepare
1506 * @tc.desc : func test
1507 */
1508 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0240, TestSize.Level1)
1509 {
1510 auto vEncSample = make_unique<VEncNdkInnerSample>();
1511 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1512 return;
1513 }
1514 BufferRequestConfig bufferConfig = {
1515 .width = 128,
1516 .height = 72,
1517 .strideAlignment = 0x8,
1518 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1519 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1520 .timeout = 0,
1521 };
1522 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1523 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0240.h264";
1524 vEncSample->surfaceInput = true;
1525 vEncSample->enableWaterMark = true;
1526 vEncSample->videoCoordinateX = 100;
1527 vEncSample->videoCoordinateY = 100;
1528 vEncSample->videoCoordinateWidth = bufferConfig.width;
1529 vEncSample->videoCoordinateHeight = bufferConfig.height;
1530
1531 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1532 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1533 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1534 ASSERT_EQ(AV_ERR_OK, vEncSample->Prepare());
1535 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1536 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1537 vEncSample->WaitForEOS();
1538 }
1539
1540 /**
1541 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0250
1542 * @tc.name : h265 two times SetCustomBuffer with different watermark contents
1543 * @tc.desc : func test
1544 */
1545 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0250, TestSize.Level1)
1546 {
1547 auto vEncSample = make_unique<VEncNdkInnerSample>();
1548 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1549 return;
1550 }
1551 BufferRequestConfig bufferConfig = {
1552 .width = 256,
1553 .height = 144,
1554 .strideAlignment = 0x8,
1555 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1556 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1557 .timeout = 0,
1558 };
1559 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1560 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0250.h264";
1561 vEncSample->surfaceInput = true;
1562 vEncSample->enableWaterMark = true;
1563 vEncSample->videoCoordinateX = 100;
1564 vEncSample->videoCoordinateY = 100;
1565 vEncSample->videoCoordinateWidth = bufferConfig.width;
1566 vEncSample->videoCoordinateHeight = bufferConfig.height;
1567
1568 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1569 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1570 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1571 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1572 vEncSample->WATER_MARK_DIR = "/data/test/media/256_144.rgba";
1573 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1574 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1575 vEncSample->WaitForEOS();
1576 }
1577
1578 /**
1579 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0260
1580 * @tc.name : h265 the watermark transparency is 0% and located in the bottom right corner with 128*72
1581 * @tc.desc : func test
1582 */
1583 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0260, TestSize.Level1)
1584 {
1585 auto vEncSample = make_unique<VEncNdkInnerSample>();
1586 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1587 return;
1588 }
1589 BufferRequestConfig bufferConfig = {
1590 .width = 128,
1591 .height = 72,
1592 .strideAlignment = 0x8,
1593 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1594 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1595 .timeout = 0,
1596 };
1597 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1598 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0260.h264";
1599 vEncSample->WATER_MARK_DIR = "/data/test/media/128_72_0.rgba";
1600
1601 vEncSample->surfaceInput = true;
1602 vEncSample->enableWaterMark = true;
1603 vEncSample->videoCoordinateX = vEncSample->DEFAULT_WIDTH - bufferConfig.width;
1604 vEncSample->videoCoordinateY = vEncSample->DEFAULT_HEIGHT - bufferConfig.height;
1605 vEncSample->videoCoordinateWidth = bufferConfig.width;
1606 vEncSample->videoCoordinateHeight = bufferConfig.height;
1607
1608 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1609 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1610 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1611 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1612 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1613 vEncSample->WaitForEOS();
1614 }
1615
1616 /**
1617 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0270
1618 * @tc.name : h265 the watermark transparency is 100% and located in the bottom right corner with 128*72
1619 * @tc.desc : func test
1620 */
1621 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0270, TestSize.Level1)
1622 {
1623 auto vEncSample = make_unique<VEncNdkInnerSample>();
1624 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1625 return;
1626 }
1627 BufferRequestConfig bufferConfig = {
1628 .width = 128,
1629 .height = 72,
1630 .strideAlignment = 0x8,
1631 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1632 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1633 .timeout = 0,
1634 };
1635 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1636 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0270.h264";
1637 vEncSample->WATER_MARK_DIR = "/data/test/media/128_72_100.rgba";
1638
1639 vEncSample->surfaceInput = true;
1640 vEncSample->enableWaterMark = true;
1641 vEncSample->videoCoordinateX = vEncSample->DEFAULT_WIDTH - bufferConfig.width;
1642 vEncSample->videoCoordinateY = vEncSample->DEFAULT_HEIGHT - bufferConfig.height;
1643 vEncSample->videoCoordinateWidth = bufferConfig.width;
1644 vEncSample->videoCoordinateHeight = bufferConfig.height;
1645
1646 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1647 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1648 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1649 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1650 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1651 vEncSample->WaitForEOS();
1652 }
1653
1654 /**
1655 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0280
1656 * @tc.name : h265 the watermark transparency is 25% and located in the bottom left corner with 256*144
1657 * @tc.desc : func test
1658 */
1659 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0280, TestSize.Level0)
1660 {
1661 auto vEncSample = make_unique<VEncNdkInnerSample>();
1662 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1663 return;
1664 }
1665 BufferRequestConfig bufferConfig = {
1666 .width = 256,
1667 .height = 144,
1668 .strideAlignment = 0x8,
1669 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1670 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1671 .timeout = 0,
1672 };
1673 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1674 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0280.h264";
1675 vEncSample->WATER_MARK_DIR = "/data/test/media/256_144.rgba";
1676
1677 vEncSample->surfaceInput = true;
1678 vEncSample->enableWaterMark = true;
1679 vEncSample->videoCoordinateX = 0;
1680 vEncSample->videoCoordinateY = vEncSample->DEFAULT_HEIGHT - bufferConfig.height;
1681 vEncSample->videoCoordinateWidth = bufferConfig.width;
1682 vEncSample->videoCoordinateHeight = bufferConfig.height;
1683
1684 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1685 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1686 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1687 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1688 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1689 vEncSample->WaitForEOS();
1690 }
1691
1692 /**
1693 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0290
1694 * @tc.name : h265 the watermark transparency is 25% and located in the bottom right corner with 256*144
1695 * @tc.desc : func test
1696 */
1697 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0290, TestSize.Level1)
1698 {
1699 auto vEncSample = make_unique<VEncNdkInnerSample>();
1700 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1701 return;
1702 }
1703 BufferRequestConfig bufferConfig = {
1704 .width = 256,
1705 .height = 144,
1706 .strideAlignment = 0x8,
1707 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1708 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1709 .timeout = 0,
1710 };
1711 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1712 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0290.h264";
1713 vEncSample->WATER_MARK_DIR = "/data/test/media/256_144.rgba";
1714
1715 vEncSample->surfaceInput = true;
1716 vEncSample->enableWaterMark = true;
1717 vEncSample->videoCoordinateX = vEncSample->DEFAULT_WIDTH - bufferConfig.width;
1718 vEncSample->videoCoordinateY = vEncSample->DEFAULT_HEIGHT - bufferConfig.height;
1719 vEncSample->videoCoordinateWidth = bufferConfig.width;
1720 vEncSample->videoCoordinateHeight = bufferConfig.height;
1721
1722 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1723 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1724 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1725 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1726 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1727 vEncSample->WaitForEOS();
1728 }
1729
1730
1731 /**
1732 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0300
1733 * @tc.name : h265 the watermark transparency is 50% and located in the upper left corner with 200*100
1734 * @tc.desc : func test
1735 */
1736 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0300, TestSize.Level1)
1737 {
1738 auto vEncSample = make_unique<VEncNdkInnerSample>();
1739 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1740 return;
1741 }
1742 BufferRequestConfig bufferConfig = {
1743 .width = 200,
1744 .height = 100,
1745 .strideAlignment = 0x8,
1746 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1747 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1748 .timeout = 0,
1749 };
1750 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1751 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0300.h264";
1752 vEncSample->WATER_MARK_DIR = "/data/test/media/200_100.rgba";
1753
1754 vEncSample->surfaceInput = true;
1755 vEncSample->enableWaterMark = true;
1756 vEncSample->videoCoordinateX = 0;
1757 vEncSample->videoCoordinateY = 0;
1758 vEncSample->videoCoordinateWidth = bufferConfig.width;
1759 vEncSample->videoCoordinateHeight = bufferConfig.height;
1760
1761 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1762 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1763 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1764 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1765 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1766 vEncSample->WaitForEOS();
1767 }
1768
1769 /**
1770 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0310
1771 * @tc.name : h265 the watermark transparency is 50% and located in the upper right corner with 200*100
1772 * @tc.desc : func test
1773 */
1774 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0310, TestSize.Level1)
1775 {
1776 auto vEncSample = make_unique<VEncNdkInnerSample>();
1777 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1778 return;
1779 }
1780 BufferRequestConfig bufferConfig = {
1781 .width = 200,
1782 .height = 100,
1783 .strideAlignment = 0x8,
1784 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1785 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1786 .timeout = 0,
1787 };
1788 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1789 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0310.h264";
1790 vEncSample->WATER_MARK_DIR = "/data/test/media/200_100.rgba";
1791
1792 vEncSample->surfaceInput = true;
1793 vEncSample->enableWaterMark = true;
1794 vEncSample->videoCoordinateX = vEncSample->DEFAULT_WIDTH - bufferConfig.width;
1795 vEncSample->videoCoordinateY = 0;
1796 vEncSample->videoCoordinateWidth = bufferConfig.width;
1797 vEncSample->videoCoordinateHeight = bufferConfig.height;
1798
1799 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1800 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1801 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1802 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1803 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1804 vEncSample->WaitForEOS();
1805 }
1806
1807 /**
1808 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0320
1809 * @tc.name : h265 the watermark transparency is 50% and located in the middle with 200*100
1810 * @tc.desc : func test
1811 */
1812 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0320, TestSize.Level1)
1813 {
1814 auto vEncSample = make_unique<VEncNdkInnerSample>();
1815 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1816 return;
1817 }
1818 BufferRequestConfig bufferConfig = {
1819 .width = 200,
1820 .height = 100,
1821 .strideAlignment = 0x8,
1822 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1823 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1824 .timeout = 0,
1825 };
1826 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1827 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0320.h264";
1828 vEncSample->WATER_MARK_DIR = "/data/test/media/200_100.rgba";
1829
1830 vEncSample->surfaceInput = true;
1831 vEncSample->enableWaterMark = true;
1832 vEncSample->videoCoordinateX = (vEncSample->DEFAULT_WIDTH - bufferConfig.width) / 2;
1833 vEncSample->videoCoordinateY = (vEncSample->DEFAULT_HEIGHT - bufferConfig.height) / 2;
1834 vEncSample->videoCoordinateWidth = bufferConfig.width;
1835 vEncSample->videoCoordinateHeight = bufferConfig.height;
1836
1837 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1838 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1839 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1840 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1841 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1842 vEncSample->WaitForEOS();
1843 }
1844
1845 /**
1846 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0330
1847 * @tc.name : h265 the watermark transparency is 0% with 1280*720
1848 * @tc.desc : func test
1849 */
1850 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0330, TestSize.Level1)
1851 {
1852 auto vEncSample = make_unique<VEncNdkInnerSample>();
1853 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1854 return;
1855 }
1856 BufferRequestConfig bufferConfig = {
1857 .width = 1280,
1858 .height = 720,
1859 .strideAlignment = 0x8,
1860 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1861 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1862 .timeout = 0,
1863 };
1864 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1865 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0330.h264";
1866 vEncSample->WATER_MARK_DIR = "/data/test/media/1280_720_0.rgba";
1867
1868 vEncSample->surfaceInput = true;
1869 vEncSample->enableWaterMark = true;
1870 vEncSample->videoCoordinateX = 0;
1871 vEncSample->videoCoordinateY = 0;
1872 vEncSample->videoCoordinateWidth = bufferConfig.width;
1873 vEncSample->videoCoordinateHeight = bufferConfig.height;
1874
1875 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1876 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1877 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1878 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1879 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1880 vEncSample->WaitForEOS();
1881 }
1882
1883 /**
1884 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0340
1885 * @tc.name : h265 the watermark transparency is 100% with 1280*720
1886 * @tc.desc : func test
1887 */
1888 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0340, TestSize.Level1)
1889 {
1890 auto vEncSample = make_unique<VEncNdkInnerSample>();
1891 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1892 return;
1893 }
1894 BufferRequestConfig bufferConfig = {
1895 .width = 1280,
1896 .height = 720,
1897 .strideAlignment = 0x8,
1898 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1899 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1900 .timeout = 0,
1901 };
1902 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1903 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0340.h264";
1904 vEncSample->WATER_MARK_DIR = "/data/test/media/1280_720_100.rgba";
1905
1906 vEncSample->surfaceInput = true;
1907 vEncSample->enableWaterMark = true;
1908 vEncSample->videoCoordinateX = 0;
1909 vEncSample->videoCoordinateY = 0;
1910 vEncSample->videoCoordinateWidth = bufferConfig.width;
1911 vEncSample->videoCoordinateHeight = bufferConfig.height;
1912
1913 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1914 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1915 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1916 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1917 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1918 vEncSample->WaitForEOS();
1919 }
1920
1921 /**
1922 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0350
1923 * @tc.name : h265 the watermark transparency is 50% with 1280*720
1924 * @tc.desc : func test
1925 */
1926 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0350, TestSize.Level1)
1927 {
1928 auto vEncSample = make_unique<VEncNdkInnerSample>();
1929 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1930 return;
1931 }
1932 BufferRequestConfig bufferConfig = {
1933 .width = 1280,
1934 .height = 720,
1935 .strideAlignment = 0x8,
1936 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1937 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1938 .timeout = 0,
1939 };
1940 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1941 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0350.h265";
1942 vEncSample->WATER_MARK_DIR = "/data/test/media/1280_720_50.rgba";
1943
1944 vEncSample->surfaceInput = true;
1945 vEncSample->enableWaterMark = true;
1946 vEncSample->videoCoordinateX = 0;
1947 vEncSample->videoCoordinateY = 0;
1948 vEncSample->videoCoordinateWidth = bufferConfig.width;
1949 vEncSample->videoCoordinateHeight = bufferConfig.height;
1950
1951 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
1952 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1953 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1954 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1955 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1956 vEncSample->WaitForEOS();
1957 }
1958
1959 /**
1960 * @tc.number : VIDEO_ENCODE_INNER_WATERMARK_FUNC_0360
1961 * @tc.name : h264 the watermark transparency is 50% with 1280*720
1962 * @tc.desc : func test
1963 */
1964 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_WATERMARK_FUNC_0360, TestSize.Level1)
1965 {
1966 auto vEncSample = make_unique<VEncNdkInnerSample>();
1967 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
1968 return;
1969 }
1970 BufferRequestConfig bufferConfig = {
1971 .width = 1280,
1972 .height = 720,
1973 .strideAlignment = 0x8,
1974 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
1975 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1976 .timeout = 0,
1977 };
1978 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
1979 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_WATERMARK_FUNC_0360.h264";
1980 vEncSample->WATER_MARK_DIR = "/data/test/media/1280_720_50.rgba";
1981
1982 vEncSample->surfaceInput = true;
1983 vEncSample->enableWaterMark = true;
1984 vEncSample->videoCoordinateX = 0;
1985 vEncSample->videoCoordinateY = 0;
1986 vEncSample->videoCoordinateWidth = bufferConfig.width;
1987 vEncSample->videoCoordinateHeight = bufferConfig.height;
1988
1989 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
1990 ASSERT_EQ(AV_ERR_OK, vEncSample->SetCallback());
1991 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
1992 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
1993 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
1994 vEncSample->WaitForEOS();
1995 }
1996
1997 /**
1998 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0010
1999 * @tc.name : h265 encode config 320_240 surface change 640_480 1280_720 1920_1080
2000 * @tc.desc : function test
2001 */
2002 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0010, TestSize.Level1)
2003 {
2004 if (!access("/system/lib64/media/", 0)) {
2005 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2006 vEncInnerSample->DEFAULT_WIDTH = 320;
2007 vEncInnerSample->DEFAULT_HEIGHT = 240;
2008 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0010.h265";
2009 vEncInnerSample->surfaceInput = true;
2010 vEncInnerSample->readMultiFiles = true;
2011 vEncInnerSample->fileInfos.push_back(file_640_480_rgba);
2012 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2013 vEncInnerSample->fileInfos.push_back(file_1920_1080_nv21);
2014 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2015 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2016 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2017 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2018 vEncInnerSample->WaitForEOS();
2019 }
2020 }
2021
2022 /**
2023 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0020
2024 * @tc.name : h265 encode config 1280_720 surface change 640_480 1280_720 1920_1080
2025 * @tc.desc : function test
2026 */
2027 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0020, TestSize.Level1)
2028 {
2029 if (!access("/system/lib64/media/", 0)) {
2030 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2031 vEncInnerSample->DEFAULT_WIDTH = 1280;
2032 vEncInnerSample->DEFAULT_HEIGHT = 720;
2033 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0020.h265";
2034 vEncInnerSample->surfaceInput = true;
2035 vEncInnerSample->readMultiFiles = true;
2036 vEncInnerSample->fileInfos.push_back(file_640_480_rgba);
2037 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2038 vEncInnerSample->fileInfos.push_back(file_1920_1080_nv21);
2039 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2040 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2041 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2042 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2043 vEncInnerSample->WaitForEOS();
2044 }
2045 }
2046
2047 /**
2048 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0030
2049 * @tc.name : h265 encode config 3840_2160 surface change 640_480 1280_536 1280_720 1920_816 1920_1080 3840_2160
2050 * @tc.desc : function test
2051 */
2052 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0030, TestSize.Level0)
2053 {
2054 if (!access("/system/lib64/media/", 0)) {
2055 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2056 vEncInnerSample->DEFAULT_WIDTH = 3840;
2057 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2058 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0030.h265";
2059 vEncInnerSample->surfaceInput = true;
2060 vEncInnerSample->readMultiFiles = true;
2061 vEncInnerSample->fileInfos.push_back(file_640_480_rgba);
2062 vEncInnerSample->fileInfos.push_back(file_1280_536_nv21);
2063 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2064 vEncInnerSample->fileInfos.push_back(file_1920_816_rgba);
2065 vEncInnerSample->fileInfos.push_back(file_1920_1080_nv21);
2066 vEncInnerSample->fileInfos.push_back(file_3840_2160_nv12);
2067 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2068 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2069 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2070 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2071 vEncInnerSample->WaitForEOS();
2072 }
2073 }
2074
2075 /**
2076 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0040
2077 * @tc.name : h265 encode config 1920_1080 surface change 1920_1080 1080_1920 1280_1280
2078 * @tc.desc : function test
2079 */
2080 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0040, TestSize.Level1)
2081 {
2082 if (!access("/system/lib64/media/", 0)) {
2083 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2084 vEncInnerSample->DEFAULT_WIDTH = 1920;
2085 vEncInnerSample->DEFAULT_HEIGHT = 1080;
2086 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0040.h265";
2087 vEncInnerSample->surfaceInput = true;
2088 vEncInnerSample->readMultiFiles = true;
2089 vEncInnerSample->fileInfos.push_back(file_1920_1080_nv21);
2090 vEncInnerSample->fileInfos.push_back(file_1080_1920_nv12);
2091 vEncInnerSample->fileInfos.push_back(file_1280_1280_nv12);
2092 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2093 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2094 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2095 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2096 vEncInnerSample->WaitForEOS();
2097 }
2098 }
2099
2100 /**
2101 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0050
2102 * @tc.name : h264 encode config 320_240 surface change 640_480 1280_720 1920_1080
2103 * @tc.desc : function test
2104 */
2105 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0050, TestSize.Level1)
2106 {
2107 if (!access("/system/lib64/media/", 0)) {
2108 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2109 vEncInnerSample->DEFAULT_WIDTH = 320;
2110 vEncInnerSample->DEFAULT_HEIGHT = 240;
2111 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0050.h264";
2112 vEncInnerSample->surfaceInput = true;
2113 vEncInnerSample->readMultiFiles = true;
2114 vEncInnerSample->fileInfos.push_back(file_640_480_rgba);
2115 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2116 vEncInnerSample->fileInfos.push_back(file_1920_1080_nv21);
2117 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
2118 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2119 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2120 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2121 vEncInnerSample->WaitForEOS();
2122 }
2123 }
2124
2125 /**
2126 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0060
2127 * @tc.name : h264 encode config 1280_720 surface change 640_480 1280_720 1920_1080
2128 * @tc.desc : function test
2129 */
2130 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0060, TestSize.Level1)
2131 {
2132 if (!access("/system/lib64/media/", 0)) {
2133 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2134 vEncInnerSample->DEFAULT_WIDTH = 1280;
2135 vEncInnerSample->DEFAULT_HEIGHT = 720;
2136 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0060.h264";
2137 vEncInnerSample->surfaceInput = true;
2138 vEncInnerSample->readMultiFiles = true;
2139 vEncInnerSample->fileInfos.push_back(file_640_480_rgba);
2140 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2141 vEncInnerSample->fileInfos.push_back(file_1920_1080_nv21);
2142 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
2143 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2144 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2145 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2146 vEncInnerSample->WaitForEOS();
2147 }
2148 }
2149
2150 /**
2151 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0070
2152 * @tc.name : h264 encode config 3840_2160 surface change 640_480 1280_536 1280_720 1920_816 1920_1080 3840_2160
2153 * @tc.desc : function test
2154 */
2155 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0070, TestSize.Level0)
2156 {
2157 if (!access("/system/lib64/media/", 0)) {
2158 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2159 vEncInnerSample->DEFAULT_WIDTH = 3840;
2160 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2161 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0070.h264";
2162 vEncInnerSample->surfaceInput = true;
2163 vEncInnerSample->readMultiFiles = true;
2164 vEncInnerSample->fileInfos.push_back(file_640_480_rgba);
2165 vEncInnerSample->fileInfos.push_back(file_1280_536_nv21);
2166 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2167 vEncInnerSample->fileInfos.push_back(file_1920_816_rgba);
2168 vEncInnerSample->fileInfos.push_back(file_1920_1080_nv21);
2169 vEncInnerSample->fileInfos.push_back(file_3840_2160_nv12);
2170 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
2171 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2172 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2173 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2174 vEncInnerSample->WaitForEOS();
2175 }
2176 }
2177
2178 /**
2179 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0080
2180 * @tc.name : h264 encode config 1920_1080 surface change 1920_1080 1080_1920 1280_1280
2181 * @tc.desc : function test
2182 */
2183 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0080, TestSize.Level1)
2184 {
2185 if (!access("/system/lib64/media/", 0)) {
2186 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2187 vEncInnerSample->DEFAULT_WIDTH = 1920;
2188 vEncInnerSample->DEFAULT_HEIGHT = 1080;
2189 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0080.h264";
2190 vEncInnerSample->surfaceInput = true;
2191 vEncInnerSample->readMultiFiles = true;
2192 vEncInnerSample->fileInfos.push_back(file_1920_1080_nv21);
2193 vEncInnerSample->fileInfos.push_back(file_1080_1920_nv12);
2194 vEncInnerSample->fileInfos.push_back(file_1280_1280_nv12);
2195 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecName));
2196 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2197 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2198 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2199 vEncInnerSample->WaitForEOS();
2200 }
2201 }
2202
2203 /**
2204 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0090
2205 * @tc.name : config main10 set format 8bit surface send 8bit yuv
2206 * @tc.desc : function test
2207 */
2208 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0090, TestSize.Level2)
2209 {
2210 if (!access("/system/lib64/media/", 0)) {
2211 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2212 vEncInnerSample->DEFAULT_WIDTH = 3840;
2213 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2214 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0090.h265";
2215 vEncInnerSample->surfaceInput = true;
2216 vEncInnerSample->readMultiFiles = true;
2217 vEncInnerSample->configMain10 = true;
2218 vEncInnerSample->setFormat8Bit = true;
2219 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2220 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2221 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2222 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2223 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2224 vEncInnerSample->WaitForEOS();
2225 }
2226 }
2227
2228 /**
2229 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0100
2230 * @tc.name : config main set format 10bit surface send 10bit yuv
2231 * @tc.desc : function test
2232 */
2233 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0100, TestSize.Level2)
2234 {
2235 if (!access("/system/lib64/media/", 0)) {
2236 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2237 vEncInnerSample->DEFAULT_WIDTH = 3840;
2238 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2239 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0100.h265";
2240 vEncInnerSample->surfaceInput = true;
2241 vEncInnerSample->readMultiFiles = true;
2242 vEncInnerSample->configMain = true;
2243 vEncInnerSample->setFormat10Bit = true;
2244 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12_10bit);
2245 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2246 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2247 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2248 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2249 vEncInnerSample->WaitForEOS();
2250 }
2251 }
2252
2253 /**
2254 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0110
2255 * @tc.name : Not supported pixelFormat rgbx
2256 * @tc.desc : function test
2257 */
2258 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0110, TestSize.Level2)
2259 {
2260 if (!access("/system/lib64/media/", 0)) {
2261 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2262 vEncInnerSample->DEFAULT_WIDTH = 3840;
2263 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2264 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0110.h265";
2265 vEncInnerSample->surfaceInput = true;
2266 vEncInnerSample->readMultiFiles = true;
2267 vEncInnerSample->setFormatRbgx = true;
2268 vEncInnerSample->fileInfos.push_back(file_640_480_rgba);
2269 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2270 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2271 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2272 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2273 vEncInnerSample->WaitForEOS();
2274 }
2275 }
2276
2277 /**
2278 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0120
2279 * @tc.name : config main set format 8bit send 10bit yuv
2280 * @tc.desc : function test
2281 */
2282 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0120, TestSize.Level2)
2283 {
2284 if (!access("/system/lib64/media/", 0)) {
2285 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2286 vEncInnerSample->DEFAULT_WIDTH = 3840;
2287 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2288 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0120.h265";
2289 vEncInnerSample->surfaceInput = true;
2290 vEncInnerSample->readMultiFiles = true;
2291 vEncInnerSample->configMain = true;
2292 vEncInnerSample->setFormat8Bit = true;
2293 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12_10bit);
2294 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2295 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2296 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2297 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2298 vEncInnerSample->WaitForEOS();
2299 }
2300 }
2301
2302 /**
2303 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0130
2304 * @tc.name : config main10 set format 10bit send 8bit yuv
2305 * @tc.desc : function test
2306 */
2307 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0130, TestSize.Level2)
2308 {
2309 if (!access("/system/lib64/media/", 0)) {
2310 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2311 vEncInnerSample->DEFAULT_WIDTH = 3840;
2312 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2313 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0130.h265";
2314 vEncInnerSample->surfaceInput = true;
2315 vEncInnerSample->readMultiFiles = true;
2316 vEncInnerSample->configMain10 = true;
2317 vEncInnerSample->setFormat10Bit = true;
2318 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2319 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2320 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2321 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2322 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2323 vEncInnerSample->WaitForEOS();
2324 }
2325 }
2326
2327 /**
2328 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0140
2329 * @tc.name : config main10 set format 8bit send 10bit yuv
2330 * @tc.desc : function test
2331 */
2332 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0140, TestSize.Level2)
2333 {
2334 if (!access("/system/lib64/media/", 0)) {
2335 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2336 vEncInnerSample->DEFAULT_WIDTH = 3840;
2337 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2338 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0140.h265";
2339 vEncInnerSample->surfaceInput = true;
2340 vEncInnerSample->readMultiFiles = true;
2341 vEncInnerSample->configMain10 = true;
2342 vEncInnerSample->setFormat8Bit = true;
2343 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12_10bit);
2344 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2345 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2346 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2347 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2348 vEncInnerSample->WaitForEOS();
2349 }
2350 }
2351
2352 /**
2353 * @tc.number : VIDEO_ENCODE_INNER_MULTIFILE_0150
2354 * @tc.name : config main10 set format 10bit send 8bit yuv
2355 * @tc.desc : function test
2356 */
2357 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_INNER_MULTIFILE_0150, TestSize.Level2)
2358 {
2359 if (!access("/system/lib64/media/", 0)) {
2360 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2361 vEncInnerSample->DEFAULT_WIDTH = 3840;
2362 vEncInnerSample->DEFAULT_HEIGHT = 2160;
2363 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_INNER_MULTIFILE_0150.h265";
2364 vEncInnerSample->surfaceInput = true;
2365 vEncInnerSample->readMultiFiles = true;
2366 vEncInnerSample->configMain10 = true;
2367 vEncInnerSample->setFormat10Bit = true;
2368 vEncInnerSample->fileInfos.push_back(file_1280_720_nv12);
2369 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2370 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2371 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2372 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2373 vEncInnerSample->WaitForEOS();
2374 }
2375 }
2376
2377 /**
2378 * @tc.number : VIDEO_ENCODE_SYNC_FUNC_0340
2379 * @tc.name : 264 waterMark encode
2380 * @tc.desc : func test
2381 */
2382 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_SYNC_FUNC_0340, TestSize.Level2)
2383 {
2384 auto vEncSample = make_unique<VEncNdkInnerSample>();
2385 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
2386 return;
2387 }
2388 BufferRequestConfig bufferConfig = {
2389 .width = 128,
2390 .height = 72,
2391 .strideAlignment = 0x8,
2392 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
2393 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
2394 .timeout = 0,
2395 };
2396 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
2397 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_SYNC_FUNC_0340.h264";
2398 vEncSample->surfaceInput = true;
2399 vEncSample->enableWaterMark = true;
2400 vEncSample->videoCoordinateX = 100;
2401 vEncSample->videoCoordinateY = 100;
2402 vEncSample->enbleSyncMode = 1;
2403 vEncSample->videoCoordinateWidth = bufferConfig.width;
2404 vEncSample->videoCoordinateHeight = bufferConfig.height;
2405
2406 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecName));
2407 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
2408 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
2409 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
2410 vEncSample->WaitForEOS();
2411 }
2412
2413 /**
2414 * @tc.number : VIDEO_ENCODE_SYNC_FUNC_0350
2415 * @tc.name : 265 waterMark encode
2416 * @tc.desc : func test
2417 */
2418 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_SYNC_FUNC_0350, TestSize.Level2)
2419 {
2420 auto vEncSample = make_unique<VEncNdkInnerSample>();
2421 if (!vEncSample->GetWaterMarkCapability(g_codecMime)) {
2422 return;
2423 }
2424 BufferRequestConfig bufferConfig = {
2425 .width = 1280,
2426 .height = 720,
2427 .strideAlignment = 0x8,
2428 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
2429 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
2430 .timeout = 0,
2431 };
2432 vEncSample->INP_DIR = "/data/test/media/1280_720_nv.yuv";
2433 vEncSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_SYNC_FUNC_0350.h265";
2434 vEncSample->WATER_MARK_DIR = "/data/test/media/1280_720_50.rgba";
2435
2436 vEncSample->surfaceInput = true;
2437 vEncSample->enableWaterMark = true;
2438 vEncSample->videoCoordinateX = 0;
2439 vEncSample->videoCoordinateY = 0;
2440 vEncSample->enbleSyncMode = 1;
2441 vEncSample->videoCoordinateWidth = bufferConfig.width;
2442 vEncSample->videoCoordinateHeight = bufferConfig.height;
2443
2444 ASSERT_EQ(AV_ERR_OK, vEncSample->CreateByName(g_codecNameHevc));
2445 ASSERT_EQ(AV_ERR_OK, vEncSample->Configure());
2446 ASSERT_EQ(AVCS_ERR_OK, vEncSample->SetCustomBuffer(bufferConfig));
2447 ASSERT_EQ(AV_ERR_OK, vEncSample->StartVideoEncoder());
2448 vEncSample->WaitForEOS();
2449 }
2450
2451 /**
2452 * @tc.number : VIDEO_ENCODE_RGBA1010102_0100
2453 * @tc.name : waterMark rgba1010102 265 surface encode
2454 * @tc.desc : func test
2455 */
2456 HWTEST_F(HwEncInnerFuncNdkTest, VIDEO_ENCODE_RGBA1010102_0100, TestSize.Level2)
2457 {
2458 auto vEncInnerSample = make_unique<VEncNdkInnerSample>();
2459 if (!vEncInnerSample->GetWaterMarkCapability(g_codecMime) || !IsSupportRgba1010102Format()) {
2460 return;
2461 }
2462 BufferRequestConfig bufferConfig = {
2463 .width = 1280,
2464 .height = 720,
2465 .strideAlignment = 0x8,
2466 .format = GraphicPixelFormat::GRAPHIC_PIXEL_FMT_RGBA_8888,
2467 .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
2468 .timeout = 0,
2469 };
2470 vEncInnerSample->INP_DIR = "/data/test/media/1280_720_rgba1010102.yuv";
2471 vEncInnerSample->OUT_DIR = "/data/test/media/VIDEO_ENCODE_RGBA1010102_0100.h265";
2472 vEncInnerSample->WATER_MARK_DIR = "/data/test/media/1280_720_50.rgba";
2473
2474 vEncInnerSample->surfaceInput = true;
2475 vEncInnerSample->enableWaterMark = true;
2476 vEncInnerSample->videoCoordinateX = 0;
2477 vEncInnerSample->configMain10 = true;
2478 vEncInnerSample->videoCoordinateY = 0;
2479 vEncInnerSample->DEFAULT_PIX_FMT = static_cast<int32_t>(VideoPixelFormat::RGBA1010102);
2480 vEncInnerSample->videoCoordinateWidth = bufferConfig.width;
2481 vEncInnerSample->videoCoordinateHeight = bufferConfig.height;
2482
2483 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->CreateByName(g_codecNameHevc));
2484 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->SetCallback());
2485 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->Configure());
2486 ASSERT_EQ(AVCS_ERR_OK, vEncInnerSample->SetCustomBuffer(bufferConfig));
2487 ASSERT_EQ(AV_ERR_OK, vEncInnerSample->StartVideoEncoder());
2488 vEncInnerSample->WaitForEOS();
2489 }
2490 } // namespace