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