blob: 077867901330e7adbccb1c5baae681f1fb46d473 [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 2008 PacketVideo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
* -------------------------------------------------------------------
*/
// -*- c++ -*-
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// P V M I _ C A P A B I L I T Y _ A N D _ C O N F I G
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
/*! \addtogroup pvmicapability PvmiCapability
*
* @{
*/
/*! \file pvmi_config_and_capability_utils.h
\brief This file contains a simple implementation
of config and capability for setting port data format
only.
*/
#ifndef PVMI_CONFIG_AND_CAPABILITY_UTILS_H_INCLUDED
#define PVMI_CONFIG_AND_CAPABILITY_UTILS_H_INCLUDED
#ifndef PVMI_CONFIG_AND_CAPABILITY_H_INCLUDED
#include "pvmi_config_and_capability.h"
#endif
#ifndef OSCL_STRING_CONTAINERS_H_INCLUDED
#include "oscl_string_containers.h"
#endif
//A static routine to set a port format using setParametersSync.
//The call may leave.
class PVMFPortInterface;
OSCL_IMPORT_REF void pvmiSetPortFormatSync(PvmiCapabilityAndConfig *aPort, const char* aFormatValType, PVMFFormatType aFormat);
// A routing to allocate a Kvp
OSCL_IMPORT_REF PVMFStatus AllocateKvp(OsclMemAllocator& aAlloc, PvmiKvp*& aKvp, PvmiKeyType aKey, int32 aNumParams);
/** This class will set port data format using
** the synchronous methods only. The derived class
** must set the format type string and format val type string
** by calling Construct,
** and must implement the IsFormatSupported and FormatUpdated
** routines.
*/
class PvmiCapabilityAndConfigPortFormatImpl
: public PvmiCapabilityAndConfig
{
public:
PvmiCapabilityAndConfigPortFormatImpl()
: iFormat(PVMF_FORMAT_UNKNOWN)
{}
virtual ~PvmiCapabilityAndConfigPortFormatImpl() {};
//Derived class must call this to set the format type strings
//before the other methods can be used.
void Construct(const char*aFormatType, const char* aFormatValType)
{
iFormatTypeString = aFormatType;
iFormatValTypeString = aFormatValType;
}
//Derived class must implement this to verify the requested
//format.
virtual bool IsFormatSupported(PVMFFormatType aFormat) = 0;
//Derived class must implement this to be notified when
//the format has been updated through the setParametersSync
//call. If this function leaves, the leave will
//propagate to the caller of setParametersSync
virtual void FormatUpdated() = 0;
// Implement pure virtuals from PvmiCapabilityAndConfig interface
OSCL_IMPORT_REF virtual PVMFStatus getParametersSync(PvmiMIOSession aSession, PvmiKeyType aIdentifier,
PvmiKvp*& aParameters, int& num_parameter_elements, PvmiCapabilityContext aContext);
OSCL_IMPORT_REF virtual PVMFStatus releaseParameters(PvmiMIOSession aSession, PvmiKvp* aParameters, int num_elements);
OSCL_IMPORT_REF virtual void setParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters,
int num_elements, PvmiKvp * & aRet_kvp);
OSCL_IMPORT_REF virtual PVMFStatus verifyParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters, int num_elements);
// Unsupported PvmiCapabilityAndConfig methods
void virtual setObserver(PvmiConfigAndCapabilityCmdObserver*) {};
void virtual createContext(PvmiMIOSession , PvmiCapabilityContext&) {};
void virtual setContextParameters(PvmiMIOSession , PvmiCapabilityContext& , PvmiKvp* , int) {};
void virtual DeleteContext(PvmiMIOSession , PvmiCapabilityContext&) {};
PVMFCommandId virtual setParametersAsync(PvmiMIOSession , PvmiKvp* , int , PvmiKvp*& , OsclAny* context = NULL)
{
OSCL_UNUSED_ARG(context);
return -1;
}
uint32 virtual getCapabilityMetric(PvmiMIOSession)
{
return 0;
}
PVMFFormatType iFormat;
protected:
//Format type and FormatValType strings.
OSCL_HeapString<OsclMemAllocator> iFormatTypeString;
OSCL_HeapString<OsclMemAllocator> iFormatValTypeString;
};
#endif //PVMI_CONFIG_AND_CAPABILITY_UTILS_H_INCLUDED