1 /* ------------------------------------------------------------------ 2 * Copyright (C) 1998-2009 PacketVideo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 * express or implied. 14 * See the License for the specific language governing permissions 15 * and limitations under the License. 16 * ------------------------------------------------------------------- 17 */ 18 // -*- c++ -*- 19 // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 20 21 // P V M I _ C A P A B I L I T Y _ A N D _ C O N F I G 22 23 // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 24 25 /*! \addtogroup pvmicapability PvmiCapability 26 * 27 * @{ 28 */ 29 30 31 /*! \file pvmi_config_and_capability_utils.h 32 \brief This file contains a simple implementation 33 of config and capability for setting port data format 34 only. 35 */ 36 37 #ifndef PVMI_CONFIG_AND_CAPABILITY_UTILS_H_INCLUDED 38 #define PVMI_CONFIG_AND_CAPABILITY_UTILS_H_INCLUDED 39 40 #ifndef PVMI_CONFIG_AND_CAPABILITY_H_INCLUDED 41 #include "pvmi_config_and_capability.h" 42 #endif 43 #ifndef OSCL_STRING_CONTAINERS_H_INCLUDED 44 #include "oscl_string_containers.h" 45 #endif 46 47 //A static routine to set a port format using setParametersSync. 48 //The call may leave. 49 class PVMFPortInterface; 50 OSCL_IMPORT_REF void pvmiSetPortFormatSync(PvmiCapabilityAndConfig *aPort, const char* aFormatValType, PVMFFormatType aFormat); 51 52 // A routing to allocate a Kvp 53 OSCL_IMPORT_REF PVMFStatus AllocateKvp(OsclMemAllocator& aAlloc, PvmiKvp*& aKvp, PvmiKeyType aKey, int32 aNumParams); 54 55 /** This class will set port data format using 56 ** the synchronous methods only. The derived class 57 ** must set the format type string and format val type string 58 ** by calling Construct, 59 ** and must implement the IsFormatSupported and FormatUpdated 60 ** routines. 61 */ 62 class OSCL_IMPORT_REF PvmiCapabilityAndConfigPortFormatImpl 63 : public PvmiCapabilityAndConfig 64 { 65 public: PvmiCapabilityAndConfigPortFormatImpl()66 PvmiCapabilityAndConfigPortFormatImpl() 67 : iFormat(PVMF_MIME_FORMAT_UNKNOWN) 68 {} 69 ~PvmiCapabilityAndConfigPortFormatImpl()70 virtual ~PvmiCapabilityAndConfigPortFormatImpl() {}; 71 72 //Derived class must call this to set the format type strings 73 //before the other methods can be used. Construct(const char * aFormatType,const char * aFormatValType)74 void Construct(const char*aFormatType, const char* aFormatValType) 75 { 76 iFormatTypeString = aFormatType; 77 iFormatValTypeString = aFormatValType; 78 } 79 80 //Derived class must implement this to verify the requested 81 //format. 82 virtual bool IsFormatSupported(PVMFFormatType aFormat) = 0; 83 84 //Derived class must implement this to be notified when 85 //the format has been updated through the setParametersSync 86 //call. If this function leaves, the leave will 87 //propagate to the caller of setParametersSync 88 virtual void FormatUpdated() = 0; 89 90 // Implement pure virtuals from PvmiCapabilityAndConfig interface 91 OSCL_IMPORT_REF virtual PVMFStatus getParametersSync(PvmiMIOSession aSession, PvmiKeyType aIdentifier, 92 PvmiKvp*& aParameters, int& num_parameter_elements, PvmiCapabilityContext aContext); 93 OSCL_IMPORT_REF virtual PVMFStatus releaseParameters(PvmiMIOSession aSession, PvmiKvp* aParameters, int num_elements); 94 OSCL_IMPORT_REF virtual void setParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters, 95 int num_elements, PvmiKvp * & aRet_kvp); 96 OSCL_IMPORT_REF virtual PVMFStatus verifyParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters, int num_elements); 97 98 // Unsupported PvmiCapabilityAndConfig methods setObserver(PvmiConfigAndCapabilityCmdObserver *)99 void virtual setObserver(PvmiConfigAndCapabilityCmdObserver*) {}; createContext(PvmiMIOSession,PvmiCapabilityContext &)100 void virtual createContext(PvmiMIOSession , PvmiCapabilityContext&) {}; setContextParameters(PvmiMIOSession,PvmiCapabilityContext &,PvmiKvp *,int)101 void virtual setContextParameters(PvmiMIOSession , PvmiCapabilityContext& , PvmiKvp* , int) {}; DeleteContext(PvmiMIOSession,PvmiCapabilityContext &)102 void virtual DeleteContext(PvmiMIOSession , PvmiCapabilityContext&) {}; 103 PVMFCommandId virtual setParametersAsync(PvmiMIOSession , PvmiKvp* , int , PvmiKvp*& , OsclAny* context = NULL) 104 { 105 OSCL_UNUSED_ARG(context); 106 return -1; 107 } getCapabilityMetric(PvmiMIOSession)108 uint32 virtual getCapabilityMetric(PvmiMIOSession) 109 { 110 return 0; 111 } 112 113 114 PVMFFormatType iFormat; 115 116 protected: 117 //Format type and FormatValType strings. 118 OSCL_HeapString<OsclMemAllocator> iFormatTypeString; 119 OSCL_HeapString<OsclMemAllocator> iFormatValTypeString; 120 }; 121 122 #endif //PVMI_CONFIG_AND_CAPABILITY_UTILS_H_INCLUDED 123