| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #include <assert.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <OMXAL/OpenMAXAL.h> |
| #include <OMXAL/OpenMAXAL_Android.h> |
| |
| int main(int argc __unused, char **argv __unused) |
| { |
| XAresult result; |
| XAObjectItf engineObject; |
| printf("xaCreateEngine\n"); |
| result = xaCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL); |
| printf("result = %d\n", result); |
| assert(XA_RESULT_SUCCESS == result); |
| printf("engineObject = %p\n", engineObject); |
| printf("realize\n"); |
| result = (*engineObject)->Realize(engineObject, XA_BOOLEAN_FALSE); |
| printf("result = %d\n", result); |
| printf("GetInterface for ENGINE\n"); |
| XAEngineItf engineEngine; |
| result = (*engineObject)->GetInterface(engineObject, XA_IID_ENGINE, &engineEngine); |
| printf("result = %d\n", result); |
| printf("engineEngine = %p\n", engineEngine); |
| assert(XA_RESULT_SUCCESS == result); |
| |
| XAObjectItf outputMixObject; |
| printf("CreateOutputMix"); |
| result = (*engineEngine)->CreateOutputMix(engineEngine, &outputMixObject, 0, NULL, NULL); |
| printf("result = %d, outputMixObject=%p\n", result, outputMixObject); |
| result = (*outputMixObject)->Realize(outputMixObject, XA_BOOLEAN_FALSE); |
| printf("result = %d\n", result); |
| |
| XAObjectItf deviceObject; |
| printf("CreateCameraDevice\n"); |
| result = (*engineEngine)->CreateCameraDevice(engineEngine, &deviceObject, |
| XA_DEFAULTDEVICEID_CAMERA, 0, NULL, NULL); |
| printf("result = %d, deviceObject=%p\n", result, deviceObject); |
| |
| printf("CreateRadioDevice\n"); |
| result = (*engineEngine)->CreateRadioDevice(engineEngine, &deviceObject, 0, NULL, NULL); |
| printf("result = %d, deviceObject=%p\n", result, deviceObject); |
| |
| printf("CreateLEDDevice\n"); |
| result = (*engineEngine)->CreateLEDDevice(engineEngine, &deviceObject, XA_DEFAULTDEVICEID_LED, |
| 0, NULL, NULL); |
| printf("result = %d, deviceObject=%p\n", result, deviceObject); |
| |
| printf("CreateVibraDevice\n"); |
| result = (*engineEngine)->CreateVibraDevice(engineEngine, &deviceObject, |
| XA_DEFAULTDEVICEID_VIBRA, 0, NULL, NULL); |
| printf("result = %d, deviceObject=%p\n", result, deviceObject); |
| |
| printf("CreateMediaPlayer\n"); |
| XAObjectItf playerObject; |
| #if 1 |
| XADataLocator_AndroidBufferQueue locABQ; |
| memset(&locABQ, 0, sizeof(locABQ)); |
| locABQ.locatorType = XA_DATALOCATOR_ANDROIDBUFFERQUEUE; |
| locABQ.numBuffers = 1; |
| #else |
| XADataLocator_URI locUri; |
| locUri.locatorType = XA_DATALOCATOR_URI; |
| locUri.URI = (XAchar *) "/sdcard/hello.wav"; |
| #endif |
| XADataFormat_MIME fmtMime; |
| fmtMime.formatType = XA_DATAFORMAT_MIME; |
| fmtMime.mimeType = NULL; |
| fmtMime.containerType = XA_CONTAINERTYPE_UNSPECIFIED; |
| XADataSource dataSrc; |
| #if 1 |
| dataSrc.pLocator = &locABQ; |
| #else |
| dataSrc.pLocator = &locUri; |
| #endif |
| dataSrc.pFormat = &fmtMime; |
| XADataSink audioSnk; |
| XADataLocator_OutputMix locOM; |
| locOM.locatorType = XA_DATALOCATOR_OUTPUTMIX; |
| locOM.outputMix = outputMixObject; |
| audioSnk.pLocator = &locOM; |
| audioSnk.pFormat = NULL; |
| XADataLocator_NativeDisplay locND; |
| locND.locatorType = XA_DATALOCATOR_NATIVEDISPLAY; |
| locND.hWindow = NULL; // FIXME wrong |
| locND.hDisplay = NULL; |
| XADataSink imageVideoSink; |
| imageVideoSink.pLocator = &locND; |
| imageVideoSink.pFormat = NULL; |
| result = (*engineEngine)->CreateMediaPlayer(engineEngine, &playerObject, &dataSrc, NULL, |
| &audioSnk, &imageVideoSink, NULL, NULL, 0, NULL, NULL); |
| printf("result = %d, playerObject=%p\n", result, playerObject); |
| result = (*playerObject)->Realize(playerObject, XA_BOOLEAN_FALSE); |
| printf("result = %d\n", result); |
| |
| printf("GetInterface for PLAY\n"); |
| XAPlayItf playerPlay; |
| result = (*playerObject)->GetInterface(playerObject, XA_IID_PLAY, &playerPlay); |
| printf("result = %d\n", result); |
| printf("playerPlay = %p\n", playerPlay); |
| assert(XA_RESULT_SUCCESS == result); |
| |
| printf("SetPlayState to PLAYING\n"); |
| result = (*playerPlay)->SetPlayState(playerPlay, XA_PLAYSTATE_PLAYING); |
| printf("result = %d\n", result); |
| assert(XA_RESULT_SUCCESS == result); |
| |
| printf("destroying media player\n"); |
| (*playerObject)->Destroy(playerObject); |
| |
| printf("destroying output mix\n"); |
| (*outputMixObject)->Destroy(outputMixObject); |
| |
| printf("destroying engine\n"); |
| (*engineObject)->Destroy(engineObject); |
| printf("exit\n"); |
| |
| return EXIT_SUCCESS; |
| } |