IVisualization.c revision bcc5c7225e3b7a1dbf2e9e830987f69167acf06f
1a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten/* 2a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * Copyright (C) 2010 The Android Open Source Project 3a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * 4a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 5a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * you may not use this file except in compliance with the License. 6a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * You may obtain a copy of the License at 7a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * 8a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 9a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * 10a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * Unless required by applicable law or agreed to in writing, software 11a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 12a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * See the License for the specific language governing permissions and 14a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten * limitations under the License. 15a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten */ 16a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 17a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten/* Visualization implementation */ 18a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 19a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten#include "sles_allinclusive.h" 20a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 21ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten 22d2a7f0d6883a6d3835642e7b282f05ed1c54fe63Glenn Kastenstatic SLresult IVisualization_RegisterVisualizationCallback(SLVisualizationItf self, 23d2a7f0d6883a6d3835642e7b282f05ed1c54fe63Glenn Kasten slVisualizationCallback callback, void *pContext, SLmilliHertz rate) 24a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten{ 25ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten SL_ENTER_INTERFACE 26ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten 27ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten if (!(0 < rate && rate <= 20000)) { 28ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten result = SL_RESULT_PARAMETER_INVALID; 29ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten } else { 30bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten IVisualization *thiz = (IVisualization *) self; 31bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten interface_lock_exclusive(thiz); 32bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten thiz->mCallback = callback; 33bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten thiz->mContext = pContext; 34bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten thiz->mRate = rate; 35bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten interface_unlock_exclusive(thiz); 36ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten result = SL_RESULT_SUCCESS; 37ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten } 38ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten 39ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten SL_LEAVE_INTERFACE 40a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten} 41a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 42ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten 43ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kastenstatic SLresult IVisualization_GetMaxRate(SLVisualizationItf self, SLmilliHertz *pRate) 44a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten{ 45ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten SL_ENTER_INTERFACE 46ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten 47ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten if (NULL == pRate) { 48ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten result = SL_RESULT_PARAMETER_INVALID; 49ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten } else { 50ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten *pRate = 20000; 51ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten result = SL_RESULT_SUCCESS; 52ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten } 53ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten 54ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten SL_LEAVE_INTERFACE 55a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten} 56a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 57ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten 58a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kastenstatic const struct SLVisualizationItf_ IVisualization_Itf = { 59a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten IVisualization_RegisterVisualizationCallback, 60a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten IVisualization_GetMaxRate 61a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten}; 62a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 63a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kastenvoid IVisualization_init(void *self) 64a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten{ 65bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten IVisualization *thiz = (IVisualization *) self; 66bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten thiz->mItf = &IVisualization_Itf; 67bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten thiz->mCallback = NULL; 68bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten thiz->mContext = NULL; 69bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten thiz->mRate = 20000; 70a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten} 71