blob: 886e204ed65bed7a9fa4e7a07dead45016aed48e [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.
* -------------------------------------------------------------------
*/
/**
* @file pvaetestinput.h
* @brief Test input to PVAuthorEngine unit test, using single core encoders
*/
#ifndef PVAETESTINPUT_H_INCLUDED
#define PVAETESTINPUT_H_INCLUDED
#ifndef OSCL_BASE_H_INCLUDED
#include "oscl_base.h"
#endif
#ifndef PVLOGGER_H_INCLUDED
#include "pvlogger.h"
#endif
#ifndef PVMI_MIO_CONTROL_H_INCLUDED
#include "pvmi_mio_control.h"
#endif
#ifndef OSCL_STRING_H_INCLUDED
#include "oscl_string.h"
#endif
#ifndef OSCL_STRING_CONTAINERS_H_INCLUDED
#include "oscl_string_containers.h"
#endif
#ifndef PVMI_MIO_FILEINPUT_FACTORY_H_INCLUDED
#include "pvmi_mio_fileinput_factory.h"
#endif
// Forward declarations
class PVMFNodeInterface;
class PVInterface;
class AVTConfig
{
public:
AVTConfig()
{
iWidth = 0;
iHeight = 0;
iFps = 0;
iFrameInterval = 0;
iSamplingRate = 0;
iNumChannels = 0;
iLoopingEnable = false;
};
~AVTConfig()
{
iWidth = 0;
iHeight = 0;
iFps = 0;
iFrameInterval = 0;
iSamplingRate = 0;
iNumChannels = 0;
iLoopingEnable = false;
};
AVTConfig(AVTConfig& arATVConfig)
{
iWidth = arATVConfig.iWidth;
iHeight = arATVConfig.iHeight;
iFps = arATVConfig.iFps;
iFrameInterval = arATVConfig.iFrameInterval;
iSamplingRate = arATVConfig.iSamplingRate;
iNumChannels = arATVConfig.iNumChannels;
iTextLogFile = arATVConfig.iTextLogFile;
iTextConfigFile = arATVConfig.iTextConfigFile;
iLoopingEnable = arATVConfig.iLoopingEnable;
}
int iWidth;
int iHeight;
OsclFloat iFps;
int iFrameInterval;
int iSamplingRate;
int iNumChannels;
OSCL_HeapString<OsclMemAllocator> iTextLogFile;
OSCL_HeapString<OsclMemAllocator> iTextConfigFile;
bool iLoopingEnable;
};
/** Enumerated list of test input types */
typedef enum
{
INVALID_INPUT_TYPE = 0
, YUV_FILE
, M4V_FILE
, H263_FILE
, H264_FILE
, AMR_IETF_FILE
, AAC_ADIF_FILE
, AAC_ADTS_FILE
, PCM16_FILE
, SYMBIAN_DEV_SOUND
, YUV_WRONG_FILE //just introduced for error handling scenarios
, TEXT_FILE
} PVAETestInputType;
#define ARRAY_SIZE 512
////////////////////////////////////////////////////////////////////////////
class PVAETestInput
{
public:
/** Default contructor */
PVAETestInput();
/** Default destructor */
~PVAETestInput() {};
/**
* Copy constructor
* @param aInput Source object
*/
PVAETestInput(const PVAETestInput& aInput);
/**
* Overloaded = operator
* @param aInput Source object
* @return Reference to this object with values copied from the source object
*/
PVAETestInput& operator=(const PVAETestInput& aInput);
/**
* Query whether the specified input type is supported
*
* @param aType Input type to be supported
* @return True if input type is supported, else false
*/
bool IsTestInputTypeSupported(PVAETestInputType aType);
/**
* Creates an input node of the specified type. DeleteInputNode() will need to
* be called to deallocate the input node. The default contructor will not
* delete the input node created by this method.
*
* @param aType Type of input node to create
* @return True for success, else false
*/
int CreateInputNode(PVAETestInputType aType, const OSCL_wString& aFileName, AVTConfig iAVTConfig);
/**
* Deletes the input node contained by this object
* @return True for success, else false
*/
bool DeleteInputNode();
PVMFNodeInterface* iNode; /** Input node */
PVAETestInputType iType; /** Input type */
PvmiMIOFileInputSettings iSettings; /** settings data */
Oscl_Vector<PVInterface*, OsclMemAllocator> iExtensions; /** Vector of extensions to the input node */
// Media input module
PvmiMIOControl* iMediaInput;
uint32 iDuration;
private:
/**
* Copy data from source object to this object
* @param aInput Source object
*/
void Copy(const PVAETestInput& aInput);
/**
* Creates PVMFFileInputNode of the specified type
*
* @param aType Type of test input
* @return True for success, else false
*/
bool CreateFileInputNode(PVAETestInputType aType);
/**
* Creates the MediaIO module object using its factory::create call and
* also creates PVMediaIONode for it
*
* @param aType Type of test input
* @return True for success, else false
*/
bool CreateMIOInputNode(PVAETestInputType aType, const OSCL_wString& aFileName, AVTConfig iAVTConfig);
PVLogger* iLogger; /** Logger object */
};
#endif // PVAETESTINPUT_H_INCLUDED