IAndroidConfiguration.c revision 75e22870e41386cdc597bd29c76744d74d4c22ad
142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* 242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * Copyright (C) 2010 The Android Open Source Project 342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * 442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License"); 542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * you may not use this file except in compliance with the License. 642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * You may obtain a copy of the License at 742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * 842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * http://www.apache.org/licenses/LICENSE-2.0 942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * 1042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * Unless required by applicable law or agreed to in writing, software 1142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS, 1242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * See the License for the specific language governing permissions and 1442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi * limitations under the License. 1542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi */ 1642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 1742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* AndroidConfiguration implementation */ 1842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 1942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi#include "sles_allinclusive.h" 2042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 2142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 2242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistatic SLresult IAndroidConfiguration_SetConfiguration(SLAndroidConfigurationItf self, 2342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi const SLchar *configKey, 2442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi const void *pConfigValue, 2542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SLuint32 valueSize) 2642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi{ 2742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SL_ENTER_INTERFACE 2842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 2942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi IAndroidConfiguration *this = (IAndroidConfiguration *) self; 30b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi 3142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi interface_lock_exclusive(this); 3242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 33b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi#ifndef ANDROID 3442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi result = SL_RESULT_SUCCESS; 35b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi#else 36b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi // route configuration to the appropriate object 37b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi if (SL_OBJECTID_AUDIORECORDER == IObjectToObjectID((this)->mThis)) { 3875e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi SL_LOGV("SetConfiguration issued for AudioRecorder key=%s valueSize=%lu", 3975e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi configKey, valueSize); 40b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi result = android_audioRecorder_setConfig((CAudioRecorder *) this->mThis, configKey, 41b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi pConfigValue, valueSize); 42b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi } else if (SL_OBJECTID_AUDIOPLAYER == IObjectToObjectID((this)->mThis)) { 4375e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi SL_LOGV("SetConfiguration issued for AudioPlayer key=%s valueSize=%lu", 4475e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi configKey, valueSize); 4575e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi result = android_audioPlayer_setConfig((CAudioPlayer *) this->mThis, configKey, 4675e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi pConfigValue, valueSize); 4775e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi } else { 48b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi result = SL_RESULT_PARAMETER_INVALID; 49b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi } 50b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi#endif 5142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 5242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi interface_unlock_exclusive(this); 5342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 5442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SL_LEAVE_INTERFACE 5542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi} 5642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 5742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 5842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistatic SLresult IAndroidConfiguration_GetConfiguration(SLAndroidConfigurationItf self, 5942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi const SLchar *configKey, 6042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SLuint32 *pValueSize, 6142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi void *pConfigValue) 6242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi{ 6342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SL_ENTER_INTERFACE 6442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 65b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi#ifndef ANDROID 66b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi result = SL_RESULT_SUCCESS; 67b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi#else 68b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi if ((NULL == pValueSize) || (NULL == pConfigValue)) { 6942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi result = SL_RESULT_PARAMETER_INVALID; 7042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi } else { 7142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi IAndroidConfiguration *this = (IAndroidConfiguration *) self; 7242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 73b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi interface_lock_exclusive(this); 74b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi 75b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi // route configuration request to the appropriate object 76b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi if (SL_OBJECTID_AUDIORECORDER == IObjectToObjectID((this)->mThis)) { 77b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi result = android_audioRecorder_getConfig((CAudioRecorder *) this->mThis, configKey, 78b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi pValueSize, pConfigValue); 79b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi } else if (SL_OBJECTID_AUDIOPLAYER == IObjectToObjectID((this)->mThis)) { 8075e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi result = android_audioPlayer_getConfig((CAudioPlayer *) this->mThis, configKey, 8175e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi pValueSize, pConfigValue); 8275e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi } else { 83b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi result = SL_RESULT_PARAMETER_INVALID; 84b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi } 85b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi 86b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi interface_unlock_exclusive(this); 8742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi } 88b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi#endif 8942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 9042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SL_LEAVE_INTERFACE 9142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi} 9242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 9342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 9442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistatic const struct SLAndroidConfigurationItf_ IAndroidConfiguration_Itf = { 9542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi IAndroidConfiguration_SetConfiguration, 9642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi IAndroidConfiguration_GetConfiguration 9742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi}; 9842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 9942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivivoid IAndroidConfiguration_init(void *self) 10042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi{ 10142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi IAndroidConfiguration *this = (IAndroidConfiguration *) self; 10242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi this->mItf = &IAndroidConfiguration_Itf; 10342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi} 104