• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "gtest/gtest.h"
17 #include "meta/format.h"
18 #include "avcodec_errors.h"
19 #include "avcodec_common.h"
20 #include "securec.h"
21 #include "reference_parser_demo.h"
22 
23 using namespace std;
24 using namespace OHOS;
25 using namespace OHOS::MediaAVCodec;
26 using namespace testing::ext;
27 
28 namespace {
29 class ReferenceParserTest : public testing::Test {
30 public:
31     // SetUpTestCase: CALLed before all test cases
32     static void SetUpTestCase(void);
33     // TearDownTestCase: CALLed after all test cases
34     static void TearDownTestCase(void);
35     // SetUp: Called before each test cases
36     void SetUp(void);
37     // TearDown: Called after each test cases;
38     void TearDown(void);
39 
40 private:
41     shared_ptr<ReferenceParserDemo> refParserDemo_ = nullptr;
42 };
43 
SetUpTestCase()44 void ReferenceParserTest::SetUpTestCase() {}
45 
TearDownTestCase()46 void ReferenceParserTest::TearDownTestCase() {}
47 
SetUp()48 void ReferenceParserTest::SetUp()
49 {
50     refParserDemo_ = make_shared<ReferenceParserDemo>();
51 }
52 
TearDown()53 void ReferenceParserTest::TearDown()
54 {
55     refParserDemo_ = nullptr;
56 }
57 } // namespace
58 
59 namespace {
60 constexpr int32_t WAIT_TIME = 5;
61 constexpr int64_t DEC_COST_TIME_MS = 6L;
62 /**
63  * @tc.number       : RP_FUNC_SEEK_IPB_0_0100
64  * @tc.name         : do accurate seek
65  * @tc.desc         : func test
66  */
67 HWTEST_F(ReferenceParserTest, RP_FUNC_SEEK_IPB_0_0100, TestSize.Level1)
68 {
69     if (!access("/system/lib64/media/", 0)) {
70         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
71         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPB_0));
72         ASSERT_EQ(true, refParserDemo_->DoAccurateSeek(1566)); // 1566 is frame 99
73         sleep(WAIT_TIME);
74     }
75 }
76 
77 /**
78  * @tc.number       : RP_FUNC_SEEK_IPB_0_0100
79  * @tc.name         : do accurate seek
80  * @tc.desc         : func test
81  */
82 HWTEST_F(ReferenceParserTest, RP_FUNC_SEEK_IPB_1_0100, TestSize.Level1)
83 {
84     if (!access("/system/lib64/media/", 0)) {
85         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
86         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPB_1));
87         ASSERT_EQ(true, refParserDemo_->DoAccurateSeek(1599)); // 1599 is frame 50
88         sleep(WAIT_TIME);
89     }
90 }
91 
92 /**
93  * @tc.number       : RP_FUNC_SEEK_IPPP_0_0100
94  * @tc.name         : do accurate seek
95  * @tc.desc         : func test
96  */
97 HWTEST_F(ReferenceParserTest, RP_FUNC_SEEK_IPPP_0_0100, TestSize.Level1)
98 {
99     if (!access("/system/lib64/media/", 0)) {
100         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
101         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPPP_0));
102         ASSERT_EQ(true, refParserDemo_->DoAccurateSeek(500)); // 500 is frame 30
103         sleep(WAIT_TIME);
104     }
105 }
106 
107 /**
108  * @tc.number       : RP_FUNC_SEEK_IPPP_1_0100
109  * @tc.name         : do accurate seek
110  * @tc.desc         : func test
111  */
112 HWTEST_F(ReferenceParserTest, RP_FUNC_SEEK_IPPP_1_0100, TestSize.Level1)
113 {
114     if (!access("/system/lib64/media/", 0)) {
115         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
116         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPPP_1));
117         ASSERT_EQ(true, refParserDemo_->DoAccurateSeek(27840)); // 27840 is frame 696
118         sleep(WAIT_TIME);
119     }
120 }
121 
122 /**
123  * @tc.number       : RP_FUNC_SEEK_IPPP_SCALA_0_0100
124  * @tc.name         : do accurate seek
125  * @tc.desc         : func test
126  */
127 HWTEST_F(ReferenceParserTest, RP_FUNC_SEEK_IPPP_SCALA_0_0100, TestSize.Level1)
128 {
129     if (!access("/system/lib64/media/", 0)) {
130         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
131         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPPP_SCALA_0));
132         ASSERT_EQ(true, refParserDemo_->DoAccurateSeek(20040)); // 20040 is frame 501
133         sleep(WAIT_TIME);
134     }
135 }
136 
137 /**
138  * @tc.number       : RP_FUNC_SEEK_IPPP_SCALA_1_0100
139  * @tc.name         : do accurate seek
140  * @tc.desc         : func test
141  */
142 HWTEST_F(ReferenceParserTest, RP_FUNC_SEEK_IPPP_SCALA_1_0100, TestSize.Level1)
143 {
144     if (!access("/system/lib64/media/", 0)) {
145         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
146         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPPP_SCALA_1));
147         ASSERT_EQ(true, refParserDemo_->DoAccurateSeek(200)); // 200 is frame 5
148         sleep(WAIT_TIME);
149     }
150 }
151 
152 /**
153  * @tc.number       : RP_FUNC_SEEK_SDTP_0100
154  * @tc.name         : do accurate seek
155  * @tc.desc         : func test
156  */
157 HWTEST_F(ReferenceParserTest, RP_FUNC_SEEK_SDTP_0100, TestSize.Level1)
158 {
159     if (!access("/system/lib64/media/", 0)) {
160         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
161         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::SDTP));
162         ASSERT_EQ(true, refParserDemo_->DoAccurateSeek(10266)); // 10266 is frame 310
163         sleep(WAIT_TIME);
164     }
165 }
166 
167 /**
168  * @tc.number       : RP_FUNC_VAR_SPEED_IPB_0_0100
169  * @tc.name         : do var speed
170  * @tc.desc         : func test
171  */
172 HWTEST_F(ReferenceParserTest, RP_FUNC_VAR_SPEED_IPB_0_0100, TestSize.Level1)
173 {
174     if (!access("/system/lib64/media/", 0)) {
175         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
176         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPB_0));
177         ASSERT_EQ(true, refParserDemo_->DoVariableSpeedPlay(416)); // 416 is frame 30
178         sleep(WAIT_TIME);
179     }
180 }
181 
182 /**
183  * @tc.number       : RP_FUNC_VAR_SPEED_IPB_1_0100
184  * @tc.name         : do var speed
185  * @tc.desc         : func test
186  */
187 HWTEST_F(ReferenceParserTest, RP_FUNC_VAR_SPEED_IPB_1_0100, TestSize.Level1)
188 {
189     if (!access("/system/lib64/media/", 0)) {
190         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
191         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPB_1));
192         ASSERT_EQ(true, refParserDemo_->DoVariableSpeedPlay(1133)); // 1133 is frame 36
193         sleep(WAIT_TIME);
194     }
195 }
196 
197 /**
198  * @tc.number       : RP_FUNC_VAR_SPEED_IPPP_0_0100
199  * @tc.name         : do var speed
200  * @tc.desc         : func test
201  */
202 HWTEST_F(ReferenceParserTest, RP_FUNC_VAR_SPEED_IPPP_0_0100, TestSize.Level1)
203 {
204     if (!access("/system/lib64/media/", 0)) {
205         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
206         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPPP_0));
207         ASSERT_EQ(true, refParserDemo_->DoVariableSpeedPlay(23966)); // 23966 is frame 1438
208         sleep(WAIT_TIME);
209     }
210 }
211 
212 /**
213  * @tc.number       : RP_FUNC_VAR_SPEED_IPPP_1_0100
214  * @tc.name         : do var speed
215  * @tc.desc         : func test
216  */
217 HWTEST_F(ReferenceParserTest, RP_FUNC_VAR_SPEED_IPPP_1_0100, TestSize.Level1)
218 {
219     if (!access("/system/lib64/media/", 0)) {
220         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
221         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPPP_1));
222         ASSERT_EQ(true, refParserDemo_->DoVariableSpeedPlay(23880)); // 23880 is frame 597
223         sleep(WAIT_TIME);
224     }
225 }
226 
227 /**
228  * @tc.number       : RP_FUNC_VAR_SPEED_IPPP_SCALA_0_0100
229  * @tc.name         : do var speed
230  * @tc.desc         : func test
231  */
232 HWTEST_F(ReferenceParserTest, RP_FUNC_VAR_SPEED_IPPP_SCALA_0_0100, TestSize.Level1)
233 {
234     if (!access("/system/lib64/media/", 0)) {
235         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
236         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPPP_SCALA_0));
237         ASSERT_EQ(true, refParserDemo_->DoVariableSpeedPlay(10680)); // 10680 is frame 267
238         sleep(WAIT_TIME);
239     }
240 }
241 
242 /**
243  * @tc.number       : RP_FUNC_VAR_SPEED_IPPP_SCALA_1_0100
244  * @tc.name         : do var speed
245  * @tc.desc         : func test
246  */
247 HWTEST_F(ReferenceParserTest, RP_FUNC_VAR_SPEED_IPPP_SCALA_1_0100, TestSize.Level1)
248 {
249     if (!access("/system/lib64/media/", 0)) {
250         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
251         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::IPPP_SCALA_1));
252         ASSERT_EQ(true, refParserDemo_->DoVariableSpeedPlay(400)); // 400 is frame 10
253         sleep(WAIT_TIME);
254     }
255 }
256 
257 /**
258  * @tc.number       : RP_FUNC_VAR_SPEED_SDTP_0100
259  * @tc.name         : do var speed
260  * @tc.desc         : func test
261  */
262 HWTEST_F(ReferenceParserTest, RP_FUNC_VAR_SPEED_SDTP_0100, TestSize.Level1)
263 {
264     if (!access("/system/lib64/media/", 0)) {
265         refParserDemo_->SetDecIntervalMs(DEC_COST_TIME_MS);
266         ASSERT_EQ(0, refParserDemo_->InitScene(MP4Scene::SDTP));
267         ASSERT_EQ(true, refParserDemo_->DoVariableSpeedPlay(8233)); // 8233 is frame 249
268         sleep(WAIT_TIME);
269     }
270 }
271 } // namespace