blob: b737821d84b1c8e4373de2b6e9154d6de91d9f4c [file] [log] [blame]
/* ------------------------------------------------------------------
* 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.
* -------------------------------------------------------------------
*/
#ifndef TEST_PV_AUTHOR_ENGINE_TESTSET6_H_INCLUDED
#include "test_pv_author_engine_testset6.h"
#endif
#ifndef PVMF_COMPOSER_SIZE_AND_DURATION_H_INCLUDED
#include "pvmf_composer_size_and_duration.h"
#endif
#ifndef PVMF_FILEOUTPUT_CONFIG_H_INCLUDED
#include "pvmf_fileoutput_config.h"
#endif
#ifndef PVMP4FFCN_CLIPCONFIG_H_INCLUDED
#include "pvmp4ffcn_clipconfig.h"
#endif
#ifndef PV_MP4_H263_ENC_EXTENSION_H_INCLUDED
#include "pvmp4h263encextension.h"
#endif
#ifndef PVAETEST_NODE_CONFIG_H_INCLUDED
#include "pvaetest_node_config.h"
#endif
#include "pvmf_media_data.h"
#include "pvmf_media_msg_format_ids.h"
void pv_mediainput_async_test_errorhandling::StartTest()
{
AddToScheduler();
iState = PVAE_CMD_CREATE;
RunIfNotReady();
}
////////////////////////////////////////////////////////////////////////////
void pv_mediainput_async_test_errorhandling::HandleErrorEvent(const PVAsyncErrorEvent& aEvent)
{
OSCL_UNUSED_ARG(aEvent);
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR, (0, "pv_mediainput_async_test_errorhandling::HandleErrorEvent"));
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
////////////////////////////////////////////////////////////////////////////
void pv_mediainput_async_test_errorhandling::HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_STACK_TRACE,
(0, "pv_mediainput_async_test_errorhandling::HandleInformationalEvent"));
switch (aEvent.GetEventType())
{
case PVMF_COMPOSER_EOS_REACHED:
//Engine already stopped at EOS so send reset command.
iState = PVAE_CMD_RESET;
Cancel();
RunIfNotReady();
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_STACK_TRACE,
(0, "pv_mediainput_async_test_errorhandling::HandleInformationalEvent: EOS reached"));
break;
default:
break;
}
}
////////////////////////////////////////////////////////////////////////////
bool pv_mediainput_async_test_errorhandling::CreateTestInputs()
{
int32 status = 0;
int32 error = 0;
iFileParser = NULL;
iFileServer.Connect();
if (iMediaInputType == PVMF_MIME_AVIFF)
{
OSCL_TRY(error, iFileParser = PVAviFile::CreateAviFileParser(iInputFileName, error, &iFileServer););
if (error || (NULL == iFileParser))
{
if (PVMediaInput_ErrorHandling_Test_WrongIPFileName == iTestErrorType)
{
PVPATB_TEST_IS_TRUE(true);
}
else
{
PVPATB_TEST_IS_TRUE(false);
}
if (iFileParser)
{
goto ERROR_CODE;
}
else
{
return false;
}
}
uint32 numStreams = ((PVAviFile*)iFileParser)->GetNumStreams();
iAddAudioMediaTrack = false;
iAddVideoMediaTrack = false;
for (uint32 ii = 0; ii < numStreams; ii++)
{
if (oscl_strstr(((PVAviFile*)iFileParser)->GetStreamMimeType(ii).get_cstr(), "audio"))
{
iAddAudioMediaTrack = true;
}
if (oscl_strstr(((PVAviFile*)iFileParser)->GetStreamMimeType(ii).get_cstr(), "video"))
{
iAddVideoMediaTrack = true;
}
}
}
else if (iMediaInputType == PVMF_MIME_WAVFF)
{
OSCL_TRY(error, iFileParser = OSCL_NEW(PV_Wav_Parser, ()););
if (error || (NULL == iFileParser))
{
return false;
}
if (((PV_Wav_Parser*)iFileParser)->InitWavParser(iInputFileName, &iFileServer) != PVWAVPARSER_OK)
{
goto ERROR_CODE;
}
iAddAudioMediaTrack = true;
iAddVideoMediaTrack = false;
}
{
PVMIOControlComp MIOComp(iMediaInputType, (OsclAny*)iFileParser, 0);
status = MIOComp.CreateMIOInputNode(false, iMediaInputType, iInputFileName);
if (status != PVMFSuccess)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_opencomposestop::CreateTestInputs: Error - CreateMIOInputNode failed"));
if (PVMediaInput_ErrorHandling_Test_WrongFormat == iTestErrorType)
{
PVPATB_TEST_IS_TRUE(true);
}
goto ERROR_CODE;
}
if (PVMediaInput_ErrorHandling_Test_WrongFormat == iTestErrorType)
{
PVPATB_TEST_IS_TRUE(false);
}
iMIOComponent = MIOComp;
if (!AddDataSource())
{
//delete any MIO Comp created.
MIOComp.DeleteInputNode();
goto ERROR_CODE;
}
return true;
}
ERROR_CODE:
{
//remove file parser
if (iMediaInputType == PVMF_MIME_AVIFF)
{
PVAviFile* fileparser = OSCL_STATIC_CAST(PVAviFile*, iFileParser);
PVAviFile::DeleteAviFileParser(fileparser);
fileparser = NULL;
iFileParser = NULL;
}
else if (iMediaInputType == PVMF_MIME_WAVFF)
{
PV_Wav_Parser* fileparser = OSCL_STATIC_CAST(PV_Wav_Parser*, iFileParser);
delete(fileparser);
fileparser = NULL;
iFileParser = NULL;
}
return false;
}
}
////////////////////////////////////////////////////////////////////////////
bool pv_mediainput_async_test_errorhandling::AddDataSource()
{
int32 err = 0;
uint32 noOfNodes = iMIOComponent.iMIONode.size();
OSCL_TRY(err,
for (uint32 ii = 0; ii < noOfNodes; ii++)
{
AddEngineCommand();
//OSCL_TRY(err, iAuthor->AddDataSource(*(iMIOComponent.iMIONode[ii]), (OsclAny*)iAuthor););
iAuthor->AddDataSource(*(iMIOComponent.iMIONode[ii]), (OsclAny*)iAuthor);
}
);
if (err != OSCL_ERR_NONE)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,
(0, "pvauthor_async_test_miscellaneous::AddDataSource: Error - iAuthor->AddDataSource failed. err=0x%x", err));
iMIOComponent.DeleteInputNode();
return false;
}
return true;
}
////////////////////////////////////////////////////////////////////////////
bool pv_mediainput_async_test_errorhandling::ConfigComposer()
{
if (!ConfigOutputFile())
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::ConfigComposer: Error - ConfigOutputFile failed"));
return false;
}
if ((oscl_strstr(iComposerMimeType.get_str(), "mp4")) || (oscl_strstr(iComposerMimeType.get_str(), "3gp")))
{
if (!ConfigMp43gpComposer())
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::ConfigComposer: Error - ConfigMp43gpComposer failed"));
return false;
}
}
return true;
}
////////////////////////////////////////////////////////////////////////////
bool pv_mediainput_async_test_errorhandling::ConfigOutputFile()
{
PvmfFileOutputNodeConfigInterface* clipConfig = OSCL_STATIC_CAST(PvmfFileOutputNodeConfigInterface*, iComposerConfig);
if (!clipConfig)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::ConfigOutputFile: Error - Invalid iComposerConfig"));
return false;
}
if (clipConfig->SetOutputFileName(iOutputFileName) != PVMFSuccess)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::ConfigOutputFile: Error - SetOutputFileName failed"));
return false;
}
return true;
}
////////////////////////////////////////////////////////////////////////////
bool pv_mediainput_async_test_errorhandling::ConfigMp43gpComposer()
{
PVMp4FFCNClipConfigInterface* clipConfig;
clipConfig = OSCL_STATIC_CAST(PVMp4FFCNClipConfigInterface*, iComposerConfig);
if (!clipConfig)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::ConfigMp43gpComposer: Error - iComposerConfig==NULL"));
return false;
}
OSCL_wHeapString<OsclMemAllocator> versionString = _STRLIT("version");
OSCL_wHeapString<OsclMemAllocator> titleString = _STRLIT("title");
OSCL_wHeapString<OsclMemAllocator> authorString = _STRLIT("author");
OSCL_wHeapString<OsclMemAllocator> copyrightString = _STRLIT("copyright");
OSCL_wHeapString<OsclMemAllocator> descriptionString = _STRLIT("description");
OSCL_wHeapString<OsclMemAllocator> ratingString = _STRLIT("rating");
OSCL_wHeapString<OsclMemAllocator> iAlbumTitle = _STRLIT("albumtitle");
uint16 iRecordingYear = 2008;
OSCL_HeapString<OsclMemAllocator> lang_code = "eng";
clipConfig->SetOutputFileName(iOutputFileName);
clipConfig->SetPresentationTimescale(1000);
clipConfig->SetVersion(versionString, lang_code);
clipConfig->SetTitle(titleString, lang_code);
clipConfig->SetAuthor(authorString, lang_code);
clipConfig->SetCopyright(copyrightString, lang_code);
clipConfig->SetDescription(descriptionString, lang_code);
clipConfig->SetRating(ratingString, lang_code);
clipConfig->SetAlbumInfo(iAlbumTitle, lang_code);
clipConfig->SetRecordingYear(iRecordingYear);
return true;
}
////////////////////////////////////////////////////////////////////////////
bool pv_mediainput_async_test_errorhandling::AddMediaTrack()
{
PVMIOControlComp MIOComp;
if (iAddAudioMediaTrack)
{
if (iMediaInputType == PVMF_MIME_AVIFF)
{
Oscl_Vector<uint32, OsclMemAllocator> audioStrNum;
audioStrNum = (iMIOComponent.iPVAviFile)->GetAudioStreamCountList();
if (audioStrNum.size() == 0)
{
return false;
}
iAuthor->AddMediaTrack(*(iMIOComponent.iMIONode[audioStrNum[0]]), iAudioEncoderMimeType,
iComposer, iAudioEncoderConfig, (OsclAny*)iAuthor);
AddEngineCommand();
}
else if (iMediaInputType == PVMF_MIME_WAVFF)
{
PVWAVFileInfo wavFileInfo;
(iMIOComponent.iPVWavFile)->RetrieveFileInfo(wavFileInfo);
iAuthor->AddMediaTrack(*(iMIOComponent.iMIONode[0]), iAudioEncoderMimeType,
iComposer, iAudioEncoderConfig, (OsclAny*)iAuthor);
AddEngineCommand();
}
if (!PVAETestNodeConfig::ConfigureAudioEncoder(iAudioEncoderConfig))
{
return false;
}
}
if (iAddVideoMediaTrack)
{
if (iMediaInputType == PVMF_MIME_AVIFF)
{
Oscl_Vector<uint32, OsclMemAllocator> vidStrNum;
vidStrNum = (iMIOComponent.iPVAviFile)->GetVideoStreamCountList();
if (vidStrNum.size() == 0)
{
return false;
}
iAuthor->AddMediaTrack(*(iMIOComponent.iMIONode[vidStrNum[0]]), iVideoEncoderMimeType,
iComposer, iVideoEncoderConfig, (OsclAny*)iAuthor);
AddEngineCommand();
}
else if (iMediaInputType == PVMF_MIME_WAVFF)
{
return false;
}
}
return true;
}
////////////////////////////////////////////////////////////////////////////
bool pv_mediainput_async_test_errorhandling::ConfigureVideoEncoder()
{
PVMp4H263EncExtensionInterface* config;
config = OSCL_STATIC_CAST(PVMp4H263EncExtensionInterface*, iVideoEncoderConfig);
if (!config)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_DEBUG,
(0, "pv_mediainput_async_test_errorhandling::ConfigureVideoEncoder: No configuration needed"));
return true;
}
uint32 width = 0;
uint32 height = 0;
OsclFloat frameRate = 0;
uint32 frameInterval = 0;
if (iMediaInputType == PVMF_MIME_AVIFF)
{
Oscl_Vector<uint32, OsclMemAllocator> vidStrNum =
(iMIOComponent.iPVAviFile)->GetVideoStreamCountList();
width = (iMIOComponent.iPVAviFile)->GetWidth(vidStrNum[0]);
bool orient = false;
height = (iMIOComponent.iPVAviFile)->GetHeight(orient, vidStrNum[0]);
frameRate = (iMIOComponent.iPVAviFile)->GetFrameRate(vidStrNum[0]);
frameInterval = (iMIOComponent.iPVAviFile)->GetFrameDuration();
}
config->SetNumLayers(KNumLayers);
config->SetOutputBitRate(0, KVideoBitrate);
config->SetOutputFrameSize(0, width , height);
config->SetOutputFrameRate(0, frameRate);
config->SetIFrameInterval(KVideoIFrameInterval);
config->SetSceneDetection(true);
return true;
}
////////////////////////////////////////////////////////////////////////////
void pv_mediainput_async_test_errorhandling::ResetAuthorConfig()
{
if (iComposerConfig)
{
iComposerConfig->removeRef();
iComposerConfig = NULL;
}
if (iAudioEncoderConfig)
{
iAudioEncoderConfig->removeRef();
iAudioEncoderConfig = NULL;
}
if (iVideoEncoderConfig)
{
iVideoEncoderConfig->removeRef();
iVideoEncoderConfig = NULL;
}
}
////////////////////////////////////////////////////////////////////////////
void pv_mediainput_async_test_errorhandling::Cleanup()
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_DEBUG, (0, "pv_mediainput_async_test_errorhandling::Cleanup"));
iComposer = NULL;
ResetAuthorConfig();
if (iAuthor)
{
PVAuthorEngineFactory::DeleteAuthor(iAuthor);
iAuthor = NULL;
}
// iMIOComponent.DeleteInputNode();
iOutputFileName = NULL;
iFileServer.Close();
}
////////////////////////////////////////////////////////////////////////////
void pv_mediainput_async_test_errorhandling::Run()
{
if (IsEngineCmdPending())
{
return;
}
iCheckState = iState;
switch (iState)
{
case PVAE_CMD_CREATE:
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_DEBUG,
(0, "******pv_mediainput_async_test_errorhandling::iTestCaseNum:%d******", iTestCaseNum));
iAuthor = PVAuthorEngineFactory::CreateAuthor(this, this, this);
if (!iAuthor)
{
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_CLEANUPANDCOMPLETE;
RunIfNotReady();
}
else
{
iState = PVAE_CMD_OPEN;
RunIfNotReady();
}
}
break;
case PVAE_CMD_OPEN:
{
iAuthor->Open((OsclAny*)iAuthor);
}
break;
case PVAE_CMD_ADD_DATA_SOURCE:
{
bool aStatus = CreateTestInputs();
if (aStatus == 0) //Failed while creating test input
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::CreateTestInputs: Error - failed"));
iState = PVAE_CMD_CLEANUPANDCOMPLETE;
RunIfNotReady();
}
}
break;
case PVAE_CMD_SELECT_COMPOSER:
{
iAuthor->SelectComposer(iComposerMimeType, iComposerConfig,
(OsclAny*)iAuthor);
}
break;
case PVAE_CMD_ADD_MEDIA_TRACK:
{
if (!AddMediaTrack())
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_opencomposestop::AddMediaTrack Error - No track added"));
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_REMOVE_DATA_SOURCE;
RunIfNotReady();
}
}
break;
case PVAE_CMD_INIT:
{
iAuthor->Init((OsclAny*)iAuthor);
}
break;
case PVAE_CMD_QUERY_INTERFACE1:
iAuthor->QueryInterface(PVMI_CAPABILITY_AND_CONFIG_PVUUID,
(PVInterface*&)iAuthorCapConfigIF,
(OsclAny*)iAuthor);
break;
case PVAE_CMD_CAPCONFIG_SYNC1:
CapConfigSync1();
iState = PVAE_CMD_START;
RunIfNotReady();
break;
case PVAE_CMD_QUERY_INTERFACE_COMP:
iAuthor->QueryInterface(PvmfComposerSizeAndDurationUuid,
iOutputSizeAndDurationConfig, (OsclAny*)iAuthor);
break;
case PVAE_CMD_START:
{
iAuthor->Start();
}
break;
case PVAE_CMD_STOP:
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::Run: Command Stop"));
fprintf(iFile, "Error: Recording timeout, stop engine please wait *******\n");
iAuthor->Stop((OsclAny*)iAuthor);
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::Run: Error: Recording timeout, stop engine please wait *******\n"));
}
break;
case PVAE_CMD_RESET:
{
ResetAuthorConfig();
if (iAuthor->GetPVAuthorState() != PVAE_STATE_IDLE)
{
iAuthor->Reset((OsclAny*)iAuthor);
}
}
break;
case PVAE_CMD_REMOVE_DATA_SOURCE:
{
for (uint32 ii = 0; ii < iMIOComponent.iMIONode.size(); ii++)
{
iAuthor->RemoveDataSource(*(iMIOComponent.iMIONode[ii]), (OsclAny*)iAuthor);
AddEngineCommand();
}
}
break;
case PVAE_CMD_CLOSE:
{
iAuthor->Close((OsclAny*)iAuthor);
}
break;
case PVAE_CMD_PAUSE:
{
iAuthor->Pause((OsclAny*)iAuthor);
}
break;
case PVAE_CMD_RESUME:
{
iAuthor->Resume((OsclAny*)iAuthor);
}
break;
case PVAE_CMD_CLEANUPANDCOMPLETE:
{
Cleanup();
iObserver->CompleteTest(*iTestCase);
}
break;
case PVAE_CMD_ADD_DATA_SINK:
case PVAE_CMD_REMOVE_DATA_SINK:
break;
case PVAE_CMD_RECORDING:
{
iState = PVAE_CMD_RESET;
RunIfNotReady(iTestDuration);
}
break;
default:
break;
} //end switch
}
////////////////////////////////////////////////////////////////////////////
void pv_mediainput_async_test_errorhandling::CommandCompleted(const PVCmdResponse& aResponse)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_STACK_TRACE,
(0, "pv_mediainput_async_test_errorhandling::CommandCompleted iState:%d", iState));
if (aResponse.GetCmdStatus() != PVMFSuccess)
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_STACK_TRACE,
(0, "pv_mediainput_async_test_errorhandling::CommandCompleted iState:%d FAILED", iState));
}
/* This check is done in order to verify that the response from the engine
is for the current command or for any other previously issued asynchronous command
*/
if (iCheckState != iState) // Current command and the response state doesn't match
{
// fprintf(iFile, "ERROR: The current state and the response's state doesn't match *******\n");
return;
}
switch (iState)
{
case PVAE_CMD_OPEN:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
iState = PVAE_CMD_ADD_DATA_SOURCE;
RunIfNotReady();
}
else
{
// Open failed
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_ADD_DATA_SOURCE:
{
if (EngineCmdComplete())
{
iState = PVAE_CMD_SELECT_COMPOSER;
}
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
RunIfNotReady();
}
else
{
// AddDataSource failed
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_SELECT_COMPOSER:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
iComposer = aResponse.GetResponseData();
if (!ConfigComposer())
{
PVLOGGER_LOGMSG(PVLOGMSG_INST_REL, iLogger, PVLOGMSG_ERR,
(0, "pv_mediainput_async_test_errorhandling::CommandCompleted: Error - ConfigComposer failed"));
PVPATB_TEST_IS_TRUE(true);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
else
{
iState = PVAE_CMD_ADD_MEDIA_TRACK;
RunIfNotReady();
}
}
else
{
// SelectComposer failed
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_ADD_MEDIA_TRACK:
{
if (EngineCmdComplete())
{
if (iAddVideoMediaTrack)
{
ConfigureVideoEncoder();
}
iState = PVAE_CMD_INIT;
}
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
RunIfNotReady();
}
else
{
// AddMediaTrack failed
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_INIT:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
iState = PVAE_CMD_QUERY_INTERFACE_COMP;
RunIfNotReady();
}
else
{
// Init failed
PVPATB_TEST_IS_TRUE(true);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_QUERY_INTERFACE_COMP:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
ConfigMp4Composer();
iState = PVAE_CMD_QUERY_INTERFACE1;
RunIfNotReady();
}
else
{
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_QUERY_INTERFACE1:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
iState = PVAE_CMD_CAPCONFIG_SYNC1;
RunIfNotReady();
}
else
{
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_START:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
if (iPauseResumeEnable)
{
iState = PVAE_CMD_PAUSE;
RunIfNotReady();
}
else
{
iState = PVAE_CMD_RECORDING;
RunIfNotReady();
}
}
else
{
// Start failed
if (ErrorHandling_MediaInputNodeStopFailed != iTestErrorType)
{
PVPATB_TEST_IS_TRUE(true);
}
else
{
PVPATB_TEST_IS_TRUE(false);
}
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_PAUSE:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
iState = PVAE_CMD_RESUME;
/* Stay paused for 10 seconds */
RunIfNotReady(10*1000*1000);
}
else
{
// Pause failed
if ((ErrorHandling_MediaInputNode_StateFailure_EPause_SendMIORequest == iTestErrorType) ||
(ErrorHandling_MediaInputNode_Node_Cmd_Pause == iTestErrorType) ||
(ErrorHandling_MP4Composer_Node_Cmd_Pause == iTestErrorType) ||
(ErrorHandling_VideoEncodeNode_Node_Cmd_Pause == iTestErrorType) ||
(ErrorHandling_AudioEncodeNode_Node_Cmd_Pause == iTestErrorType) ||
(ErrorHandling_AVCEncodeNode_Node_Cmd_Pause == iTestErrorType))
{
PVPATB_TEST_IS_TRUE(true);
}
else
{
//Pause failed
PVPATB_TEST_IS_TRUE(false);
}
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_RESUME:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
iState = PVAE_CMD_STOP;
//Run for another 10 sec before stopping
RunIfNotReady(10*1000*1000);
}
else
{
//Resume failed
Cancel();
PVPATB_TEST_IS_TRUE(false);
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_STOP:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
iOutputFileName = NULL;
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
else
{
// Stop failed
if (ErrorHandling_MediaInputNodeStopFailed == iTestErrorType)
{
PVPATB_TEST_IS_TRUE(true);
}
else
{
PVPATB_TEST_IS_TRUE(false);
}
iState = PVAE_CMD_RESET;
RunIfNotReady();
}
}
break;
case PVAE_CMD_RESET:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
if ((iMIOComponent.iMediaInput.size() == 0) || (iMIOComponent.iMIONode.size() == 0))
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
PVPATB_TEST_IS_TRUE(true);
}
else
{
PVPATB_TEST_IS_TRUE(false);
}
//Since there are no MIO Components/Nodes, we end here
//No need to call RemoveDataSource
iObserver->CompleteTest(*iTestCase);
break;
}
iState = PVAE_CMD_REMOVE_DATA_SOURCE;
RunIfNotReady();
}
else
{
if ((ErrorHandling_VideoEncodeNode_Node_Cmd_Stop == iTestErrorType) ||
(ErrorHandling_AudioEncodeNode_Node_Cmd_Stop == iTestErrorType) ||
(ErrorHandling_AVCEncodeNode_Node_Cmd_Stop == iTestErrorType) ||
(ErrorHandling_MediaInputNode_Node_Cmd_Stop == iTestErrorType) ||
(ErrorHandling_MediaInputNodeStopFailed == iTestErrorType))
{
PVPATB_TEST_IS_TRUE(true);
}
else
{
// Reset failed
PVPATB_TEST_IS_TRUE(false);
OSCL_ASSERT("ERROR -- Response failure for CMD_RESET");
iState = PVAE_CMD_REMOVE_DATA_SOURCE;
RunIfNotReady();
}
}
}
break;
case PVAE_CMD_REMOVE_DATA_SOURCE:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
if (EngineCmdComplete())
{
RemoveMIOComp();
iState = PVAE_CMD_CLOSE;
RunIfNotReady();
}
else
{
return; //wait for completion of all RemoveDataSource calls.
}
}
else
{
// RemoveDataSource failed
PVPATB_TEST_IS_TRUE(false);
RemoveMIOComp();
iObserver->CompleteTest(*iTestCase);
}
}
break;
case PVAE_CMD_CLOSE:
{
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
PVPATB_TEST_IS_TRUE(true);
}
else
{
PVPATB_TEST_IS_TRUE(false);
}
iObserver->CompleteTest(*iTestCase);
}
break;
default:
{
// Testing error if this is reached
PVPATB_TEST_IS_TRUE(false);
iObserver->CompleteTest(*iTestCase);
}
break;
} //end switch
}
void pv_mediainput_async_test_errorhandling::RemoveMIOComp()
{
iOutputFileName = NULL;
iMIOComponent.DeleteInputNode();
if (iMediaInputType == PVMF_MIME_AVIFF)
{
PVAviFile* fileparser = OSCL_STATIC_CAST(PVAviFile*, iFileParser);
PVAviFile::DeleteAviFileParser(fileparser);
fileparser = NULL;
iFileParser = NULL;
}
else if (iMediaInputType == PVMF_MIME_WAVFF)
{
PV_Wav_Parser* fileparser = OSCL_STATIC_CAST(PV_Wav_Parser*, iFileParser);
delete(fileparser);
fileparser = NULL;
iFileParser = NULL;
}
iFileParser = NULL;
}
bool pv_mediainput_async_test_errorhandling::CapConfigSync1()
{
// set the mime strings here
// capabilty and configuration feature implemented here
// set the config parameters using MIME strings here
OSCL_StackString<64> paramkey;
// KVP array
PvmiKvp paramkvp;
paramkvp.value.bool_value = true;
key_type* key = NULL;
key = (key_type*)oscl_malloc(sizeof(key_type));
if (ErrorHandling_VideoInitFailed == iTestErrorType) //To fail VideoEncNode Initialize
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error_start_init;valtype=bool");
}
else if (ErrorHandling_ComposerAddFragFailed == iTestErrorType) //To fail Mp4ComposerNode on AddMemFragToTrack
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error_start_addmemfrag;valtype=bool");
}
else if (ErrorHandling_ComposerAddTrackFailed == iTestErrorType) //To fail Mp4ComposerNode on AddTrack
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error_start_addtrack;valtype=bool");
}
else if (ErrorHandling_MediaInputNodeStartFailed == iTestErrorType) //To fail MediaInputNode on Start
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error_adddatasource_start;valtype=bool");
}
else if (ErrorHandling_MediaInputNodeStopFailed == iTestErrorType) //To fail MediaInputNode on Stop
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error_adddatasource_stop;valtype=bool");
}
else if (ErrorHandling_AudioInitFailed == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/error_start_init;valtype=bool");
}
else if ((ErrorHandling_AVCVideoEncodeFailed == iTestErrorType)) //To fail AVCEncNode on Encode
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-encode;mode=frames;valtype=uint32");
paramkvp.value.uint32_value = 1;
}
else if (ErrorHandling_VideoEncodeFailed == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-encode;mode=frames;valtype=uint32");
paramkvp.value.uint32_value = 1;
}
else if (ErrorHandling_AudioEncodeFailed == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/error-encode;mode=frames;valtype=uint32");
paramkvp.value.uint32_value = 1;
}
else if ((ErrorHandling_AVCVideoEncode5FramesFailed == iTestErrorType)) //To fail AVCEncNode on Encode 5 frames
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-encode;mode=frames;valtype=uint32");
paramkvp.value.uint32_value = 5;
}
else if (ErrorHandling_VideoEncode5FramesFailed == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-encode;mode=frames;valtype=uint32");
paramkvp.value.uint32_value = 5;
}
else if (ErrorHandling_MediaInputNode_NoMemBuffer == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error_no_memorybuffer_avaliable;valtype=bool");
}
else if (ErrorHandling_MediaInputNode_Out_Queue_busy == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error_out_queue_busy;valtype=bool");
}
else if (ErrorHandling_MediaInputNode_large_time_stamp == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-time-stamp;valtype=ksv");
uint32 numStreams = ((PVAviFile*)iFileParser)->GetNumStreams();
key->mode = 1;
key->duration = 0;
key->track_no = numStreams - 1;
paramkvp.value.key_specific_value = OSCL_DYNAMIC_CAST(void*, key);
}
else if (ErrorHandling_MediaInputNode_wrong_time_stamp_after_duration == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-time-stamp;valtype=ksv");
uint32 numStreams = ((PVAviFile*)iFileParser)->GetNumStreams();
key->mode = 2;
key->duration = 60;
key->track_no = numStreams - 1;
paramkvp.value.key_specific_value = OSCL_DYNAMIC_CAST(void*, key);
}
else if (ErrorHandling_MediaInputNode_zero_time_stamp == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-time-stamp;valtype=ksv");
uint32 numStreams = ((PVAviFile*)iFileParser)->GetNumStreams();
key->mode = 3;
key->duration = 0;
key->track_no = numStreams - 1;
paramkvp.value.key_specific_value = OSCL_DYNAMIC_CAST(void*, key);
}
else if (ErrorHandling_MediaInputNode_StateFailure_EPause_SendMIORequest == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-sendmiorequest;valtype=uint32");
paramkvp.value.uint32_value = 2;
iPauseResumeEnable = true;
}
else if (ErrorHandling_MediaInputNode_StateFailure_CancelMIORequest == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-cancelmiorequest;valtype=bool");
}
else if (ErrorHandling_MediaInputNode_Corrupt_Video_InputData == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-corruptinputdata;index=0;valtype=uint32");
paramkvp.value.uint32_value = 100;
}
else if (ErrorHandling_MediaInputNode_Corrupt_Audio_InputData == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-corruptinputdata;index=1;valtype=uint32");
paramkvp.value.uint32_value = 100;
}
else if (ErrorHandling_MediaInputNode_Node_Cmd_Start == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 2;
}
else if (ErrorHandling_MediaInputNode_Node_Cmd_Stop == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 3;
}
else if (ErrorHandling_MediaInputNode_Node_Cmd_Flush == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 4;
}
else if (ErrorHandling_MediaInputNode_Node_Cmd_Pause == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 5;
iPauseResumeEnable = true;
}
else if (ErrorHandling_MediaInputNode_Node_Cmd_ReleasePort == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 7;
}
else if (ErrorHandling_MediaInputNode_DataPath_Stall == iTestErrorType)
{
uint32 numStreams = ((PVAviFile*)iFileParser)->GetNumStreams();
paramkey = _STRLIT_CHAR("x-pvmf/datasource/error-data-path-stall;valtype=uint32");
if (numStreams > 0)
{
paramkvp.value.uint32_value = numStreams - 1;
}
else
{
paramkvp.value.uint32_value = numStreams;
}
}
else if (ErrorHandling_MP4Composer_AddTrack_PVMF_AMR_IETF == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-addtrack;valtype=char*");
OSCL_HeapString<OsclMemAllocator> mode1 = "PVMF_AMR_IETF";
paramkvp.value.pChar_value = mode1.get_str();
}
else if (ErrorHandling_MP4Composer_AddTrack_PVMF_3GPP_TIMEDTEXT == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-addtrack;valtype=char*");
OSCL_HeapString<OsclMemAllocator> mode2 = "PVMF_3GPP_TIMEDTEXT";
paramkvp.value.pChar_value = mode2.get_str();
}
else if (ErrorHandling_MP4Composer_AddTrack_PVMF_M4V == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-addtrack;valtype=char*");
OSCL_HeapString<OsclMemAllocator> mode3 = "PVMF_M4V";
paramkvp.value.pChar_value = mode3.get_str();
}
else if (ErrorHandling_MP4Composer_AddTrack_PVMF_H263 == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-addtrack;valtype=char*");
OSCL_HeapString<OsclMemAllocator> mode4 = "PVMF_H263";
paramkvp.value.pChar_value = mode4.get_str();
}
else if (ErrorHandling_MP4Composer_AddTrack_PVMF_H264_MP4 == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-addtrack;valtype=char*");
OSCL_HeapString<OsclMemAllocator> mode5 = "PVMF_H264_MP4";
paramkvp.value.pChar_value = mode5.get_str();
}
else if (ErrorHandling_MP4Composer_Node_Cmd_Start == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 2;
}
else if (ErrorHandling_MP4Composer_Node_Cmd_Stop == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 3;
}
else if (ErrorHandling_MP4Composer_Node_Cmd_Flush == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 4;
}
else if (ErrorHandling_MP4Composer_Node_Cmd_Pause == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 5;
iPauseResumeEnable = true;
}
else if (ErrorHandling_MP4Composer_Node_Cmd_ReleasePort == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 7;
}
else if (ErrorHandling_MP4Composer_Create_FileParser == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-create-composer;valtype=bool");
}
else if (ErrorHandling_MP4Composer_RenderToFile == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-render-to-file;valtype=bool");
}
else if (ErrorHandling_MP4Composer_FailAfter_FileSize == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-addsample;mode=filesize;valtype=uint32"); //shorten the key to fit in buffer
paramkvp.value.uint32_value = 5000;
}
else if (ErrorHandling_MP4Composer_FailAfter_Duration == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/error-addsample;mode=duration;valtype=uint32");
paramkvp.value.uint32_value = 500;
}
else if (ErrorHandling_MP4Composer_DataPathStall == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/composer/mp4/data-path-stall;valtype=uint32");
paramkvp.value.uint32_value = 1;
}
else if (ErrorHandling_VideoEncodeNode_Node_Cmd_Start == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 2;
}
else if (ErrorHandling_VideoEncodeNode_Node_Cmd_Stop == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 3;
}
else if (ErrorHandling_VideoEncodeNode_Node_Cmd_Flush == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 4;
}
else if (ErrorHandling_VideoEncodeNode_Node_Cmd_Pause == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 5;
iPauseResumeEnable = true;
}
else if (ErrorHandling_VideoEncodeNode_Node_Cmd_ReleasePort == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32;");
paramkvp.value.uint32_value = 7;
}
else if (ErrorHandling_VideoEncodeNode_ConfigHeader == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-config-header;valtype=bool");
}
else if (ErrorHandling_VideoEncodeNode_DataPathStall_Before_ProcessingData == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/data-path-stall;valtype=uint32");
paramkvp.value.uint32_value = 1;
}
else if (ErrorHandling_VideoEncodeNode_DataPathStall_After_ProcessingData == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/data-path-stall;valtype=uint32");
paramkvp.value.uint32_value = 2;
}
else if (ErrorHandling_VideoEncodeNode_FailEncode_AfterDuration == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-encode;mode=duration;valtype=uint32");
paramkvp.value.uint32_value = 300;
}
else if (ErrorHandling_AudioEncodeNode_Node_Cmd_Start == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 2;
}
else if (ErrorHandling_AudioEncodeNode_Node_Cmd_Stop == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 3;
}
else if (ErrorHandling_AudioEncodeNode_Node_Cmd_Flush == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 4;
}
else if (ErrorHandling_AudioEncodeNode_Node_Cmd_Pause == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 5;
iPauseResumeEnable = true;
}
else if (ErrorHandling_AudioEncodeNode_Node_Cmd_ReleasePort == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 7;
}
else if (ErrorHandling_AudioEncodeNode_FailEncode_AfterDuration == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/error-encode;mode=duration;valtype=uint32");
paramkvp.value.uint32_value = 700;
}
else if (ErrorHandling_AudioEncodeNode_DataPathStall_Before_ProcessingData == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/data-path-stall;valtype=uint32");
paramkvp.value.uint32_value = 1;
}
else if (ErrorHandling_AudioEncodeNode_DataPathStall_After_ProcessingData == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/audio/data-path-stall;valtype=uint32");
paramkvp.value.uint32_value = 2;
}
else if (ErrorHandling_AVCEncodeNode_Node_Cmd_Start == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 2;
}
else if (ErrorHandling_AVCEncodeNode_Node_Cmd_Stop == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 3;
}
else if (ErrorHandling_AVCEncodeNode_Node_Cmd_Flush == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 4;
}
else if (ErrorHandling_AVCEncodeNode_Node_Cmd_Pause == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 5;
iPauseResumeEnable = true;
}
else if (ErrorHandling_AVCEncodeNode_Node_Cmd_ReleasePort == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-node-cmd;index=2;valtype=uint32");
paramkvp.value.uint32_value = 7;
}
else if (ErrorHandling_AVCEncodeNode_ConfigHeader == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-config-header;valtype=bool");
}
else if (ErrorHandling_AVCEncodeNode_DataPathStall_Before_ProcessingData == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/data-path-stall;valtype=uint32");
paramkvp.value.uint32_value = 1;
}
else if (ErrorHandling_AVCEncodeNode_DataPathStall_After_ProcessingData == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/data-path-stall;valtype=uint32");
paramkvp.value.uint32_value = 2;
}
else if (ErrorHandling_AVCEncodeNode_FailEncode_AfterDuration == iTestErrorType)
{
paramkey = _STRLIT_CHAR("x-pvmf/encoder/video/error-encode;mode=duration;valtype=uint32");
paramkvp.value.uint32_value = 100;
}
paramkvp.key = paramkey.get_str();
// set the value in node using SetParameterSync f(n) here
iAuthorCapConfigIF->setParametersSync(NULL, &paramkvp, 1, iErrorKVP);
oscl_free(key);
return true;
}
void pv_mediainput_async_test_errorhandling::ConfigMp4Composer()
{
PvmfComposerSizeAndDurationInterface* config =
OSCL_REINTERPRET_CAST(PvmfComposerSizeAndDurationInterface*, iOutputSizeAndDurationConfig);
config->SetFileSizeProgressReport(true, KFileSizeProgressFreq);
}