/* * 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; }