xref: /aosp_15_r20/frameworks/wilhelm/tests/sandbox/xa.c (revision bebae9c0e76121f8312ccb50385c080b3a0b023c)
1*bebae9c0SAndroid Build Coastguard Worker /*
2*bebae9c0SAndroid Build Coastguard Worker  * Copyright (C) 2011 The Android Open Source Project
3*bebae9c0SAndroid Build Coastguard Worker  *
4*bebae9c0SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*bebae9c0SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*bebae9c0SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*bebae9c0SAndroid Build Coastguard Worker  *
8*bebae9c0SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*bebae9c0SAndroid Build Coastguard Worker  *
10*bebae9c0SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*bebae9c0SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*bebae9c0SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*bebae9c0SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*bebae9c0SAndroid Build Coastguard Worker  * limitations under the License.
15*bebae9c0SAndroid Build Coastguard Worker  */
16*bebae9c0SAndroid Build Coastguard Worker 
17*bebae9c0SAndroid Build Coastguard Worker #include <assert.h>
18*bebae9c0SAndroid Build Coastguard Worker #include <stdio.h>
19*bebae9c0SAndroid Build Coastguard Worker #include <stdlib.h>
20*bebae9c0SAndroid Build Coastguard Worker #include <string.h>
21*bebae9c0SAndroid Build Coastguard Worker #include <OMXAL/OpenMAXAL.h>
22*bebae9c0SAndroid Build Coastguard Worker #include <OMXAL/OpenMAXAL_Android.h>
23*bebae9c0SAndroid Build Coastguard Worker 
main(int argc __unused,char ** argv __unused)24*bebae9c0SAndroid Build Coastguard Worker int main(int argc __unused, char **argv __unused)
25*bebae9c0SAndroid Build Coastguard Worker {
26*bebae9c0SAndroid Build Coastguard Worker     XAresult result;
27*bebae9c0SAndroid Build Coastguard Worker     XAObjectItf engineObject;
28*bebae9c0SAndroid Build Coastguard Worker     printf("xaCreateEngine\n");
29*bebae9c0SAndroid Build Coastguard Worker     result = xaCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL);
30*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d\n", result);
31*bebae9c0SAndroid Build Coastguard Worker     assert(XA_RESULT_SUCCESS == result);
32*bebae9c0SAndroid Build Coastguard Worker     printf("engineObject = %p\n", engineObject);
33*bebae9c0SAndroid Build Coastguard Worker     printf("realize\n");
34*bebae9c0SAndroid Build Coastguard Worker     result = (*engineObject)->Realize(engineObject, XA_BOOLEAN_FALSE);
35*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d\n", result);
36*bebae9c0SAndroid Build Coastguard Worker     printf("GetInterface for ENGINE\n");
37*bebae9c0SAndroid Build Coastguard Worker     XAEngineItf engineEngine;
38*bebae9c0SAndroid Build Coastguard Worker     result = (*engineObject)->GetInterface(engineObject, XA_IID_ENGINE, &engineEngine);
39*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d\n", result);
40*bebae9c0SAndroid Build Coastguard Worker     printf("engineEngine = %p\n", engineEngine);
41*bebae9c0SAndroid Build Coastguard Worker     assert(XA_RESULT_SUCCESS == result);
42*bebae9c0SAndroid Build Coastguard Worker 
43*bebae9c0SAndroid Build Coastguard Worker     XAObjectItf outputMixObject;
44*bebae9c0SAndroid Build Coastguard Worker     printf("CreateOutputMix");
45*bebae9c0SAndroid Build Coastguard Worker     result = (*engineEngine)->CreateOutputMix(engineEngine, &outputMixObject, 0, NULL, NULL);
46*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d, outputMixObject=%p\n", result, outputMixObject);
47*bebae9c0SAndroid Build Coastguard Worker     result = (*outputMixObject)->Realize(outputMixObject, XA_BOOLEAN_FALSE);
48*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d\n", result);
49*bebae9c0SAndroid Build Coastguard Worker 
50*bebae9c0SAndroid Build Coastguard Worker     XAObjectItf deviceObject;
51*bebae9c0SAndroid Build Coastguard Worker     printf("CreateCameraDevice\n");
52*bebae9c0SAndroid Build Coastguard Worker     result = (*engineEngine)->CreateCameraDevice(engineEngine, &deviceObject,
53*bebae9c0SAndroid Build Coastguard Worker             XA_DEFAULTDEVICEID_CAMERA, 0, NULL, NULL);
54*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d, deviceObject=%p\n", result, deviceObject);
55*bebae9c0SAndroid Build Coastguard Worker 
56*bebae9c0SAndroid Build Coastguard Worker     printf("CreateRadioDevice\n");
57*bebae9c0SAndroid Build Coastguard Worker     result = (*engineEngine)->CreateRadioDevice(engineEngine, &deviceObject, 0, NULL, NULL);
58*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d, deviceObject=%p\n", result, deviceObject);
59*bebae9c0SAndroid Build Coastguard Worker 
60*bebae9c0SAndroid Build Coastguard Worker     printf("CreateLEDDevice\n");
61*bebae9c0SAndroid Build Coastguard Worker     result = (*engineEngine)->CreateLEDDevice(engineEngine, &deviceObject, XA_DEFAULTDEVICEID_LED,
62*bebae9c0SAndroid Build Coastguard Worker             0, NULL, NULL);
63*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d, deviceObject=%p\n", result, deviceObject);
64*bebae9c0SAndroid Build Coastguard Worker 
65*bebae9c0SAndroid Build Coastguard Worker     printf("CreateVibraDevice\n");
66*bebae9c0SAndroid Build Coastguard Worker     result = (*engineEngine)->CreateVibraDevice(engineEngine, &deviceObject,
67*bebae9c0SAndroid Build Coastguard Worker             XA_DEFAULTDEVICEID_VIBRA, 0, NULL, NULL);
68*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d, deviceObject=%p\n", result, deviceObject);
69*bebae9c0SAndroid Build Coastguard Worker 
70*bebae9c0SAndroid Build Coastguard Worker     printf("CreateMediaPlayer\n");
71*bebae9c0SAndroid Build Coastguard Worker     XAObjectItf playerObject;
72*bebae9c0SAndroid Build Coastguard Worker #if 1
73*bebae9c0SAndroid Build Coastguard Worker     XADataLocator_AndroidBufferQueue locABQ;
74*bebae9c0SAndroid Build Coastguard Worker     memset(&locABQ, 0, sizeof(locABQ));
75*bebae9c0SAndroid Build Coastguard Worker     locABQ.locatorType = XA_DATALOCATOR_ANDROIDBUFFERQUEUE;
76*bebae9c0SAndroid Build Coastguard Worker     locABQ.numBuffers = 1;
77*bebae9c0SAndroid Build Coastguard Worker #else
78*bebae9c0SAndroid Build Coastguard Worker     XADataLocator_URI locUri;
79*bebae9c0SAndroid Build Coastguard Worker     locUri.locatorType = XA_DATALOCATOR_URI;
80*bebae9c0SAndroid Build Coastguard Worker     locUri.URI = (XAchar *) "/sdcard/hello.wav";
81*bebae9c0SAndroid Build Coastguard Worker #endif
82*bebae9c0SAndroid Build Coastguard Worker     XADataFormat_MIME fmtMime;
83*bebae9c0SAndroid Build Coastguard Worker     fmtMime.formatType = XA_DATAFORMAT_MIME;
84*bebae9c0SAndroid Build Coastguard Worker     fmtMime.mimeType = NULL;
85*bebae9c0SAndroid Build Coastguard Worker     fmtMime.containerType = XA_CONTAINERTYPE_UNSPECIFIED;
86*bebae9c0SAndroid Build Coastguard Worker     XADataSource dataSrc;
87*bebae9c0SAndroid Build Coastguard Worker #if 1
88*bebae9c0SAndroid Build Coastguard Worker     dataSrc.pLocator = &locABQ;
89*bebae9c0SAndroid Build Coastguard Worker #else
90*bebae9c0SAndroid Build Coastguard Worker     dataSrc.pLocator = &locUri;
91*bebae9c0SAndroid Build Coastguard Worker #endif
92*bebae9c0SAndroid Build Coastguard Worker     dataSrc.pFormat = &fmtMime;
93*bebae9c0SAndroid Build Coastguard Worker     XADataSink audioSnk;
94*bebae9c0SAndroid Build Coastguard Worker     XADataLocator_OutputMix locOM;
95*bebae9c0SAndroid Build Coastguard Worker     locOM.locatorType = XA_DATALOCATOR_OUTPUTMIX;
96*bebae9c0SAndroid Build Coastguard Worker     locOM.outputMix = outputMixObject;
97*bebae9c0SAndroid Build Coastguard Worker     audioSnk.pLocator = &locOM;
98*bebae9c0SAndroid Build Coastguard Worker     audioSnk.pFormat = NULL;
99*bebae9c0SAndroid Build Coastguard Worker     XADataLocator_NativeDisplay locND;
100*bebae9c0SAndroid Build Coastguard Worker     locND.locatorType = XA_DATALOCATOR_NATIVEDISPLAY;
101*bebae9c0SAndroid Build Coastguard Worker     locND.hWindow = NULL; // FIXME wrong
102*bebae9c0SAndroid Build Coastguard Worker     locND.hDisplay = NULL;
103*bebae9c0SAndroid Build Coastguard Worker     XADataSink imageVideoSink;
104*bebae9c0SAndroid Build Coastguard Worker     imageVideoSink.pLocator = &locND;
105*bebae9c0SAndroid Build Coastguard Worker     imageVideoSink.pFormat = NULL;
106*bebae9c0SAndroid Build Coastguard Worker     result = (*engineEngine)->CreateMediaPlayer(engineEngine, &playerObject, &dataSrc, NULL,
107*bebae9c0SAndroid Build Coastguard Worker             &audioSnk, &imageVideoSink, NULL, NULL, 0, NULL, NULL);
108*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d, playerObject=%p\n", result, playerObject);
109*bebae9c0SAndroid Build Coastguard Worker     result = (*playerObject)->Realize(playerObject, XA_BOOLEAN_FALSE);
110*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d\n", result);
111*bebae9c0SAndroid Build Coastguard Worker 
112*bebae9c0SAndroid Build Coastguard Worker     printf("GetInterface for PLAY\n");
113*bebae9c0SAndroid Build Coastguard Worker     XAPlayItf playerPlay;
114*bebae9c0SAndroid Build Coastguard Worker     result = (*playerObject)->GetInterface(playerObject, XA_IID_PLAY, &playerPlay);
115*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d\n", result);
116*bebae9c0SAndroid Build Coastguard Worker     printf("playerPlay = %p\n", playerPlay);
117*bebae9c0SAndroid Build Coastguard Worker     assert(XA_RESULT_SUCCESS == result);
118*bebae9c0SAndroid Build Coastguard Worker 
119*bebae9c0SAndroid Build Coastguard Worker     printf("SetPlayState to PLAYING\n");
120*bebae9c0SAndroid Build Coastguard Worker     result = (*playerPlay)->SetPlayState(playerPlay, XA_PLAYSTATE_PLAYING);
121*bebae9c0SAndroid Build Coastguard Worker     printf("result = %d\n", result);
122*bebae9c0SAndroid Build Coastguard Worker     assert(XA_RESULT_SUCCESS == result);
123*bebae9c0SAndroid Build Coastguard Worker 
124*bebae9c0SAndroid Build Coastguard Worker     printf("destroying media player\n");
125*bebae9c0SAndroid Build Coastguard Worker     (*playerObject)->Destroy(playerObject);
126*bebae9c0SAndroid Build Coastguard Worker 
127*bebae9c0SAndroid Build Coastguard Worker     printf("destroying output mix\n");
128*bebae9c0SAndroid Build Coastguard Worker     (*outputMixObject)->Destroy(outputMixObject);
129*bebae9c0SAndroid Build Coastguard Worker 
130*bebae9c0SAndroid Build Coastguard Worker     printf("destroying engine\n");
131*bebae9c0SAndroid Build Coastguard Worker     (*engineObject)->Destroy(engineObject);
132*bebae9c0SAndroid Build Coastguard Worker     printf("exit\n");
133*bebae9c0SAndroid Build Coastguard Worker 
134*bebae9c0SAndroid Build Coastguard Worker     return EXIT_SUCCESS;
135*bebae9c0SAndroid Build Coastguard Worker }
136