xref: /aosp_15_r20/cts/tests/tests/nativemedia/xa/src/XAObjectCreationTest.cpp (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker /*
2*b7c941bbSAndroid Build Coastguard Worker  * Copyright (C) 2011 The Android Open Source Project
3*b7c941bbSAndroid Build Coastguard Worker  *
4*b7c941bbSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*b7c941bbSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*b7c941bbSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*b7c941bbSAndroid Build Coastguard Worker  *
8*b7c941bbSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*b7c941bbSAndroid Build Coastguard Worker  *
10*b7c941bbSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*b7c941bbSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*b7c941bbSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b7c941bbSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*b7c941bbSAndroid Build Coastguard Worker  * limitations under the License.
15*b7c941bbSAndroid Build Coastguard Worker  */
16*b7c941bbSAndroid Build Coastguard Worker 
17*b7c941bbSAndroid Build Coastguard Worker /**
18*b7c941bbSAndroid Build Coastguard Worker  * Test for testing the creation of OpenMAX AL objects.
19*b7c941bbSAndroid Build Coastguard Worker  * The tests verify the creation and completion of the call to Realize() for the following objects:
20*b7c941bbSAndroid Build Coastguard Worker  *   - Engine
21*b7c941bbSAndroid Build Coastguard Worker  *   - OutputMix
22*b7c941bbSAndroid Build Coastguard Worker  */
23*b7c941bbSAndroid Build Coastguard Worker 
24*b7c941bbSAndroid Build Coastguard Worker #define LOG_NDEBUG 0
25*b7c941bbSAndroid Build Coastguard Worker #define LOG_TAG "XAObjectCreationTest"
26*b7c941bbSAndroid Build Coastguard Worker 
27*b7c941bbSAndroid Build Coastguard Worker #include <gtest/gtest.h>
28*b7c941bbSAndroid Build Coastguard Worker #include <utils/Log.h>
29*b7c941bbSAndroid Build Coastguard Worker 
30*b7c941bbSAndroid Build Coastguard Worker #include "OMXAL/OpenMAXAL.h"
31*b7c941bbSAndroid Build Coastguard Worker #include "OMXAL/OpenMAXAL_Android.h"
32*b7c941bbSAndroid Build Coastguard Worker 
33*b7c941bbSAndroid Build Coastguard Worker //-----------------------------------------------------------------
34*b7c941bbSAndroid Build Coastguard Worker /* Checks for error and displays the error code if any */
IsOk(XAresult res)35*b7c941bbSAndroid Build Coastguard Worker bool IsOk(XAresult res) {
36*b7c941bbSAndroid Build Coastguard Worker     if (XA_RESULT_SUCCESS != res) {
37*b7c941bbSAndroid Build Coastguard Worker         fprintf(stderr, "IsOk failure: 0x%x, exiting\n", res);
38*b7c941bbSAndroid Build Coastguard Worker         return false;
39*b7c941bbSAndroid Build Coastguard Worker     }
40*b7c941bbSAndroid Build Coastguard Worker     return true;
41*b7c941bbSAndroid Build Coastguard Worker }
42*b7c941bbSAndroid Build Coastguard Worker 
43*b7c941bbSAndroid Build Coastguard Worker //-----------------------------------------------------------------
44*b7c941bbSAndroid Build Coastguard Worker class XAObjectCreationTest : public ::testing::Test {
45*b7c941bbSAndroid Build Coastguard Worker 
46*b7c941bbSAndroid Build Coastguard Worker protected:
47*b7c941bbSAndroid Build Coastguard Worker     XAresult res;
48*b7c941bbSAndroid Build Coastguard Worker     XAObjectItf engineObj, outputMixObj, mediaPlayerObj;
49*b7c941bbSAndroid Build Coastguard Worker     XAEngineItf engineItf;
50*b7c941bbSAndroid Build Coastguard Worker 
51*b7c941bbSAndroid Build Coastguard Worker     XADataSource mediaSource;
52*b7c941bbSAndroid Build Coastguard Worker     XADataSink   audioSink;
53*b7c941bbSAndroid Build Coastguard Worker     XADataLocator_URI locatorUriSrc;
54*b7c941bbSAndroid Build Coastguard Worker     XADataLocator_AndroidBufferQueue locatorAbqSrc;
55*b7c941bbSAndroid Build Coastguard Worker     XADataLocator_AndroidFD locatorFdSrc;
56*b7c941bbSAndroid Build Coastguard Worker     XADataFormat_MIME formatMimeSrc;
57*b7c941bbSAndroid Build Coastguard Worker 
58*b7c941bbSAndroid Build Coastguard Worker     XADataLocator_OutputMix locatorOutputmixSink;
59*b7c941bbSAndroid Build Coastguard Worker     XADataFormat_PCM formatPcmSink;
60*b7c941bbSAndroid Build Coastguard Worker 
61*b7c941bbSAndroid Build Coastguard Worker     XADataLocator_NativeDisplay locatorVideoSink;
62*b7c941bbSAndroid Build Coastguard Worker     XADataSink imageSink;
63*b7c941bbSAndroid Build Coastguard Worker 
64*b7c941bbSAndroid Build Coastguard Worker     //ANativeWindow* pNativeWindow;
65*b7c941bbSAndroid Build Coastguard Worker 
XAObjectCreationTest()66*b7c941bbSAndroid Build Coastguard Worker     XAObjectCreationTest() { }
67*b7c941bbSAndroid Build Coastguard Worker 
~XAObjectCreationTest()68*b7c941bbSAndroid Build Coastguard Worker     virtual ~XAObjectCreationTest() { }
69*b7c941bbSAndroid Build Coastguard Worker 
70*b7c941bbSAndroid Build Coastguard Worker     /* Test setup*/
SetUp()71*b7c941bbSAndroid Build Coastguard Worker     virtual void SetUp() {
72*b7c941bbSAndroid Build Coastguard Worker         ALOGV("Test Setup()");
73*b7c941bbSAndroid Build Coastguard Worker         res = XA_RESULT_UNKNOWN_ERROR;
74*b7c941bbSAndroid Build Coastguard Worker         engineItf = NULL;
75*b7c941bbSAndroid Build Coastguard Worker         engineObj = NULL;
76*b7c941bbSAndroid Build Coastguard Worker         outputMixObj = NULL;
77*b7c941bbSAndroid Build Coastguard Worker         mediaPlayerObj = NULL;
78*b7c941bbSAndroid Build Coastguard Worker         // Engine creation
79*b7c941bbSAndroid Build Coastguard Worker         res = xaCreateEngine(&engineObj, 0, NULL, 0, NULL, NULL);
80*b7c941bbSAndroid Build Coastguard Worker         ASSERT_TRUE(IsOk(res));
81*b7c941bbSAndroid Build Coastguard Worker         res = (*engineObj)->Realize(engineObj, XA_BOOLEAN_FALSE);
82*b7c941bbSAndroid Build Coastguard Worker         ASSERT_TRUE(IsOk(res));
83*b7c941bbSAndroid Build Coastguard Worker         res = (*engineObj)->GetInterface(engineObj, XA_IID_ENGINE, &engineItf);
84*b7c941bbSAndroid Build Coastguard Worker         ASSERT_TRUE(IsOk(res));
85*b7c941bbSAndroid Build Coastguard Worker         ASSERT_TRUE(NULL != engineItf);
86*b7c941bbSAndroid Build Coastguard Worker     }
87*b7c941bbSAndroid Build Coastguard Worker 
TearDown()88*b7c941bbSAndroid Build Coastguard Worker     virtual void TearDown() {
89*b7c941bbSAndroid Build Coastguard Worker         ALOGV("Test TearDown()");
90*b7c941bbSAndroid Build Coastguard Worker         if (mediaPlayerObj) {
91*b7c941bbSAndroid Build Coastguard Worker             (*mediaPlayerObj)->Destroy(mediaPlayerObj);
92*b7c941bbSAndroid Build Coastguard Worker             mediaPlayerObj = NULL;
93*b7c941bbSAndroid Build Coastguard Worker         }
94*b7c941bbSAndroid Build Coastguard Worker         if (outputMixObj) {
95*b7c941bbSAndroid Build Coastguard Worker             (*outputMixObj)->Destroy(outputMixObj);
96*b7c941bbSAndroid Build Coastguard Worker             outputMixObj = NULL;
97*b7c941bbSAndroid Build Coastguard Worker         }
98*b7c941bbSAndroid Build Coastguard Worker         if (engineObj){
99*b7c941bbSAndroid Build Coastguard Worker             (*engineObj)->Destroy(engineObj);
100*b7c941bbSAndroid Build Coastguard Worker             engineObj = NULL;
101*b7c941bbSAndroid Build Coastguard Worker         }
102*b7c941bbSAndroid Build Coastguard Worker     }
103*b7c941bbSAndroid Build Coastguard Worker 
104*b7c941bbSAndroid Build Coastguard Worker     //---------------------------------------------------------------------------------------------
105*b7c941bbSAndroid Build Coastguard Worker     // Tests
106*b7c941bbSAndroid Build Coastguard Worker 
107*b7c941bbSAndroid Build Coastguard Worker     /* Test case for creating an MediaPlayer object */
OutputMixCreation()108*b7c941bbSAndroid Build Coastguard Worker     void OutputMixCreation() {
109*b7c941bbSAndroid Build Coastguard Worker         res = (*engineItf)->CreateOutputMix(engineItf, &outputMixObj,
110*b7c941bbSAndroid Build Coastguard Worker                 0, NULL/*iidArray*/, NULL/*required*/);
111*b7c941bbSAndroid Build Coastguard Worker         ASSERT_TRUE(IsOk(res));
112*b7c941bbSAndroid Build Coastguard Worker         ASSERT_TRUE(NULL != outputMixObj);
113*b7c941bbSAndroid Build Coastguard Worker         res = (*outputMixObj)->Realize(outputMixObj, XA_BOOLEAN_FALSE);
114*b7c941bbSAndroid Build Coastguard Worker         ASSERT_TRUE(IsOk(res));
115*b7c941bbSAndroid Build Coastguard Worker     }
116*b7c941bbSAndroid Build Coastguard Worker 
117*b7c941bbSAndroid Build Coastguard Worker };
118*b7c941bbSAndroid Build Coastguard Worker 
119*b7c941bbSAndroid Build Coastguard Worker //-------------------------------------------------------------------------------------------------
TEST_F(XAObjectCreationTest,testEngineCreation)120*b7c941bbSAndroid Build Coastguard Worker TEST_F(XAObjectCreationTest, testEngineCreation) {
121*b7c941bbSAndroid Build Coastguard Worker     ALOGV("Test Fixture: EngineCreation");
122*b7c941bbSAndroid Build Coastguard Worker     // nothing to do here that isn't done in SetUp()
123*b7c941bbSAndroid Build Coastguard Worker }
124*b7c941bbSAndroid Build Coastguard Worker 
TEST_F(XAObjectCreationTest,testOutputMixCreation)125*b7c941bbSAndroid Build Coastguard Worker TEST_F(XAObjectCreationTest, testOutputMixCreation) {
126*b7c941bbSAndroid Build Coastguard Worker     ALOGV("Test Fixture: OutputMixCreation");
127*b7c941bbSAndroid Build Coastguard Worker     OutputMixCreation();
128*b7c941bbSAndroid Build Coastguard Worker }
129*b7c941bbSAndroid Build Coastguard Worker 
main(int argc,char ** argv)130*b7c941bbSAndroid Build Coastguard Worker int main(int argc, char **argv) {
131*b7c941bbSAndroid Build Coastguard Worker     testing::InitGoogleTest(&argc, argv);
132*b7c941bbSAndroid Build Coastguard Worker 
133*b7c941bbSAndroid Build Coastguard Worker     return RUN_ALL_TESTS();
134*b7c941bbSAndroid Build Coastguard Worker }
135*b7c941bbSAndroid Build Coastguard Worker 
136