From 4642e742e67015c34ad0d09e8c0af5dc1d144aec Mon Sep 17 00:00:00 2001 From: zhaihaipeng1 Date: Mon, 4 Jul 2022 17:40:02 +0800 Subject: [PATCH] =?UTF-8?q?make=20capture=20and=20video=20UT=20run=20succe?= =?UTF-8?q?ss=E2=80=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhaihaipeng1 --- camera/hal/test/v4l2/BUILD.gn | 4 +- .../{video_test.h => camera_capture_test.h} | 10 +- .../{preview_test.h => camera_preview_test.h} | 10 +- .../{capture_test.h => camera_video_test.h} | 8 +- camera/hal/test/v4l2/include/test_display.h | 1 + ...pture_test.cpp => camera_capture_test.cpp} | 206 +++++++++------- ...eview_test.cpp => camera_preview_test.cpp} | 220 ++++++++++++++---- .../{video_test.cpp => camera_video_test.cpp} | 189 +++++++-------- .../test/v4l2/src/hdfcamera_facedetect.cpp | 4 +- camera/hal/test/v4l2/src/test_display.cpp | 15 +- 10 files changed, 429 insertions(+), 238 deletions(-) rename camera/hal/test/v4l2/include/{video_test.h => camera_capture_test.h} (80%) rename camera/hal/test/v4l2/include/{preview_test.h => camera_preview_test.h} (80%) rename camera/hal/test/v4l2/include/{capture_test.h => camera_video_test.h} (85%) rename camera/hal/test/v4l2/src/{capture_test.cpp => camera_capture_test.cpp} (62%) rename camera/hal/test/v4l2/src/{preview_test.cpp => camera_preview_test.cpp} (87%) rename camera/hal/test/v4l2/src/{video_test.cpp => camera_video_test.cpp} (71%) diff --git a/camera/hal/test/v4l2/BUILD.gn b/camera/hal/test/v4l2/BUILD.gn index ce83769339..7dbc99e495 100644 --- a/camera/hal/test/v4l2/BUILD.gn +++ b/camera/hal/test/v4l2/BUILD.gn @@ -128,11 +128,13 @@ if (defined(ohos_lite)) { module_out_path = module_output_path sources = [ "./src/camera_ability_test.cpp", + "./src/camera_capture_test.cpp", + "./src/camera_preview_test.cpp", "./src/camera_stabili_test.cpp", + "./src/camera_video_test.cpp", "./src/double_preview_test.cpp", "./src/hdfcamera_facedetect.cpp", "./src/open_camera_test.cpp", - "./src/preview_test.cpp", "./src/stream_customer.cpp", "./src/test_display.cpp", ] diff --git a/camera/hal/test/v4l2/include/video_test.h b/camera/hal/test/v4l2/include/camera_capture_test.h similarity index 80% rename from camera/hal/test/v4l2/include/video_test.h rename to camera/hal/test/v4l2/include/camera_capture_test.h index 5fac905a50..b85bbe564b 100644 --- a/camera/hal/test/v4l2/include/video_test.h +++ b/camera/hal/test/v4l2/include/camera_capture_test.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -13,13 +13,17 @@ * limitations under the License. */ +#ifndef CAMERA_CAPTURE_TEST_H +#define CAMERA_CAPTURE_TEST_H + #include "test_display.h" -class UtestVideoTest : public testing::Test { +class CameraCaptureTest : public testing::Test { public: static void SetUpTestCase(void); static void TearDownTestCase(void); void SetUp(void); void TearDown(void); std::shared_ptr display_ = nullptr; -}; \ No newline at end of file +}; +#endif /* CAMERA_CAPTURE_TEST_H */ diff --git a/camera/hal/test/v4l2/include/preview_test.h b/camera/hal/test/v4l2/include/camera_preview_test.h similarity index 80% rename from camera/hal/test/v4l2/include/preview_test.h rename to camera/hal/test/v4l2/include/camera_preview_test.h index 5e41e9fc0b..0b3b21b210 100644 --- a/camera/hal/test/v4l2/include/preview_test.h +++ b/camera/hal/test/v4l2/include/camera_preview_test.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -13,14 +13,18 @@ * limitations under the License. */ +#ifndef CAMERA_PREVIEW_TEST_H +#define CAMERA_PREVIEW_TEST_H + #include "test_display.h" #include "stream_customer.h" -class UtestPreviewTest : public testing::Test { +class CameraPreviewTest : public testing::Test { public: static void SetUpTestCase(void); static void TearDownTestCase(void); void SetUp(void); void TearDown(void); std::shared_ptr display_ = nullptr; -}; \ No newline at end of file +}; +#endif /* CAMERA_PREVIEW_TEST_H */ diff --git a/camera/hal/test/v4l2/include/capture_test.h b/camera/hal/test/v4l2/include/camera_video_test.h similarity index 85% rename from camera/hal/test/v4l2/include/capture_test.h rename to camera/hal/test/v4l2/include/camera_video_test.h index 063bf16070..4df3690a5f 100644 --- a/camera/hal/test/v4l2/include/capture_test.h +++ b/camera/hal/test/v4l2/include/camera_video_test.h @@ -13,13 +13,17 @@ * limitations under the License. */ +#ifndef CAMERA_VIDEO_TEST_H +#define CAMERA_VIDEO_TEST_H + #include "test_display.h" -class UtestCaptureTest : public testing::Test { +class CameraVideoTest : public testing::Test { public: static void SetUpTestCase(void); static void TearDownTestCase(void); void SetUp(void); void TearDown(void); std::shared_ptr display_ = nullptr; -}; \ No newline at end of file +}; +#endif /* CAMERA_VIDEO_TEST_H */ diff --git a/camera/hal/test/v4l2/include/test_display.h b/camera/hal/test/v4l2/include/test_display.h index f36f06ace9..1cdf86070f 100644 --- a/camera/hal/test/v4l2/include/test_display.h +++ b/camera/hal/test/v4l2/include/test_display.h @@ -159,6 +159,7 @@ public: void StoreVideo(const void *bufStart, const uint32_t size) const; void OpenVideoFile(); void PrintFaceDetectInfo(const void *bufStart, const uint32_t size) const; + void CloseFd(); int videoFd_ = -1; }; diff --git a/camera/hal/test/v4l2/src/capture_test.cpp b/camera/hal/test/v4l2/src/camera_capture_test.cpp similarity index 62% rename from camera/hal/test/v4l2/src/capture_test.cpp rename to camera/hal/test/v4l2/src/camera_capture_test.cpp index d7d62c1f9a..6cc1952dc9 100644 --- a/camera/hal/test/v4l2/src/capture_test.cpp +++ b/camera/hal/test/v4l2/src/camera_capture_test.cpp @@ -1,10 +1,10 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file expected in compliance with the License. + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -12,20 +12,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "capture_test.h" +#include "camera_capture_test.h" -void UtestCaptureTest::SetUpTestCase(void) +using namespace testing::ext; + +void CameraCaptureTest::SetUpTestCase(void) {} -void UtestCaptureTest::TearDownTestCase(void) +void CameraCaptureTest::TearDownTestCase(void) {} -void UtestCaptureTest::SetUp(void) +void CameraCaptureTest::SetUp(void) { if (display_ == nullptr) display_ = std::make_shared(); - display_->FBInit(); display_->Init(); } -void UtestCaptureTest::TearDown(void) +void CameraCaptureTest::TearDown(void) { display_->Close(); } @@ -33,22 +34,22 @@ void UtestCaptureTest::TearDown(void) /** * @tc.name: preview and capture * @tc.desc: Commit 2 streams together, Preview and still_capture streams, isStreaming is true. - * @tc.level: Level0 + * @tc.level: Level1 * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestCaptureTest, camera_capture_0001) +HWTEST_F(CameraCaptureTest, camera_capture_001, TestSize.Level1) { // Get the stream manager display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::STILL_CAPTURE}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_capture, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_capture}; display_->streamIds = {display_->streamId_preview, display_->streamId_capture}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -60,20 +61,20 @@ TEST_F(UtestCaptureTest, camera_capture_0001) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestCaptureTest, camera_capture_0002) +HWTEST_F(CameraCaptureTest, camera_capture_002, TestSize.Level1) { std::cout << "==========[test log] Preview + capture, then cloase camera,"; std::cout << "and preview + capture again." << std::endl; // Get the stream manager display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::STILL_CAPTURE}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_capture, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_capture}; display_->streamIds = {display_->streamId_preview, display_->streamId_capture}; display_->StopStream(display_->captureIds, display_->streamIds); @@ -82,13 +83,13 @@ TEST_F(UtestCaptureTest, camera_capture_0002) // Get the stream manager display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::STILL_CAPTURE}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_capture, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_capture}; display_->streamIds = {display_->streamId_preview, display_->streamId_capture}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -100,29 +101,29 @@ TEST_F(UtestCaptureTest, camera_capture_0002) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestCaptureTest, camera_capture_0003) +HWTEST_F(CameraCaptureTest, camera_capture_003, TestSize.Level1) { std::cout << "==========[test log] Capture with 3A, success." << std::endl; // Get the stream manager display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::STILL_CAPTURE}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_capture, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, true); // Issue 3A parameters to increase exposure std::shared_ptr meta = std::make_shared(100, 2000); int32_t expo = 0xa0; meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1); display_->rc = display_->cameraDevice->UpdateSettings(meta); - if (display_->rc == Camera::NO_ERROR) { + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] UpdateSettings success, for 10s." << std::endl; } else { std::cout << "==========[test log] UpdateSettings fail, rc = " << display_->rc << std::endl; } // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_capture}; display_->streamIds = {display_->streamId_preview, display_->streamId_capture}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -134,34 +135,35 @@ TEST_F(UtestCaptureTest, camera_capture_0003) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestCaptureTest, camera_capture_0004) +HWTEST_F(CameraCaptureTest, camera_capture_004, TestSize.Level1) { std::cout << "==========[test log] Preview + capture, then switch to preview + video." << std::endl; std::cout << "==========[test log] First, create preview + capture." << std::endl; // Get the stream manager display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::STILL_CAPTURE}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_capture, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_capture}; display_->streamIds = {display_->streamId_preview, display_->streamId_capture}; display_->StopStream(display_->captureIds, display_->streamIds); + sleep(5); std::cout << "==========[test log] Next, switch to preview + video." << display_->rc << std::endl; // Get the stream manager display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_video, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -169,23 +171,42 @@ TEST_F(UtestCaptureTest, camera_capture_0004) /** * @tc.name: preview and capture * @tc.desc: Commit 2 streams together, Preview and still_capture streams, isStreaming is false. - * @tc.level: Level0 + * @tc.level: Level1 * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestCaptureTest, camera_capture_0006) +HWTEST_F(CameraCaptureTest, camera_capture_006, TestSize.Level1) { // Get the stream manager display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::STILL_CAPTURE}; display_->StartStream(display_->intents); // Get preview - display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, false); - display_->StartCapture(display_->streamId_capture, display_->captureId_preview, false, false); - display_->captureIds = {display_->captureId_preview}; - display_->streamIds = {display_->streamId_preview, display_->streamId_capture}; - display_->StopStream(display_->captureIds, display_->streamIds); + display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, false); + + sleep(5); + std::cout << "==========[test log] frame off." << std::endl; + display_->streamCustomerPreview_->ReceiveFrameOff(); + display_->streamCustomerCapture_->ReceiveFrameOff(); + + display_->rc = display_->streamOperator->ReleaseStreams( + {display_->streamId_capture}); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { + std::cout << "==========[test log] ReleaseStreams success." << std::endl; + } else { + std::cout << "==========[test log] ReleaseStreams fail, rc = ." << display_->rc << std::endl; + } + display_->rc = display_->streamOperator->ReleaseStreams( + {display_->streamId_preview}); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { + std::cout << "==========[test log] ReleaseStreams success." << std::endl; + } else { + std::cout << "==========[test log] ReleaseStreams fail, rc = ." << display_->rc << std::endl; + } } /** @@ -195,50 +216,55 @@ TEST_F(UtestCaptureTest, camera_capture_0006) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestCaptureTest, camera_capture_0010) +HWTEST_F(CameraCaptureTest, camera_capture_010, TestSize.Level1) { std::cout << "==========[test log] Preview and still_capture streams." << std::endl; // Configure two streams of information EXPECT_EQ(true, display_->cameraDevice != nullptr); display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW}; + display_->intents = {OHOS::Camera::PREVIEW}; display_->StartStream(display_->intents); // Start capture display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); // Configure capture stream information - display_->intents = {Camera::STILL_CAPTURE}; + display_->intents = {OHOS::Camera::STILL_CAPTURE}; display_->StartStream(display_->intents); // Start capture display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, true); + sleep(2); // post-processing + display_->streamCustomerPreview_->ReceiveFrameOff(); + display_->streamCustomerCapture_->ReceiveFrameOff(); display_->rc = display_->streamOperator->CancelCapture(display_->captureId_capture); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] CancelCapture success." << std::endl; } else { std::cout << "==========[test log] CancelCapture fail, rc = ." << display_->rc << std::endl; } display_->rc = display_->streamOperator->CancelCapture(display_->captureId_preview); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] CancelCapture success." << std::endl; } else { std::cout << "==========[test log] CancelCapture fail, rc = ." << display_->rc << std::endl; } - display_->rc = display_->streamOperator->ReleaseStreams({display_->streamId_capture}); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + display_->rc = display_->streamOperator->ReleaseStreams( + {display_->streamId_capture}); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] ReleaseStreams success." << std::endl; } else { std::cout << "==========[test log] ReleaseStreams fail, rc = ." << display_->rc << std::endl; } - display_->rc = display_->streamOperator->ReleaseStreams({display_->streamId_preview}); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + display_->rc = display_->streamOperator->ReleaseStreams( + {display_->streamId_preview}); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] ReleaseStreams success." << std::endl; } else { std::cout << "==========[test log] ReleaseStreams fail, rc = ." << display_->rc << std::endl; @@ -252,45 +278,47 @@ TEST_F(UtestCaptureTest, camera_capture_0010) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestCaptureTest, camera_capture_0020) +HWTEST_F(CameraCaptureTest, camera_capture_020, TestSize.Level1) { std::cout << "==========[test log] No preview, only still_capture." << std::endl; // start stream display_->AchieveStreamOperator(); - std::shared_ptr producer = IBufferProducer::CreateBufferQueue(); - producer->SetQueueSize(8); // 8:buffer queue size - if (producer->GetQueueSize() != 8) { // 8:buffer queue size + std::shared_ptr streamCustomer = std::make_shared(); + OHOS::sptr producer = streamCustomer->CreateProducer(); + producer->SetQueueSize(8); // buffer queue size + if (producer->GetQueueSize() != 8) { // buffer queue size std::cout << "~~~~~~~" << std::endl; } - auto callback = [this](std::shared_ptr b) { - display_->BufferCallback(b, display_->capture_mode); - return; - }; - producer->SetCallback(callback); - std::vector> streamInfos; + streamCustomer->ReceiveFrameOn([this](void* addr, const uint32_t size) { + display_->StoreImage(addr, size); + }); + std::vector> streamInfos; display_->streamInfo = std::make_shared(); display_->streamInfo->streamId_ = 1001; - display_->streamInfo->width_ = 640; // 640:picture width - display_->streamInfo->height_ = 480; // 640:picture height - display_->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; - display_->streamInfo->datasapce_ = 8; // 8:picture datasapce - display_->streamInfo->intent_ = STILL_CAPTURE; - display_->streamInfo->tunneledMode_ = 5; // 5:tunnel mode + display_->streamInfo->width_ = 1280; // picture width + display_->streamInfo->height_ = 960; // picture height + display_->streamInfo->format_ = PIXEL_FMT_RGBA_8888; + display_->streamInfo->datasapce_ = 8; // picture datasapce + display_->streamInfo->intent_ = OHOS::Camera::STILL_CAPTURE; + display_->streamInfo->tunneledMode_ = 5; // tunnel mode + display_->streamInfo->encodeType_ = OHOS::Camera::ENCODE_TYPE_JPEG; display_->streamInfo->bufferQueue_ = producer; streamInfos.push_back(display_->streamInfo); display_->rc = display_->streamOperator->CreateStreams(streamInfos); CAMERA_LOGE("CreateStreams! rc:0x%x\n", display_->rc); - display_->rc = display_->streamOperator->CommitStreams(NORMAL, nullptr); + display_->rc = display_->streamOperator->CommitStreams(OHOS::Camera::NORMAL, display_->ability); CAMERA_LOGE("CommitStreams! rc:0x%x\n", display_->rc); int captureId = 2001; - std::shared_ptr captureInfo = std::make_shared(); + std::shared_ptr captureInfo = std::make_shared(); captureInfo->streamIds_ = {1001}; + captureInfo->captureSetting_ = display_->ability; captureInfo->enableShutterCallback_ = false; display_->rc = display_->streamOperator->Capture(captureId, captureInfo, false); CAMERA_LOGE("Capture! rc:0x%x\n", display_->rc); sleep(5); + streamCustomer->ReceiveFrameOff(); display_->rc = display_->streamOperator->CancelCapture(captureId); CAMERA_LOGE("CancelCapture! rc:0x%x\n", display_->rc); display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_); @@ -304,51 +332,53 @@ TEST_F(UtestCaptureTest, camera_capture_0020) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestCaptureTest, camera_capture_0021) +HWTEST_F(CameraCaptureTest, camera_capture_021, TestSize.Level1) { std::cout << "==========[test log] Still_capture stream, capture->isStreaming = true." << std::endl; // start stream display_->AchieveStreamOperator(); - std::shared_ptr producer = IBufferProducer::CreateBufferQueue(); + std::shared_ptr streamCustomer = std::make_shared(); + OHOS::sptr producer = streamCustomer->CreateProducer(); producer->SetQueueSize(8); // 8:set bufferqueue size if (producer->GetQueueSize() != 8) { // 8:get bufferqueue size std::cout << "~~~~~~~" << std::endl; } - auto callback = [this](std::shared_ptr b) { - display_->BufferCallback(b, display_->capture_mode); - return; - }; - producer->SetCallback(callback); - std::vector> streamInfos; + streamCustomer->ReceiveFrameOn([this](void* addr, const uint32_t size) { + display_->StoreImage(addr, size); + }); + std::vector> streamInfos; display_->streamInfo = std::make_shared(); display_->streamInfo->streamId_ = 1001; - display_->streamInfo->width_ = 640; // 640:picture width - display_->streamInfo->height_ = 480; // 640:picture height - display_->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; + display_->streamInfo->width_ = 1280; // 640:picture width + display_->streamInfo->height_ = 960; // 640:picture height + display_->streamInfo->format_ = PIXEL_FMT_RGBA_8888; display_->streamInfo->datasapce_ = 8; // 8:picture datasapce - display_->streamInfo->intent_ = STILL_CAPTURE; + display_->streamInfo->intent_ = OHOS::Camera::STILL_CAPTURE; display_->streamInfo->tunneledMode_ = 5; // 5:tunnel mode + display_->streamInfo->encodeType_ = OHOS::Camera::ENCODE_TYPE_JPEG; display_->streamInfo->bufferQueue_ = producer; streamInfos.push_back(display_->streamInfo); display_->rc = display_->streamOperator->CreateStreams(streamInfos); CAMERA_LOGE("CreateStreams! rc:0x%x\n", display_->rc); - display_->rc = display_->streamOperator->CommitStreams(NORMAL, nullptr); + display_->rc = display_->streamOperator->CommitStreams(OHOS::Camera::NORMAL, display_->ability); CAMERA_LOGE("CommitStreams! rc:0x%x\n", display_->rc); int captureId = 2001; - std::shared_ptr captureInfo = std::make_shared(); + std::shared_ptr captureInfo = std::make_shared(); captureInfo->streamIds_ = {1001}; + captureInfo->captureSetting_ = display_->ability; captureInfo->enableShutterCallback_ = false; display_->rc = display_->streamOperator->Capture(captureId, captureInfo, true); CAMERA_LOGE("Capture! rc:0x%x\n", display_->rc); sleep(5); + streamCustomer->ReceiveFrameOff(); display_->rc = display_->streamOperator->CancelCapture(captureId); CAMERA_LOGE("CancelCapture! rc:0x%x\n", display_->rc); display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_); CAMERA_LOGE("ReleaseStreams! rc:0x%x\n", display_->rc); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] ReleaseStreams success." << std::endl; } else { std::cout << "==========[test log] ReleaseStreams fail, rc = ." << display_->rc << std::endl; diff --git a/camera/hal/test/v4l2/src/preview_test.cpp b/camera/hal/test/v4l2/src/camera_preview_test.cpp similarity index 87% rename from camera/hal/test/v4l2/src/preview_test.cpp rename to camera/hal/test/v4l2/src/camera_preview_test.cpp index 8d71e285f8..73c2799dcb 100644 --- a/camera/hal/test/v4l2/src/preview_test.cpp +++ b/camera/hal/test/v4l2/src/camera_preview_test.cpp @@ -1,7 +1,7 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file expected in compliance with the License. + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 @@ -12,18 +12,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "preview_test.h" +#include "camera_preview_test.h" -void UtestPreviewTest::SetUpTestCase(void){ +using namespace testing::ext; + +void CameraPreviewTest::SetUpTestCase(void) +{ } -void UtestPreviewTest::TearDownTestCase(void){} -void UtestPreviewTest::SetUp(void) + +void CameraPreviewTest::TearDownTestCase(void) +{ +} + +void CameraPreviewTest::SetUp(void) { if (display_ == nullptr) display_ = std::make_shared(); display_->Init(); } -void UtestPreviewTest::TearDown(void) + +void CameraPreviewTest::TearDown(void) { display_->Close(); } @@ -31,11 +39,11 @@ void UtestPreviewTest::TearDown(void) /** * @tc.name: Preview * @tc.desc: Preview stream, expected success. - * @tc.level: Level0 + * @tc.level: Level1 * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0001) +HWTEST_F(CameraPreviewTest, camera_preview_001, TestSize.Level1) { std::cout << "==========[test log] Preview stream, expected success." << std::endl; // Get the stream manager @@ -58,7 +66,7 @@ TEST_F(UtestPreviewTest, camera_preview_0001) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0003) +HWTEST_F(CameraPreviewTest, camera_preview_003, TestSize.Level2) { std::cout << "==========[test log] Preview, format error, expected return errorCode." << std::endl; // Create and get streamOperator information @@ -99,7 +107,7 @@ TEST_F(UtestPreviewTest, camera_preview_0003) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0010) +HWTEST_F(CameraPreviewTest, camera_preview_010, TestSize.Level1) { std::cout << "==========[test log] GetStreamOperator success." << std::endl; // Get the configured cameraId @@ -121,7 +129,7 @@ TEST_F(UtestPreviewTest, camera_preview_0010) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0011) +HWTEST_F(CameraPreviewTest, camera_preview_011, TestSize.Level2) { std::cout << "==========[test log] GetStreamOperator, input nullptr." << std::endl; // Get the configured cameraId @@ -147,7 +155,7 @@ TEST_F(UtestPreviewTest, camera_preview_0011) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0020) +HWTEST_F(CameraPreviewTest, camera_preview_020, TestSize.Level1) { std::cout << "==========[test log] CreateStreams, success." << std::endl; // Create and get streamOperator information @@ -200,7 +208,7 @@ TEST_F(UtestPreviewTest, camera_preview_0020) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0021) +HWTEST_F(CameraPreviewTest, camera_preview_021, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, success." << std::endl; // Create and get streamOperator information @@ -242,7 +250,7 @@ TEST_F(UtestPreviewTest, camera_preview_0021) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0022) +HWTEST_F(CameraPreviewTest, camera_preview_022, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->streamId = 2147483647,"; std::cout << "return success." << std::endl; @@ -295,7 +303,7 @@ TEST_F(UtestPreviewTest, camera_preview_0022) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0023) +HWTEST_F(CameraPreviewTest, camera_preview_023, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->width = -1, return error." << std::endl; // Create and get streamOperator information @@ -338,7 +346,7 @@ TEST_F(UtestPreviewTest, camera_preview_0023) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0025) +HWTEST_F(CameraPreviewTest, camera_preview_025, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->height = -1, return error." << std::endl; // Create and get streamOperator information @@ -381,7 +389,7 @@ TEST_F(UtestPreviewTest, camera_preview_0025) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0027) +HWTEST_F(CameraPreviewTest, camera_preview_027, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->format = -1, return error." << std::endl; display_->AchieveStreamOperator(); @@ -423,7 +431,7 @@ TEST_F(UtestPreviewTest, camera_preview_0027) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0030) +HWTEST_F(CameraPreviewTest, camera_preview_030, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->datasapce = 2147483647, success." << std::endl; // Create and get streamOperator information @@ -476,7 +484,7 @@ TEST_F(UtestPreviewTest, camera_preview_0030) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0031) +HWTEST_F(CameraPreviewTest, camera_preview_031, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = "; std::cout << "OHOS::Camera::PREVIEW, success." << std::endl; @@ -493,6 +501,55 @@ TEST_F(UtestPreviewTest, camera_preview_0031) display_->StopStream(display_->captureIds, display_->streamIds); } +/** + * @tc.name: Preview + * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::VIDEO, success. + * @tc.level: Level2 + * @tc.size: MediumTest + * @tc.type: Function + */ +HWTEST_F(CameraPreviewTest, camera_preview_032, TestSize.Level2) +{ + std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = Camera::VIDEO, success." << std::endl; + // Create and get streamOperator information + display_->AchieveStreamOperator(); + // start stream + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; + display_->StartStream(display_->intents); + // Get preview + display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); + // release stream + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; + display_->streamIds = {display_->streamId_preview, display_->streamId_video}; + display_->StopStream(display_->captureIds, display_->streamIds); +} + +/** + * @tc.name: Preview + * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::STILL_CAPTURE, success. + * @tc.level: Level2 + * @tc.size: MediumTest + * @tc.type: Function + */ +HWTEST_F(CameraPreviewTest, camera_preview_033, TestSize.Level2) +{ + std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = "; + std::cout << "Camera::STILL_CAPTURE, success." << std::endl; + // Get the stream manager + display_->AchieveStreamOperator(); + // start stream + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::STILL_CAPTURE}; + display_->StartStream(display_->intents); + // Get preview + display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, true); + // release stream + display_->captureIds = {display_->captureId_preview, display_->captureId_capture}; + display_->streamIds = {display_->streamId_preview, display_->streamId_capture}; + display_->StopStream(display_->captureIds, display_->streamIds); +} + /** * @tc.name: Preview * @tc.desc: CreateStreams, StreamInfo->StreamIntent = OHOS::Camera::POST_VIEW;, success. @@ -500,7 +557,7 @@ TEST_F(UtestPreviewTest, camera_preview_0031) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0034) +HWTEST_F(CameraPreviewTest, camera_preview_034, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = "; std::cout << "Camera::POST_VIEW;, success." << std::endl; @@ -555,7 +612,7 @@ TEST_F(UtestPreviewTest, camera_preview_0034) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0035) +HWTEST_F(CameraPreviewTest, camera_preview_035, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = "; std::cout << "Camera::ANALYZE;, success." << std::endl; @@ -607,7 +664,7 @@ TEST_F(UtestPreviewTest, camera_preview_0035) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0036) +HWTEST_F(CameraPreviewTest, camera_preview_036, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = "; std::cout << "Camera::CUSTOM, not support." << std::endl; @@ -651,7 +708,7 @@ TEST_F(UtestPreviewTest, camera_preview_0036) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0037) +HWTEST_F(CameraPreviewTest, camera_preview_037, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->tunneledMode = false, success." << std::endl; // Create and get streamOperator information @@ -694,7 +751,7 @@ TEST_F(UtestPreviewTest, camera_preview_0037) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0038) +HWTEST_F(CameraPreviewTest, camera_preview_038, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->minFrameDuration = -1, "; std::cout << "return error." << std::endl; @@ -735,7 +792,7 @@ TEST_F(UtestPreviewTest, camera_preview_0038) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0039) +HWTEST_F(CameraPreviewTest, camera_preview_039, TestSize.Level2) { std::cout << "==========[test log] CreateStreams, StreamInfo->minFrameDuration = 2147483647, "; std::cout << "success." << std::endl; @@ -776,7 +833,7 @@ TEST_F(UtestPreviewTest, camera_preview_0039) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0040) +HWTEST_F(CameraPreviewTest, camera_preview_040, TestSize.Level2) { std::cout << "==========[test log] Preview, CommitStreams Metadata = nullptr." << std::endl; // Create and get streamOperator information @@ -819,7 +876,7 @@ TEST_F(UtestPreviewTest, camera_preview_0040) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0050) +HWTEST_F(CameraPreviewTest, camera_preview_050, TestSize.Level2) { std::cout << "==========[test log] Preview, CommitStreams without CreateStreams, expected fail." << std::endl; // Create and get streamOperator information @@ -841,7 +898,7 @@ TEST_F(UtestPreviewTest, camera_preview_0050) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0060) +HWTEST_F(CameraPreviewTest, camera_preview_060, TestSize.Level1) { std::cout << "==========[test log] Preview and release streams, success." << std::endl; // Create and get streamOperator information @@ -895,7 +952,7 @@ TEST_F(UtestPreviewTest, camera_preview_0060) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0061) +HWTEST_F(CameraPreviewTest, camera_preview_061, TestSize.Level2) { std::cout << "==========[test log] ReleaseStreams-> streamID = -1, expected success." << std::endl; // Create and get streamOperator information @@ -939,10 +996,12 @@ TEST_F(UtestPreviewTest, camera_preview_0061) display_->streamOperator->CancelCapture(captureId); EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); // release stream - display_->rc = display_->streamOperator->ReleaseStreams({-1}); + display_->rc = display_->streamOperator->ReleaseStreams( + {-1}); std::cout << "streamOperator->ReleaseStreams's rc = " << display_->rc << std::endl; EXPECT_EQ(true, display_->rc == OHOS::Camera::INVALID_ARGUMENT); - display_->rc = display_->streamOperator->ReleaseStreams({1001}); + display_->rc = display_->streamOperator->ReleaseStreams( + {1001}); EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); std::cout << "streamOperator->ReleaseStreams's RetCode = " << display_->rc << std::endl; } @@ -954,14 +1013,15 @@ TEST_F(UtestPreviewTest, camera_preview_0061) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0062) +HWTEST_F(CameraPreviewTest, camera_preview_062, TestSize.Level2) { std::cout << "==========[test log] ReleaseStreams no exist streamID, expect success." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); std::vector> streamInfos; std::shared_ptr streamInfo = std::make_shared(); - display_->rc = display_->streamOperator->ReleaseStreams({9999}); + display_->rc = display_->streamOperator->ReleaseStreams( + {9999}); std::cout << "streamOperator->ReleaseStreams's RetCode = " << display_->rc << std::endl; EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); } @@ -973,7 +1033,7 @@ TEST_F(UtestPreviewTest, camera_preview_0062) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0070) +HWTEST_F(CameraPreviewTest, camera_preview_070, TestSize.Level2) { std::cout << "==========[test log] Preview, Capture->captureInfo->streamID = -1 ,return error." << std::endl; // Create and get streamOperator information @@ -1030,7 +1090,7 @@ TEST_F(UtestPreviewTest, camera_preview_0070) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0071) +HWTEST_F(CameraPreviewTest, camera_preview_071, TestSize.Level2) { std::cout << "==========[test log] Preview, Capture->captureInfo->streamID = 2147483647 ,"; std::cout << "return success." << std::endl; @@ -1086,7 +1146,7 @@ TEST_F(UtestPreviewTest, camera_preview_0071) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0072) +HWTEST_F(CameraPreviewTest, camera_preview_072, TestSize.Level2) { std::cout << "==========[test log] Preview, Capture->captureInfo->enableShutterCallback = false ,"; std::cout << "return success." << std::endl; @@ -1110,7 +1170,7 @@ TEST_F(UtestPreviewTest, camera_preview_0072) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0073) +HWTEST_F(CameraPreviewTest, camera_preview_073, TestSize.Level2) { std::cout << "==========[test log] Preview, Capture->isStreaming = false ,expected success." << std::endl; // Create and get streamOperator information @@ -1141,7 +1201,7 @@ TEST_F(UtestPreviewTest, camera_preview_0073) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0074) +HWTEST_F(CameraPreviewTest, camera_preview_074, TestSize.Level2) { std::cout << "==========[test log] Preview, Capture->captureId = -1 ,return error." << std::endl; // Create and get streamOperator information @@ -1167,7 +1227,7 @@ TEST_F(UtestPreviewTest, camera_preview_0074) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0075) +HWTEST_F(CameraPreviewTest, camera_preview_075, TestSize.Level2) { std::cout << "==========[test log] Preview, Capture->captureInfo->enableShutterCallback = true ,"; std::cout << "return success." << std::endl; @@ -1191,7 +1251,7 @@ TEST_F(UtestPreviewTest, camera_preview_0075) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0080) +HWTEST_F(CameraPreviewTest, camera_preview_080, TestSize.Level2) { std::cout << "==========[test log] CancelCapture captureID = -1, expected fail." << std::endl; // Create and get streamOperator information @@ -1249,7 +1309,7 @@ TEST_F(UtestPreviewTest, camera_preview_0080) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0090) +HWTEST_F(CameraPreviewTest, camera_preview_090, TestSize.Level2) { std::cout << "==========[test log] CancelCapture without Create capture ." << std::endl; // Create and get streamOperator information @@ -1275,7 +1335,7 @@ TEST_F(UtestPreviewTest, camera_preview_0090) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestPreviewTest, camera_preview_0091) +HWTEST_F(CameraPreviewTest, camera_preview_091, TestSize.Level2) { std::cout << "==========[test log] Create capture, then release streams." << std::endl; // Create and get streamOperator information @@ -1290,3 +1350,77 @@ TEST_F(UtestPreviewTest, camera_preview_0091) display_->streamIds = {display_->streamId_preview}; display_->StopStream(display_->captureIds, display_->streamIds); } + +/** + * @tc.name: Preview + * @tc.desc: The same CaptureID, Create capture twice, expected fail. + * @tc.level: Level2 + * @tc.size: MediumTest + * @tc.type: Function + */ +HWTEST_F(CameraPreviewTest, camera_preview_092, TestSize.Level2) +{ + std::cout << "==========[test log] The same CaptureID, Create capture twice, expected fail." << std::endl; + // Create and get streamOperator information + display_->AchieveStreamOperator(); + // start stream + display_->intents = {OHOS::Camera::PREVIEW}; + display_->StartStream(display_->intents); + + int captureId = display_->captureId_preview; + std::shared_ptr captureInfo = std::make_shared(); + captureInfo->streamIds_ = {display_->streamId_preview}; + captureInfo->captureSetting_ = display_->ability; + captureInfo->enableShutterCallback_ = false; + bool isStreaming = true; + display_->rc = display_->streamOperator->Capture(captureId, captureInfo, isStreaming); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + + display_->rc = display_->streamOperator->Capture(captureId, captureInfo, isStreaming); + EXPECT_EQ(false, display_->rc == OHOS::Camera::NO_ERROR); + + sleep(2); + // cancel capture + display_->rc = display_->streamOperator->CancelCapture(captureId); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + + // release stream + display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); +} + +/** + * @tc.name: Preview + * @tc.desc: Different captureIDs, Create capture,expected success. + * @tc.level: Level2 + * @tc.size: MediumTest + * @tc.type: Function + */ +HWTEST_F(CameraPreviewTest, camera_preview_093, TestSize.Level2) +{ + std::cout << "==========[test log] Different captureIDs, Create capture,expected success." << std::endl; + // Create and get streamOperator information + display_->AchieveStreamOperator(); + // Create data stream + display_->intents = {OHOS::Camera::PREVIEW}; + display_->StartStream(display_->intents); + // Get preview + int captureId = display_->captureId_preview; + std::shared_ptr captureInfo = std::make_shared(); + captureInfo->streamIds_ = {display_->streamId_preview}; + captureInfo->captureSetting_ = display_->ability; + captureInfo->enableShutterCallback_ = false; + bool isStreaming = true; + display_->rc = display_->streamOperator->Capture(captureId, captureInfo, isStreaming); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + display_->rc = display_->streamOperator->Capture(captureId + 1, captureInfo, isStreaming); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + + sleep(2); + // cancel capture + display_->streamOperator->CancelCapture(captureId); + display_->streamOperator->CancelCapture(captureId + 1); + // release stream + display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); +} \ No newline at end of file diff --git a/camera/hal/test/v4l2/src/video_test.cpp b/camera/hal/test/v4l2/src/camera_video_test.cpp similarity index 71% rename from camera/hal/test/v4l2/src/video_test.cpp rename to camera/hal/test/v4l2/src/camera_video_test.cpp index 973470ba54..1ae8111c9b 100644 --- a/camera/hal/test/v4l2/src/video_test.cpp +++ b/camera/hal/test/v4l2/src/camera_video_test.cpp @@ -1,10 +1,10 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file expected in compliance with the License. + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -12,20 +12,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "video_test.h" +#include "camera_video_test.h" -void UtestVideoTest::SetUpTestCase(void) +using namespace testing::ext; + +void CameraVideoTest::SetUpTestCase(void) {} -void UtestVideoTest::TearDownTestCase(void) +void CameraVideoTest::TearDownTestCase(void) {} -void UtestVideoTest::SetUp(void) +void CameraVideoTest::SetUp(void) { if (display_ == nullptr) display_ = std::make_shared(); - display_->FBInit(); display_->Init(); } -void UtestVideoTest::TearDown(void) +void CameraVideoTest::TearDown(void) { display_->Close(); } @@ -33,23 +34,23 @@ void UtestVideoTest::TearDown(void) /** * @tc.name: Video * @tc.desc: Preview + video, commit together, success. - * @tc.level: Level0 + * @tc.level: Level1 * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0001) +HWTEST_F(CameraVideoTest, camera_video_001, TestSize.Level1) { std::cout << "==========[test log] 1 Preview + video, commit together, success." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_video, display_->captureId_preview, false, true); - // release stream - display_->captureIds = {display_->captureId_preview}; + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); + + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -61,32 +62,32 @@ TEST_F(UtestVideoTest, camera_video_0001) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0002) +HWTEST_F(CameraVideoTest, camera_video_002, TestSize.Level1) { std::cout << "==========[test log] Preview + video, commit together, set 3A, success." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); + // Get preview + display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // Issue 3A parameters to increase exposure std::shared_ptr meta = std::make_shared(100, 2000); int32_t expo = 0xa0; meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1); display_->rc = display_->cameraDevice->UpdateSettings(meta); - if (display_->rc == Camera::NO_ERROR) { + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] UpdateSettings success, for 5s." << std::endl; } else { std::cout << "==========[test log] UpdateSettings fail, rc = " << display_->rc << std::endl; } sleep(3); - // Get preview - display_->StartCapture(display_->streamId_preview, display_->captureId_video, false, true); - display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // release stream - display_->captureIds = {display_->captureId_video}; + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -98,20 +99,20 @@ TEST_F(UtestVideoTest, camera_video_0002) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0003) +HWTEST_F(CameraVideoTest, camera_video_003, TestSize.Level1) { std::cout << "==========[test log] Preview + video, commit together, then close device,"; std::cout << "and preview + video again." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_video, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); @@ -124,13 +125,13 @@ TEST_F(UtestVideoTest, camera_video_0003) // Create and get streamOperator information display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_video, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -142,20 +143,20 @@ TEST_F(UtestVideoTest, camera_video_0003) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0004) +HWTEST_F(CameraVideoTest, camera_video_004, TestSize.Level1) { std::cout << "==========[test log] Preview + video, commit together, then close device,"; std::cout << "and preview + capture." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_video, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); @@ -168,13 +169,13 @@ TEST_F(UtestVideoTest, camera_video_0004) // Create and get streamOperator information display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::STILL_CAPTURE}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_capture, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_capture, display_->captureId_capture, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_capture}; display_->streamIds = {display_->streamId_preview, display_->streamId_capture}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -186,19 +187,19 @@ TEST_F(UtestVideoTest, camera_video_0004) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0005) +HWTEST_F(CameraVideoTest, camera_video_005, TestSize.Level1) { std::cout << "==========[test log] 1 Preview + video, commit together, success." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_video, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -210,20 +211,20 @@ TEST_F(UtestVideoTest, camera_video_0005) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0010) +HWTEST_F(CameraVideoTest, camera_video_010, TestSize.Level2) { std::cout << "==========[test log] Video start&stop, for 5 times, success." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); for (int i = 0; i < 5; i++) { // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // Get preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - display_->StartCapture(display_->streamId_video, display_->captureId_preview, false, true); + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // release stream - display_->captureIds = {display_->captureId_preview}; + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -236,26 +237,26 @@ TEST_F(UtestVideoTest, camera_video_0010) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0011) +HWTEST_F(CameraVideoTest, camera_video_011, TestSize.Level2) { std::cout << "==========[test log] Video start&stop, for 5 times, success." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); for (int i = 0; i < 5; i++) { - // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; - display_->StartStream(display_->intents); + // start stream + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; + display_->StartStream(display_->intents); - // Start capture preview - display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); - // Start capture recording - display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); + // Start capture preview + display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); + // Start capture recording + display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); - // post-processing - display_->captureIds = {display_->captureId_preview, display_->captureId_video}; - display_->streamIds = {display_->streamId_preview, display_->streamId_video}; - display_->StopStream(display_->captureIds, display_->streamIds); -} + // post-processing + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; + display_->streamIds = {display_->streamId_preview, display_->streamId_video}; + display_->StopStream(display_->captureIds, display_->streamIds); + } } /** @@ -265,18 +266,18 @@ TEST_F(UtestVideoTest, camera_video_0011) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0020) +HWTEST_F(CameraVideoTest, camera_video_020, TestSize.Level2) { std::cout << "==========[test log] Video mode, preview, success." << std::endl; // Create and get streamOperator information display_->AchieveStreamOperator(); // Create data stream - display_->intents = {Camera::PREVIEW}; + display_->intents = {OHOS::Camera::PREVIEW}; display_->StartStream(display_->intents); // capture display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); // Create video stream - display_->intents = {Camera::VIDEO}; + display_->intents = {OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // Start capture preview display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); @@ -284,32 +285,36 @@ TEST_F(UtestVideoTest, camera_video_0020) display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // post-processing + display_->streamCustomerPreview_->ReceiveFrameOff(); + display_->streamCustomerVideo_->ReceiveFrameOff(); display_->rc = display_->streamOperator->CancelCapture(display_->captureId_video); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] CancelCapture success, captureId = "; std::cout << display_->captureId_video << std::endl; } else { std::cout << "==========[test log] CancelCapture fail, rc = " << display_->rc << std::endl; } display_->rc = display_->streamOperator->CancelCapture(display_->captureId_preview); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] CancelCapture success, captureId = "; std::cout << display_->captureId_preview << std::endl; } else { std::cout << "==========[test log] CancelCapture fail, rc = " << display_->rc << std::endl; } - display_->rc = display_->streamOperator->ReleaseStreams({display_->streamId_video}); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + display_->rc = display_->streamOperator->ReleaseStreams( + {display_->streamId_video}); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] ReleaseStreams success." << std::endl; } else { std::cout << "==========[test log] ReleaseStreams fail, rc = " << display_->rc << std::endl; } - display_->rc = display_->streamOperator->ReleaseStreams({display_->streamId_preview}); - EXPECT_EQ(true, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + display_->rc = display_->streamOperator->ReleaseStreams( + {display_->streamId_preview}); + EXPECT_EQ(true, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] ReleaseStreams success." << std::endl; } else { std::cout << "==========[test log] ReleaseStreams fail, rc = " << display_->rc << std::endl; @@ -323,23 +328,23 @@ TEST_F(UtestVideoTest, camera_video_0020) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0021) +HWTEST_F(CameraVideoTest, camera_video_021, TestSize.Level1) { std::cout << "==========[test log] Video mode, preview, set 3A, success." << std::endl; EXPECT_EQ(true, display_->cameraDevice != nullptr); display_->AchieveStreamOperator(); // start stream - display_->intents = {Camera::PREVIEW, Camera::VIDEO}; + display_->intents = {OHOS::Camera::PREVIEW, OHOS::Camera::VIDEO}; display_->StartStream(display_->intents); // capture - display_->StartCapture(display_->streamId_preview, display_->captureId_video, false, true); + display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true); display_->StartCapture(display_->streamId_video, display_->captureId_video, false, true); // Issue 3A parameters to increase exposure std::shared_ptr meta = std::make_shared(100, 2000); int32_t expo = 0xa0; meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1); display_->rc = display_->cameraDevice->UpdateSettings(meta); - if (display_->rc == Camera::NO_ERROR) { + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] UpdateSettings success, for 5s." << std::endl; } else { std::cout << "==========[test log] UpdateSettings fail, rc = " << display_->rc << std::endl; @@ -347,7 +352,7 @@ TEST_F(UtestVideoTest, camera_video_0021) sleep(3); // post-processing - display_->captureIds = {display_->captureId_video}; + display_->captureIds = {display_->captureId_preview, display_->captureId_video}; display_->streamIds = {display_->streamId_preview, display_->streamId_video}; display_->StopStream(display_->captureIds, display_->streamIds); } @@ -359,7 +364,7 @@ TEST_F(UtestVideoTest, camera_video_0021) * @tc.size: MediumTest * @tc.type: Function */ -TEST_F(UtestVideoTest, camera_video_0030) +HWTEST_F(CameraVideoTest, camera_video_030, TestSize.Level2) { std::cout << "==========[test log] Video mode without preview, system not support,"; std::cout << "expected return fail." << std::endl; @@ -367,40 +372,36 @@ TEST_F(UtestVideoTest, camera_video_0030) EXPECT_EQ(true, display_->cameraDevice != nullptr); display_->AchieveStreamOperator(); // Create video stream - std::vector> streamInfos; - std::shared_ptr producer = IBufferProducer::CreateBufferQueue(); + std::shared_ptr streamCustomer = std::make_shared(); + OHOS::sptr producer = streamCustomer->CreateProducer(); producer->SetQueueSize(8); // 8:set bufferQueue size if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size std::cout << "~~~~~~~" << std::endl; } - auto callbackVideo = [this](std::shared_ptr b) { - display_->BufferCallback(b, display_->video_mode); - return; - }; - producer->SetCallback(callbackVideo); + + std::vector> streamInfos; display_->streamInfo = std::make_shared(); display_->streamInfo->streamId_ = display_->streamId_video; - display_->streamInfo->width_ = 640; // 640:picture width - display_->streamInfo->height_ = 480; // 480:picture height - display_->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; + display_->streamInfo->width_ = 1280; // 1280:picture width + display_->streamInfo->height_ = 960; // 960:picture height + display_->streamInfo->format_ = PIXEL_FMT_RGBA_8888; display_->streamInfo->datasapce_ = 10; - display_->streamInfo->intent_ = Camera::VIDEO; + display_->streamInfo->intent_ = OHOS::Camera::VIDEO; display_->streamInfo->tunneledMode_ = 5; // 5:tunnel mode display_->streamInfo->bufferQueue_ = producer; - std::vector>().swap(streamInfos); streamInfos.push_back(display_->streamInfo); display_->rc = display_->streamOperator->CreateStreams(streamInfos); - EXPECT_EQ(false, display_->rc == Camera::METHOD_NOT_SUPPORTED); - if (display_->rc == Camera::METHOD_NOT_SUPPORTED) { + EXPECT_EQ(false, display_->rc == OHOS::Camera::METHOD_NOT_SUPPORTED); + if (display_->rc == OHOS::Camera::METHOD_NOT_SUPPORTED) { std::cout << "==========[test log] CreateStreams METHOD_NOT_SUPPORTED, streamId = "; - std::cout << display_->streamId_video <<", intent = Camera::VIDEO" << std::endl; + std::cout << display_->streamId_video <<", intent = OHOS::Camera::VIDEO" << std::endl; } else { std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl; } - display_->rc = display_->streamOperator->CommitStreams(Camera::NORMAL, nullptr); - EXPECT_EQ(false, display_->rc == Camera::NO_ERROR); - if (display_->rc == Camera::NO_ERROR) { + display_->rc = display_->streamOperator->CommitStreams(OHOS::Camera::NORMAL, nullptr); + EXPECT_EQ(false, display_->rc == OHOS::Camera::NO_ERROR); + if (display_->rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log] CommitStreams success." << std::endl; } else { std::cout << "==========[test log] CommitStreams fail, rc = ." << display_->rc << std::endl; diff --git a/camera/hal/test/v4l2/src/hdfcamera_facedetect.cpp b/camera/hal/test/v4l2/src/hdfcamera_facedetect.cpp index ecd72f257b..430608c246 100644 --- a/camera/hal/test/v4l2/src/hdfcamera_facedetect.cpp +++ b/camera/hal/test/v4l2/src/hdfcamera_facedetect.cpp @@ -90,8 +90,8 @@ static HWTEST_F(HdfCameraFaceDetect, CameraFaceDetect_001, TestSize.Level1) }); sleep(2); // release stream - display_->captureIds = {display_->captureId_preview, display_->captureId_capture, display_->captureId_analyze}; - display_->streamIds = {display_->streamId_preview, display_->streamId_capture, display_->streamId_analyze}; + display_->captureIds = {display_->captureId_preview, display_->captureId_analyze, display_->captureId_capture}; + display_->streamIds = {display_->streamId_preview, display_->streamId_analyze, display_->streamId_capture}; display_->StopStream(display_->captureIds, display_->streamIds); } diff --git a/camera/hal/test/v4l2/src/test_display.cpp b/camera/hal/test/v4l2/src/test_display.cpp index af0393fdcd..33ef9e77a7 100644 --- a/camera/hal/test/v4l2/src/test_display.cpp +++ b/camera/hal/test/v4l2/src/test_display.cpp @@ -96,6 +96,12 @@ void TestDisplay::OpenVideoFile() } } +void TestDisplay::CloseFd() +{ + close(videoFd_); + videoFd_ = -1; +} + void TestDisplay::PrintFaceDetectInfo(const void *bufStart, const uint32_t size) const { common_metadata_header_t* data = static_cast((const_cast(bufStart))); @@ -567,6 +573,8 @@ void TestDisplay::StartCapture(int streamId, int captureId, bool shutterCallback void TestDisplay::StopStream(std::vector& captureIds, std::vector& streamIds) { + constexpr uint32_t SLEEP_SECOND_TWO = 2; + sleep(SLEEP_SECOND_TWO); if (sizeof(captureIds) > 0) { for (auto &captureId : captureIds) { if (captureId == captureId_preview) { @@ -575,13 +583,16 @@ void TestDisplay::StopStream(std::vector& captureIds, std::vector& str streamCustomerCapture_->ReceiveFrameOff(); } else if (captureId == captureId_video) { streamCustomerVideo_->ReceiveFrameOff(); - close(videoFd_); - videoFd_ = -1; + sleep(1); + CloseFd(); } else if (captureId == captureId_analyze) { streamCustomerAnalyze_->ReceiveFrameOff(); } + } + for (auto &captureId : captureIds) { std::cout << "==========[test log]check Capture: CancelCapture success," << captureId << std::endl; rc = streamOperator->CancelCapture(captureId); + sleep(SLEEP_SECOND_TWO); EXPECT_EQ(true, rc == OHOS::Camera::NO_ERROR); if (rc == OHOS::Camera::NO_ERROR) { std::cout << "==========[test log]check Capture: CancelCapture success," << captureId << std::endl; -- Gitee