IAndroidConfiguration.c revision bcc5c7225e3b7a1dbf2e9e830987f69167acf06f
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 29bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten IAndroidConfiguration *thiz = (IAndroidConfiguration *) self; 30b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi 31bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten interface_lock_exclusive(thiz); 3242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 33b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi // route configuration to the appropriate object 34bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten if (SL_OBJECTID_AUDIORECORDER == IObjectToObjectID((thiz)->mThis)) { 3575e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi SL_LOGV("SetConfiguration issued for AudioRecorder key=%s valueSize=%lu", 3675e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi configKey, valueSize); 37bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten result = android_audioRecorder_setConfig((CAudioRecorder *) thiz->mThis, configKey, 38b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi pConfigValue, valueSize); 39bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten } else if (SL_OBJECTID_AUDIOPLAYER == IObjectToObjectID((thiz)->mThis)) { 4075e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi SL_LOGV("SetConfiguration issued for AudioPlayer key=%s valueSize=%lu", 4175e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi configKey, valueSize); 42bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten result = android_audioPlayer_setConfig((CAudioPlayer *) thiz->mThis, configKey, 4375e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi pConfigValue, valueSize); 4475e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi } else { 45b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi result = SL_RESULT_PARAMETER_INVALID; 46b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi } 4742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 48bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten interface_unlock_exclusive(thiz); 4942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 5042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SL_LEAVE_INTERFACE 5142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi} 5242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 5342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 5442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistatic SLresult IAndroidConfiguration_GetConfiguration(SLAndroidConfigurationItf self, 5542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi const SLchar *configKey, 5642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SLuint32 *pValueSize, 5742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi void *pConfigValue) 5842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi{ 5942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SL_ENTER_INTERFACE 6042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 61453dd564a81fe98b7a947ae4a9844a53fa957c2bJean-Michel Trivi // having value size is required, but pConfigValue being NULL is allowed to allow properties 62453dd564a81fe98b7a947ae4a9844a53fa957c2bJean-Michel Trivi // to report their actual value size (if applicable) 63453dd564a81fe98b7a947ae4a9844a53fa957c2bJean-Michel Trivi if (NULL == pValueSize) { 6442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi result = SL_RESULT_PARAMETER_INVALID; 6542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi } else { 66bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten IAndroidConfiguration *thiz = (IAndroidConfiguration *) self; 6742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 68bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten interface_lock_exclusive(thiz); 69b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi 70b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi // route configuration request to the appropriate object 71bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten if (SL_OBJECTID_AUDIORECORDER == IObjectToObjectID((thiz)->mThis)) { 72bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten result = android_audioRecorder_getConfig((CAudioRecorder *) thiz->mThis, configKey, 73b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi pValueSize, pConfigValue); 74bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten } else if (SL_OBJECTID_AUDIOPLAYER == IObjectToObjectID((thiz)->mThis)) { 75bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten result = android_audioPlayer_getConfig((CAudioPlayer *) thiz->mThis, configKey, 7675e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi pValueSize, pConfigValue); 7775e22870e41386cdc597bd29c76744d74d4c22adJean-Michel Trivi } else { 78b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi result = SL_RESULT_PARAMETER_INVALID; 79b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi } 80b3e52a63baaea367cf411348b68ecd8fd429b029Jean-Michel Trivi 81bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten interface_unlock_exclusive(thiz); 8242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi } 8342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 8442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SL_LEAVE_INTERFACE 8542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi} 8642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 8742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 8842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistatic const struct SLAndroidConfigurationItf_ IAndroidConfiguration_Itf = { 8942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi IAndroidConfiguration_SetConfiguration, 9042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi IAndroidConfiguration_GetConfiguration 9142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi}; 9242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 9342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivivoid IAndroidConfiguration_init(void *self) 9442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi{ 95bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten IAndroidConfiguration *thiz = (IAndroidConfiguration *) self; 96bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten thiz->mItf = &IAndroidConfiguration_Itf; 9742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi} 98