Hello List!
I'd like to ask for help for trouble-shooting my problem __;
I am now trying to test Opencore with it's Unit Test Apps.
Among hundreds of those tests, I use simple play-pause-stop test.
What I actually need to test is the
'PVPlayerTrackSelectionInterface'.
So I added some additional code into the simple play-pause-stop test.
But with my additional test code, I got 'Segmentation fault' message
when the test app finishes.
The exact message is as like below:
Segmentation fault
make: *** [run_pe_test] Error 139
I am posting my test code and the output messages here.
Please help me ^^;
================= THE CONSOLE =================
r...@hum-desktop:~/android-x86/external/opencore/build_config/
opencore_dynamic# make run_pe_test TEST_ARGS="-test 10 10 -logfile"
/root/android-x86/external/opencore/tools_v2/build/make/library.mk:
55:
warning: overriding commands for target `/root/android-x86/external/
opencore/build_config/opencore_dynamic/build/installed_include/
getactualaacconfig.h'
/root/android-x86/external/opencore/tools_v2/build/make/library.mk:
55:
warning: ignoring old commands for target `/root/android-x86/
external/
opencore/build_config/opencore_dynamic/build/installed_include/
getactualaacconfig.h'
[make] setting up for testing...
[make] setting up for linux testing...
[make] running...
Version: CORE_8.000.1.1_RC4 generated on 20091101
Test Program for pvPlayer engine class.
Test case range 10 to 10
Compressed output Video(No) Audio(No)
Log level 8; Log node 0 Log Text 1 Log Mem 0
Starting Test 10: Play-Pause-Stop
Input File: test.mp4
Run::STATE_QUERYINTERFACE_JJH::
iCurrentCmdId = 4
CommandCompleted::STATE_QUERYINTERFACE_JJH::
NumTracks = 2
TrackID = 101
TrackID = 201
STATE_CLEANUPANDCOMPLETE::
STATE_CLEANUPANDCOMPLETE::5
Segmentation fault
make: *** [run_pe_test] Error 139
r...@hum-desktop:~/android-x86/external/opencore/build_config/
opencore_dynamic#
I added additional test code with '#ifdef JJH_TEST'.
Please note those code sections.
==== THE HEADER test_pv_player_engine_testset1.h ====
#define JJH_TEST
#ifdef JJH_TEST
#include "pv_player_track_selection_interface.h"
#endif //JJH_TEST
/*!
* A test case to test stop when playback is paused
* - Data Source: test.mp4
* - Data Sink(s): Video[FileOutputNode-
test_player_playpausestop_vidoe.dat]\n
* Audio[FileOutputNode-
test_player_playpausestop_audio.dat]
* - Sequence:
* -# CreatePlayer()
* -# AddDataSource()
* -# Init()
* -# AddDataSink() (video)
* -# AddDataSink() (audio)
* -# Prepare()
* -# Start()
* -# WAIT 20 sec.
* -# Pause()
* -# Stop()
* -# RemoveDataSink() (video)
* -# RemoveDataSink() (audio)
* -# Reset()
* -# RemoveDataSource()
* -# DeletePlayer()
*
*/
class pvplayer_async_test_playpausestop : public
pvplayer_async_test_base
{
public:
pvplayer_async_test_playpausestop(PVPlayerAsyncTestParam
aTestParam):
pvplayer_async_test_base(aTestParam)
, iPlayer(NULL)
#ifdef JJH_TEST
, iTrackSelection(NULL)
#endif //JJH_TEST
, iDataSource(NULL)
, iDataSinkVideo(NULL)
, iDataSinkAudio(NULL)
, iIONodeVideo(NULL)
, iIONodeAudio(NULL)
, iMIOFileOutVideo(NULL)
, iMIOFileOutAudio(NULL)
, iCurrentCmdId(0)
{
iTestCaseName = _STRLIT_CHAR("Play-Pause-Stop");
}
~pvplayer_async_test_playpausestop() {}
void StartTest();
void Run();
void CommandCompleted(const PVCmdResponse& aResponse);
void HandleErrorEvent(const PVAsyncErrorEvent& aEvent);
void HandleInformationalEvent(const
PVAsyncInformationalEvent&
aEvent);
enum PVTestState
{
STATE_CREATE,
#ifdef JJH_TEST
STATE_QUERYINTERFACE_JJH,
#endif //JJH_TEST
STATE_ADDDATASOURCE,
STATE_INIT,
STATE_ADDDATASINK_VIDEO,
STATE_ADDDATASINK_AUDIO,
STATE_PREPARE,
STATE_START,
STATE_PAUSE,
STATE_STOP,
STATE_REMOVEDATASINK_VIDEO,
STATE_REMOVEDATASINK_AUDIO,
STATE_RESET,
STATE_REMOVEDATASOURCE,
STATE_CLEANUPANDCOMPLETE
};
PVTestState iState;
PVPlayerInterface* iPlayer;
#ifdef JJH_TEST
PVPlayerTrackSelectionInterface* iTrackSelection;
#endif //JJH_TEST
PVPlayerDataSourceURL* iDataSource;
PVPlayerDataSink* iDataSinkVideo;
PVPlayerDataSink* iDataSinkAudio;
PVMFNodeInterface* iIONodeVideo;
PVMFNodeInterface* iIONodeAudio;
PvmiMIOControl* iMIOFileOutVideo;
PvmiMIOControl* iMIOFileOutAudio;
PVCommandId iCurrentCmdId;
};
==== THE SRCCODE test_pv_player_engine_testset1.cpp ====
//
// pvplayer_async_test_playpausestop section
//
void pvplayer_async_test_playpausestop::StartTest()
{
AddToScheduler();
iState = STATE_CREATE;
RunIfNotReady();
}
void pvplayer_async_test_playpausestop::Run()
{
int error = 0;
switch (iState)
{
case STATE_CREATE:
........
break;
case STATE_ADDDATASOURCE:
.......
break;
case STATE_INIT:
.......
break;
case STATE_ADDDATASINK_VIDEO:
.......
break;
case STATE_ADDDATASINK_AUDIO:
......
break;
#ifdef JJH_TEST
case STATE_QUERYINTERFACE_JJH:
{
fprintf(stdout, "Run::STATE_QUERYINTERFACE_JJH::\n");
PVUuid trackselectionifuuid =
PVPlayerTrackSelectionInterfaceUuid;
OSCL_TRY(error, iCurrentCmdId = iPlayer-
>QueryInterface(trackselectionifuuid, (PVInterface*&)iTrackSelection,
(OsclAny*)NULL));
OSCL_FIRST_CATCH_ANY(error, PVPATB_TEST_IS_TRUE(false);
iState = STATE_CLEANUPANDCOMPLETE; RunIfNotReady());
fprintf(stdout, "iCurrentCmdId = %d\n", iCurrentCmdId);
}
break;
#endif //JJH_TEST
case STATE_PREPARE:
......
break;
case STATE_START:
......
break;
case STATE_PAUSE:
......
break;
case STATE_STOP:
......
break;
case STATE_REMOVEDATASINK_VIDEO:
......
break;
case STATE_REMOVEDATASINK_AUDIO:
......
break;
case STATE_RESET:
......
break;
case STATE_REMOVEDATASOURCE:
......
break;
case STATE_CLEANUPANDCOMPLETE:
{
#ifdef JJH_TEST
fprintf(stdout, "STATE_CLEANUPANDCOMPLETE::\n");
#endif //JJH_TEST
PVPATB_TEST_IS_TRUE(PVPlayerFactory::DeletePlayer(iPlayer));
iPlayer = NULL;
delete iDataSource;
iDataSource = NULL;
delete iDataSinkVideo;
iDataSinkVideo = NULL;
PVMediaOutputNodeFactory::DeleteMediaOutputNode(iIONodeVideo);
iIONodeVideo = NULL;
iMioFactory->DestroyVideoOutput(iMIOFileOutVideo);
iMIOFileOutVideo = NULL;
delete iDataSinkAudio;
iDataSinkAudio = NULL;
PVMediaOutputNodeFactory::DeleteMediaOutputNode(iIONodeAudio);
iIONodeAudio = NULL;
iMioFactory->DestroyAudioOutput(iMIOFileOutAudio);
iMIOFileOutAudio = NULL;
#ifdef JJH_TEST
fprintf(stdout, "STATE_CLEANUPANDCOMPLETE::5\n");
#endif //JJH_TEST
TestCompleted();
#ifdef JJH_TEST
fprintf(stdout, "STATE_CLEANUPANDCOMPLETE::6\n");
#endif //JJH_TEST
}
break;
default:
break;
}
}
void pvplayer_async_test_playpausestop::CommandCompleted(const
PVCmdResponse& aResponse)
{
......
switch (iState)
{
case STATE_ADDDATASOURCE:
......
break;
case STATE_INIT:
......
break;
case STATE_ADDDATASINK_VIDEO:
......
break;
case STATE_ADDDATASINK_AUDIO:
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
#ifndef JJH_TEST
iState = STATE_PREPARE;
#else
iState = STATE_QUERYINTERFACE_JJH;
#endif //JJH_TEST
RunIfNotReady();
}
else
......
break;
#ifdef JJH_TEST
case STATE_QUERYINTERFACE_JJH:
fprintf(stdout,
"CommandCompleted::STATE_QUERYINTERFACE_JJH::\n");
if (aResponse.GetCmdStatus() == PVMFSuccess)
{
PVMFMediaPresentationInfo aList;
PVMFTrackInfo* pTrackInfo;
iTrackSelection->GetCompleteList(aList);
uint32 uNumTracks = aList.getNumTracks();
fprintf(stdout, "NumTracks = %d\n", uNumTracks);
for ( uint32 idx = 0 ; idx < uNumTracks ; ++idx )
{
pTrackInfo = aList.getTrackInfo( idx );
fprintf(stdout, "TrackID = %d\n", pTrackInfo-
>getTrackID());
}
iTrackSelection->ReleaseCompleteList(aList);
iState = STATE_PREPARE;
RunIfNotReady();
}
else
{
// QueryInterface failed
PVPATB_TEST_IS_TRUE(false);
iState = STATE_CLEANUPANDCOMPLETE;
RunIfNotReady();
}
break;
#endif //JJH_TEST
case STATE_PREPARE:
......
break;
case STATE_START:
......
break;
case STATE_PAUSE:
......
break;
case STATE_STOP:
......
break;
case STATE_REMOVEDATASINK_VIDEO:
......
break;
case STATE_REMOVEDATASINK_AUDIO:
......
break;
case STATE_RESET:
......
break;
case STATE_REMOVEDATASOURCE:
......
break;
default:
......
break;
}
}
void pvplayer_async_test_playpausestop::HandleErrorEvent(const
PVAsyncErrorEvent& aEvent)
{
......
}
void
pvplayer_async_test_playpausestop::HandleInformationalEvent(const
PVAsyncInformationalEvent& aEvent)
{
......
--
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting