/* ------------------------------------------------------------------
 * Copyright (C) 1998-2009 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.
 * -------------------------------------------------------------------
 */
/**
 *  @file pvmi_port_config_kvp.h
 *  @brief This files defines a key-value pair type port config params
 */

#ifndef PVMI_PORT_CONFIG_KVP_H_INCLUDED
#define PVMI_PORT_CONFIG_KVP_H_INCLUDED

#define PVMI_PORT_CONFIG_INPLACE_DATA_PROCESSING_KEY   "x-pvmf/port-config/inplacedataprocessing"
#define PVMI_PORT_CONFIG_INPLACE_DATA_PROCESSING_VALUE "x-pvmf/port-config/inplacedataprocessing;valtype=bool"

#endif // PVMI_PORT_CONFIG_KVP_H_INCLUDED




