IVisualization.c revision bcc5c7225e3b7a1dbf2e9e830987f69167acf06f
1e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy/* 2e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Copyright (C) 2010 The Android Open Source Project 3e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 4e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * you may not use this file except in compliance with the License. 6e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * You may obtain a copy of the License at 7e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 8e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * 10e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * Unless required by applicable law or agreed to in writing, software 11e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * See the License for the specific language governing permissions and 14e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy * limitations under the License. 15e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy */ 16e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 17a1db574036c9bc2d397b69f8200594027e1fff16Romain Guy/* Visualization implementation */ 18a1db574036c9bc2d397b69f8200594027e1fff16Romain Guy 197d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy#include "sles_allinclusive.h" 207d7b5490a0b0763e831b31bc11f17d8159b5914aRomain Guy 21e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 22e4ac2d6b5723c95e648c489b187ddde449452c13Patrick Dubroystatic SLresult IVisualization_RegisterVisualizationCallback(SLVisualizationItf self, 23e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy slVisualizationCallback callback, void *pContext, SLmilliHertz rate) 246554943a1dd6854c0f4976900956e556767b49e1Romain Guy{ 25e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy SL_ENTER_INTERFACE 26e5e0c50f7dfaccc220725c5595080e921ffda1e4Romain Guy 276554943a1dd6854c0f4976900956e556767b49e1Romain Guy if (!(0 < rate && rate <= 20000)) { 286554943a1dd6854c0f4976900956e556767b49e1Romain Guy result = SL_RESULT_PARAMETER_INVALID; 29b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4Mathias Agopian } else { 30e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy IVisualization *thiz = (IVisualization *) self; 316554943a1dd6854c0f4976900956e556767b49e1Romain Guy interface_lock_exclusive(thiz); 326554943a1dd6854c0f4976900956e556767b49e1Romain Guy thiz->mCallback = callback; 336554943a1dd6854c0f4976900956e556767b49e1Romain Guy thiz->mContext = pContext; 348f0095cd33558e9cc8a440047908e53b68906f5fRomain Guy thiz->mRate = rate; 35ce0537b80087a6225273040a987414b1dd081aa0Romain Guy interface_unlock_exclusive(thiz); 36c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy result = SL_RESULT_SUCCESS; 37f6a11b8a9e25ff9861bbba19251bea84d8a5daf2Romain Guy } 38c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6cRomain Guy 39079ba2c85b15e882629b8d188f5fbdb42f7f8eeaRomain Guy SL_LEAVE_INTERFACE 40a1db574036c9bc2d397b69f8200594027e1fff16Romain Guy} 4161c8c9c5b2006d18e9310b6521c65b36ffe75ce4Romain Guy 4285bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy 43e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guystatic SLresult IVisualization_GetMaxRate(SLVisualizationItf self, SLmilliHertz *pRate) 44b051e895ccb696604349c6c5efe7c4747e1d1ab6Romain Guy{ 456c319ca1275c8db892c39b48fc54864c949f9171Romain Guy SL_ENTER_INTERFACE 4685bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy 4706f96e2652e4855b6520ad9dd70583677605b79aRomain Guy if (NULL == pRate) { 48db1938e0e6ef816e228c815adccebd5cb05f2aa8Romain Guy result = SL_RESULT_PARAMETER_INVALID; 490baaac5e9adf3ee280ae1239e2e58754a9d2b099Romain Guy } else { 509d5316e3f56d138504565ff311145ac01621dff4Romain Guy *pRate = 20000; 5185bf02fc16784d935fb9eebfa9cb20fe46ff7951Romain Guy result = SL_RESULT_SUCCESS; 52d1d4bb70704e8f37d0823837eacdae21ebe0ed05Romain Guy } 53b02d0ca5553300063e4332192632312600caf4b9Fabrice Di Meglio 54e8e62a4a032a80409114a37908b5f18ab0080848Romain Guy SL_LEAVE_INTERFACE 55e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy} 56e4d011201cea40d46cb2b2eef401db8fddc5c9c6Romain Guy 579d5316e3f56d138504565ff311145ac01621dff4Romain Guy 589d5316e3f56d138504565ff311145ac01621dff4Romain Guystatic const struct SLVisualizationItf_ IVisualization_Itf = { 59163935113919a184122b8b3bd672ef08c8df65dcRomain Guy IVisualization_RegisterVisualizationCallback, 60163935113919a184122b8b3bd672ef08c8df65dcRomain Guy IVisualization_GetMaxRate 61163935113919a184122b8b3bd672ef08c8df65dcRomain Guy}; 62163935113919a184122b8b3bd672ef08c8df65dcRomain Guy 63163935113919a184122b8b3bd672ef08c8df65dcRomain Guyvoid IVisualization_init(void *self) 64163935113919a184122b8b3bd672ef08c8df65dcRomain Guy{ 65163935113919a184122b8b3bd672ef08c8df65dcRomain Guy IVisualization *thiz = (IVisualization *) self; 66244ada1d35419b7be9de0fc833bb03955b725ffaRomain Guy thiz->mItf = &IVisualization_Itf; 67bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy thiz->mCallback = NULL; 68244ada1d35419b7be9de0fc833bb03955b725ffaRomain Guy thiz->mContext = NULL; 69bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy thiz->mRate = 20000; 70bdb801ca993bcccbf2a4c2401d1720c3fa523777Romain Guy} 71e2d345ea67e2960b37bfdc0fc8626d1bfa747404Romain Guy