1*c284bb0fSMatt Madia /* 2*c284bb0fSMatt Madia * Copyright (c) 1999-2000, Eric Moon. 3*c284bb0fSMatt Madia * All rights reserved. 4*c284bb0fSMatt Madia * 5*c284bb0fSMatt Madia * Redistribution and use in source and binary forms, with or without 6*c284bb0fSMatt Madia * modification, are permitted provided that the following conditions 7*c284bb0fSMatt Madia * are met: 8*c284bb0fSMatt Madia * 9*c284bb0fSMatt Madia * 1. Redistributions of source code must retain the above copyright 10*c284bb0fSMatt Madia * notice, this list of conditions, and the following disclaimer. 11*c284bb0fSMatt Madia * 12*c284bb0fSMatt Madia * 2. Redistributions in binary form must reproduce the above copyright 13*c284bb0fSMatt Madia * notice, this list of conditions, and the following disclaimer in the 14*c284bb0fSMatt Madia * documentation and/or other materials provided with the distribution. 15*c284bb0fSMatt Madia * 16*c284bb0fSMatt Madia * 3. The name of the author may not be used to endorse or promote products 17*c284bb0fSMatt Madia * derived from this software without specific prior written permission. 18*c284bb0fSMatt Madia * 19*c284bb0fSMatt Madia * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR 20*c284bb0fSMatt Madia * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21*c284bb0fSMatt Madia * OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22*c284bb0fSMatt Madia * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 23*c284bb0fSMatt Madia * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24*c284bb0fSMatt Madia * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25*c284bb0fSMatt Madia * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 26*c284bb0fSMatt Madia * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 27*c284bb0fSMatt Madia * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28*c284bb0fSMatt Madia * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29*c284bb0fSMatt Madia */ 30*c284bb0fSMatt Madia 31*c284bb0fSMatt Madia 32a0795c6fSMarcus Overhagen // IParameterSet.h 33a0795c6fSMarcus Overhagen // * PURPOSE 34a0795c6fSMarcus Overhagen // An abstract parameter-collection object. Can be shared 35a0795c6fSMarcus Overhagen // between a media node and one or more operations to simplify 36a0795c6fSMarcus Overhagen // realtime parameter automation. 37a0795c6fSMarcus Overhagen // 38a0795c6fSMarcus Overhagen // * HISTORY 39a0795c6fSMarcus Overhagen // e.moon 26aug99 Begun 40a0795c6fSMarcus Overhagen 41a0795c6fSMarcus Overhagen #ifndef __IParameterSet_H__ 42a0795c6fSMarcus Overhagen #define __IParameterSet_H__ 43a0795c6fSMarcus Overhagen 44083b91d4SMaurice Kalinowski #include <ParameterWeb.h> 45a0795c6fSMarcus Overhagen #include <SupportDefs.h> 46a0795c6fSMarcus Overhagen 47a0795c6fSMarcus Overhagen class IParameterSet { 48a0795c6fSMarcus Overhagen 49a0795c6fSMarcus Overhagen public: // *** EXTERNAL INTERFACE 50a0795c6fSMarcus Overhagen virtual ~IParameterSet(); //nyi 51a0795c6fSMarcus Overhagen IParameterSet(); //nyi 52a0795c6fSMarcus Overhagen 53a0795c6fSMarcus Overhagen // set parameter if the operation is stopped, or queue 54a0795c6fSMarcus Overhagen // parameter-change if it's running. 55a0795c6fSMarcus Overhagen // B_BAD_INDEX: invalid parameter ID 56a0795c6fSMarcus Overhagen // B_NO_MEMORY: too little data 57a0795c6fSMarcus Overhagen status_t setValue( 58a0795c6fSMarcus Overhagen int32 parameterID, 59a0795c6fSMarcus Overhagen bigtime_t performanceTime, 60a0795c6fSMarcus Overhagen const void* data, 61a0795c6fSMarcus Overhagen size_t size); //nyi 62a0795c6fSMarcus Overhagen 63a0795c6fSMarcus Overhagen // fetch last-changed value for the given parameter 64a0795c6fSMarcus Overhagen // B_BAD_INDEX: invalid parameter ID 65a0795c6fSMarcus Overhagen // B_NO_MEMORY: data buffer too small 66a0795c6fSMarcus Overhagen status_t getValue( 67a0795c6fSMarcus Overhagen int32 parameterID, 68a0795c6fSMarcus Overhagen bigtime_t* lastChangeTime, 69a0795c6fSMarcus Overhagen void* data, 70a0795c6fSMarcus Overhagen size_t* ioSize); //nyi 71a0795c6fSMarcus Overhagen 72a0795c6fSMarcus Overhagen public: // *** INTERNAL INTERFACE (HOOKS) 73a0795c6fSMarcus Overhagen 74a0795c6fSMarcus Overhagen // write to and from this object (translating parameter ID to 75a0795c6fSMarcus Overhagen // member variable(s)) 76a0795c6fSMarcus Overhagen 77a0795c6fSMarcus Overhagen virtual status_t store( 78a0795c6fSMarcus Overhagen int32 parameterID, 79a0795c6fSMarcus Overhagen const void* data, 80a0795c6fSMarcus Overhagen size_t size) =0; 81a0795c6fSMarcus Overhagen 82a0795c6fSMarcus Overhagen virtual status_t retrieve( 83a0795c6fSMarcus Overhagen int32 parameterID, 84a0795c6fSMarcus Overhagen void* data, 85a0795c6fSMarcus Overhagen size_t* ioSize) =0; 86a0795c6fSMarcus Overhagen 87a0795c6fSMarcus Overhagen // implement this hook to return a BParameterGroup representing 88a0795c6fSMarcus Overhagen // the parameters represented by this set 89a0795c6fSMarcus Overhagen 90a0795c6fSMarcus Overhagen virtual void populateGroup( 91a0795c6fSMarcus Overhagen BParameterGroup* group) =0; 92a0795c6fSMarcus Overhagen 93a0795c6fSMarcus Overhagen private: // *** IMPLEMENTATION 94a0795c6fSMarcus Overhagen 95a0795c6fSMarcus Overhagen // map of parameter ID -> change time +++++ 96a0795c6fSMarcus Overhagen }; 97a0795c6fSMarcus Overhagen 98a0795c6fSMarcus Overhagen #endif /*__IParameterSet_H__*/ 99