• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <iostream>
17 #include <cstdio>
18 
19 #include <atomic>
20 #include <fstream>
21 #include <thread>
22 #include <mutex>
23 #include <queue>
24 #include <string>
25 
26 #include "gtest/gtest.h"
27 #include "videodec_sample.h"
28 using namespace std;
29 using namespace OHOS;
30 using namespace OHOS::Media;
31 using namespace testing::ext;
32 namespace OHOS {
33 namespace Media {
34 class Mpeg2SwdecCompNdkTest : public testing::Test {
35 public:
36     // SetUpTestCase: Called before all test cases
37     static void SetUpTestCase(void);
38     // TearDownTestCase: Called after all test case
39     static void TearDownTestCase(void);
40     // SetUp: Called before each test cases
41     void SetUp(void);
42     // TearDown: Called after each test cases
43     void TearDown(void);
44 
45 protected:
46     const ::testing::TestInfo *testInfo_ = nullptr;
47     bool createCodecSuccess_ = false;
48 };
49 
SetUpTestCase(void)50 void Mpeg2SwdecCompNdkTest::SetUpTestCase(void) {}
TearDownTestCase(void)51 void Mpeg2SwdecCompNdkTest::TearDownTestCase(void) {}
SetUp(void)52 void Mpeg2SwdecCompNdkTest::SetUp(void) {}
TearDown(void)53 void Mpeg2SwdecCompNdkTest::TearDown(void) {}
54 } // namespace Media
55 } // namespace OHOS
56 
57 namespace {
58 /**
59  * @tc.number    : VIDEO_SWDEC_MPEG2_IPB_0100
60  * @tc.name      : software decode all i frame mpeg2 stream
61  * @tc.desc      : function test
62  */
63 HWTEST_F(Mpeg2SwdecCompNdkTest, VIDEO_SWDEC_MPEG2_IPB_0100, TestSize.Level2)
64 {
65     VDecNdkSample *vDecSample = new VDecNdkSample();
66     int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.MPEG2");
67     ASSERT_EQ(AV_ERR_OK, ret);
68     vDecSample->INP_DIR = "/data/test/media/all_i_main@high14_level_1280_720_30.m2v";
69     vDecSample->DEFAULT_WIDTH = 1280;
70     vDecSample->DEFAULT_HEIGHT = 720;
71     ret = vDecSample->SetVideoDecoderCallback();
72     ASSERT_EQ(AV_ERR_OK, ret);
73     ret = vDecSample->ConfigureVideoDecoder();
74     ASSERT_EQ(AV_ERR_OK, ret);
75     ret = vDecSample->StartVideoDecoder();
76     ASSERT_EQ(AV_ERR_OK, ret);
77     vDecSample->WaitForEOS();
78     ASSERT_EQ(0, vDecSample->errCount);
79 }
80 
81 /**
82  * @tc.number    : VIDEO_SWDEC_MPEG2_IPB_0200
83  * @tc.name      : software decode i/p frame mpeg2 stream
84  * @tc.desc      : function test
85  */
86 HWTEST_F(Mpeg2SwdecCompNdkTest, VIDEO_SWDEC_MPEG2_IPB_0200, TestSize.Level2)
87 {
88     VDecNdkSample *vDecSample = new VDecNdkSample();
89     int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.MPEG2");
90     ASSERT_EQ(AV_ERR_OK, ret);
91     vDecSample->INP_DIR = "/data/test/media/ip_main@high14_level_1280_720_30.m2v";
92     vDecSample->DEFAULT_WIDTH = 1280;
93     vDecSample->DEFAULT_HEIGHT = 720;
94     ret = vDecSample->SetVideoDecoderCallback();
95     ASSERT_EQ(AV_ERR_OK, ret);
96     ret = vDecSample->ConfigureVideoDecoder();
97     ASSERT_EQ(AV_ERR_OK, ret);
98     ret = vDecSample->StartVideoDecoder();
99     ASSERT_EQ(AV_ERR_OK, ret);
100     vDecSample->WaitForEOS();
101     ASSERT_EQ(0, vDecSample->errCount);
102 }
103 
104 /**
105  * @tc.number    : VIDEO_SWDEC_MPEG2_IPB_0300
106  * @tc.name      : software decode i/p/b frame mpeg2 stream
107  * @tc.desc      : function test
108  */
109 HWTEST_F(Mpeg2SwdecCompNdkTest, VIDEO_SWDEC_MPEG2_IPB_0300, TestSize.Level2)
110 {
111     VDecNdkSample *vDecSample = new VDecNdkSample();
112     int32_t ret = vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.MPEG2");
113     ASSERT_EQ(AV_ERR_OK, ret);
114     vDecSample->INP_DIR = "/data/test/media/ipb_main@high14_level_1280_720_30.m2v";
115     vDecSample->DEFAULT_WIDTH = 1280;
116     vDecSample->DEFAULT_HEIGHT = 720;
117     ret = vDecSample->SetVideoDecoderCallback();
118     ASSERT_EQ(AV_ERR_OK, ret);
119     ret = vDecSample->ConfigureVideoDecoder();
120     ASSERT_EQ(AV_ERR_OK, ret);
121     ret = vDecSample->StartVideoDecoder();
122     ASSERT_EQ(AV_ERR_OK, ret);
123     vDecSample->WaitForEOS();
124     ASSERT_EQ(0, vDecSample->errCount);
125 }
126 } // namespace