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