blob: 2e364a086d701243c30eda95c56d17be7c3d8e1f [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.
* -------------------------------------------------------------------
*/
#ifndef TEST_PV_PLAYER_ENGINE_TESTSET_CPMDLAPASSTHRU_H_INCLUDED
#define TEST_PV_PLAYER_ENGINE_TESTSET_CPMDLAPASSTHRU_H_INCLUDED
/**
* @file test_pv_player_engine_testset_cpmdlapassthru.h
* @brief This file contains the class definitions for the cpmdlaspassthru set of
* test cases for PVPlayerEngine
*
*/
#ifndef TEST_PV_PLAYER_ENGINE_H_INCLUDED
#include "test_pv_player_engine.h"
#endif
#ifndef TEST_PV_PLAYER_ENGINE_CONFIG_H_INCLUDED
#include "test_pv_player_engine_config.h"
#endif
#ifndef PVMF_STREAMING_DATA_SOURCE_H_INCLUDED
#include "pvmf_streaming_data_source.h"
#endif
#ifndef PVMF_DOWNLOAD_DATA_SOURCE_H_INCLUDED
#include "pvmf_download_data_source.h"
#endif
#ifndef PVMF_SOURCE_CONTEXT_DATA_H_INCLUDED
#include "pvmf_source_context_data.h"
#endif
#ifndef PVMF_CPMPLUGIN_FACTORY_REGISTRY_H_INCLUDED
#include "pvmf_cpmplugin_factory_registry.h"
#endif
class PVPlayerDataSourceURL;
class PVPlayerDataSink;
class PVPlayerDataSink;
class PVPlayerDataSinkFilename;
class PvmfFileOutputNodeConfigInterface;
class PvmiCapabilityAndConfig;
enum OMA1_DLA_TESTMODE
{
OMA1_DLA_FAIL = 0, //AuthorizeUsage will fail, call Acquire license and Init again
OMA1_DLA_NORMAL, //Normal Processing , no failre during AuthorizeUsage
OMA1_DLA_UNKNOWN_CPM_CONTENTTYPE, //Set the cpm to return UnknownCotentFormat instead of AUTH_BEFORE_ACCESS
OMA1_DLA_CANCEL_ACQUIRE_LICENSE_FAILS, //CancelAcquireLic will fail, GetLicense already returned CommandCompleted
OMA1_DLA_CANCEL_ACQUIRE_LICENSE_SUCCEEDS, //CancelAcquireLic will succeed, GetLicense should not return CommandCompleted
OMA1_DLA_CONTENT_NOTSUPPORTED //RegiserContent will handle "notsupported" case
};
/*!
* A test case to test CPM DLA Pass Thru Plugin
* - Data Source: Any Media ranging from amr, aac, mp4, mp3, asf, pvx, sdp, rtsp, PDL, rm, ASF streaming
* - Data Sink(s): Video[test_player__<rtspurl>_cpmdlapassthru_video.dat]\n
* Audio[test_player__<rtspurl>_cpmdlapassthru_audio.dat]
* - Sequence:
* -# CreatePlayer()
* -# AddDataSource()
* -# Init() will Fail depending on the TestMode chosen
* -# Query License
* -# Acquire License
* -# AddDataSink() (video)
* -# AddDataSink() (audio)
* -# Prepare()
* -# Start()
* -# WAIT for EOS.
* -# Stop()
* -# RemoveDataSink() (video)
* -# RemoveDataSink() (audio)
* -# Reset()
* -# RemoveDataSource()
* -# DeletePlayer()
*
*/
class PVMFLocalDataSource;
class PVMFOma1PassthruPluginFactory;
class PVPlayerLicenseAcquisitionInterface;
class pvplayer_async_test_cpmdlapassthru : public pvplayer_async_test_base
{
public:
pvplayer_async_test_cpmdlapassthru(PVPlayerAsyncTestParam aTestParam,
PVMFFormatType aVideoSinkFormat,
PVMFFormatType aAudioSinkFormat,
uint32 aTestID,
bool aPauseResumeEnable,
bool aSeekEnable,
bool aWaitForEOS,
int atestMode,
bool aCancelAcquireLicense)
: pvplayer_async_test_base(aTestParam)
, iPlayer(NULL)
, iDataSource(NULL)
, iDataSinkVideo(NULL)
, iDataSinkAudio(NULL)
, iIONodeVideo(NULL)
, iIONodeAudio(NULL)
, iMIOFileOutVideo(NULL)
, iMIOFileOutAudio(NULL)
, iCurrentCmdId(0)
, iCancelAllCmdId(0)
, iAcquireLicenseCmdId(0)
, iSessionDuration(0)
, oLiveSession(false)
, iProtocolRollOver(false)
, iProtocolRollOverWithUnknownURLType(false)
, iPlayListURL(false)
, iStreamDataSource(NULL)
, iSourceContextData(NULL)
, iLocalDataSource(NULL)
{
iVideoSinkFormatType = aVideoSinkFormat;
iAudioSinkFormatType = aAudioSinkFormat;
oPauseResumeEnable = aPauseResumeEnable;
oSeekEnable = aSeekEnable;
oWaitForEOS = aWaitForEOS;
iTestID = aTestID;
iNumPlay = 0;
iTargetNumPlay = 1;
iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0;
iDownloadOnly = iDownloadThenPlay = false;
iTestMode = atestMode;
oCancelAcquireLicense = aCancelAcquireLicense;
}
~pvplayer_async_test_cpmdlapassthru() {}
void StartTest();
void Run();
void CommandCompleted(const PVCmdResponse& aResponse);
void HandleErrorEvent(const PVAsyncErrorEvent& aEvent);
void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent);
PVTestState iState;
PVTestState iEndState;
PVPlayerInterface* iPlayer;
PVPlayerDataSourceURL* iDataSource;
PVPlayerDataSink* iDataSinkVideo;
PVPlayerDataSink* iDataSinkAudio;
PVMFNodeInterface* iIONodeVideo;
PVMFNodeInterface* iIONodeAudio;
PvmiMIOControl* iMIOFileOutVideo;
PvmiMIOControl* iMIOFileOutAudio;
PVCommandId iCurrentCmdId;
PVCommandId iCancelAllCmdId;
PVCommandId iCancelCmdId;
PVCommandId iAcquireLicenseCmdId;
int iTestMode;
void setMultiplePlayMode(uint32 aNum)
{
iMultiplePlay = true;
iTargetNumPlay = aNum;
}
void setProtocolRollOverMode()
{
iProtocolRollOver = true;
}
void setProtocolRollOverModeWithUnknownURL()
{
iProtocolRollOverWithUnknownURLType = true;
}
void setPlayListMode()
{
iPlayListURL = true;
}
private:
void HandleSocketNodeErrors(int32 aErr);
void HandleRTSPNodeErrors(int32 aErr);
void HandleStreamingManagerNodeErrors(int32 aErr);
void HandleJitterBufferNodeErrors(int32 aErr);
void HandleMediaLayerNodeErrors(int32 aErr);
void HandleProtocolEngineNodeErrors(int32 aErr);
void PrintMetadataInfo();
PVMFFormatType iVideoSinkFormatType;
PVMFFormatType iAudioSinkFormatType;
OSCL_wHeapString<OsclMemAllocator> wFileName;
oscl_wchar output[512];
bool oPauseResumeEnable;
bool oSeekEnable;
bool oWaitForEOS;
bool oCancelAcquireLicense;
uint32 iTestID;
PVPMetadataList iMetadataKeyList;
Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList;
int32 iNumValues;
uint32 iSessionDuration;
bool oLiveSession;
bool iMultiplePlay;
uint32 iNumPlay;
uint32 iTargetNumPlay;
bool iProtocolRollOver;
bool iProtocolRollOverWithUnknownURLType;
bool iPlayListURL;
PvmiCapabilityAndConfig* iPlayerCapConfigIF;
PvmiKvp* iErrorKVP;
PvmiKvp iKVPSetAsync;
OSCL_StackString<128> iKeyStringSetAsync;
PVMFStreamingDataSource* iStreamDataSource;
PVMFSourceContextData* iSourceContextData;
PVMFLocalDataSource* iLocalDataSource;
char iClipType[100];
//FTDL
void CreateDownloadDataSource();
PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP;
int32 iDownloadMaxfilesize;
OSCL_wHeapString<OsclMemAllocator> iDownloadURL;
OSCL_wHeapString<OsclMemAllocator> iDownloadFilename;
OSCL_HeapString<OsclMemAllocator> iDownloadProxy;
OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename;
int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS;
bool iDownloadOnly, iDownloadThenPlay;
bool iContentTooLarge;
PVMFCPMPluginFactoryRegistryClient iPluginRegistryClient;
PVMFOma1PassthruPluginFactory* iPluginFactory;
OSCL_HeapString<OsclMemAllocator> iPluginMimeType;
//for license acquisition.
PVPlayerLicenseAcquisitionInterface* iLicenseIF;
};
#endif