aboutsummaryrefslogtreecommitdiff
path: root/engines/player/test
diff options
context:
space:
mode:
authorPacketVideo CM <engbuild@pv.com>2010-02-11 18:47:21 -0800
committerPacketVideo CM <engbuild@pv.com>2010-02-11 18:47:21 -0800
commit44eabfb68b715f97dcbba0c0d4993557519cd1f3 (patch)
tree4c14e3dd0d210fdea2e592b13b6345382a6ba93d /engines/player/test
parentfd60d847cfb8a1f5913ff926a20d277e0139a5d2 (diff)
downloadopencore-44eabfb68b715f97dcbba0c0d4993557519cd1f3.tar.gz
RIO-7261: Gapless and playlist support for MP4
Diffstat (limited to 'engines/player/test')
-rw-r--r--engines/player/test/src/test_pv_player_engine.cpp3
-rw-r--r--engines/player/test/src/test_pv_player_engine_testset_playlist.cpp179
-rw-r--r--engines/player/test/src/test_pv_player_engine_testset_playlist.h14
3 files changed, 192 insertions, 4 deletions
diff --git a/engines/player/test/src/test_pv_player_engine.cpp b/engines/player/test/src/test_pv_player_engine.cpp
index 06d71e833..f611b266f 100644
--- a/engines/player/test/src/test_pv_player_engine.cpp
+++ b/engines/player/test/src/test_pv_player_engine.cpp
@@ -3802,8 +3802,7 @@ void pvplayer_engine_test::test()
iCurrentTest = new pvplayer_async_test_playlist_playback(testparam, false, false, 0, 0, false, false, false, false, GAPLESS_FORMAT_LAME_MP3);
break;
case GaplessValidateiTunesAACPlaylist:
- fprintf(file, "GaplessValidateiTunesAACPlaylist not enabled\n");
- //@disabled iCurrentTest = new pvplayer_async_test_playlist_playback(testparam, false, false, 0, 0, false, false, false, false, GAPLESS_FORMAT_ITUNES_AAC);
+ iCurrentTest = new pvplayer_async_test_playlist_playback(testparam, false, false, 0, 0, false, false, false, false, GAPLESS_FORMAT_ITUNES_AAC);
break;
case CleanDrmData_JanusCPMTest:
diff --git a/engines/player/test/src/test_pv_player_engine_testset_playlist.cpp b/engines/player/test/src/test_pv_player_engine_testset_playlist.cpp
index bf09b3c9e..fe8f32624 100644
--- a/engines/player/test/src/test_pv_player_engine_testset_playlist.cpp
+++ b/engines/player/test/src/test_pv_player_engine_testset_playlist.cpp
@@ -1152,6 +1152,28 @@ void pvplayer_async_test_playlist_playback::Run()
}
break;
+ case STATE_ADDDATASINK_VIDEO:
+ {
+ iVideoSinkFileName = OUTPUTNAME_PREPEND_WSTRING;
+ iVideoSinkFileName += _STRLIT_WCHAR("test_playlist_");
+ iVideoSinkFileName += iSinkFileNameSubString;
+ if (iCompressedVideo)
+ {
+ iVideoSinkFileName += _STRLIT_WCHAR("compressed_");
+ }
+ iVideoSinkFileName += _STRLIT_WCHAR("_video.dat");
+
+ iMIOFileOutVideo = iMioFactory->CreateVideoOutput((OsclAny*) & iVideoSinkFileName, MEDIATYPE_VIDEO, iCompressedVideo);
+ iIONodeVideo = PVMediaOutputNodeFactory::CreateMediaOutputNode(iMIOFileOutVideo);
+ iDataSinkVideo = new PVPlayerDataSinkPVMFNode;
+ ((PVPlayerDataSinkPVMFNode*)iDataSinkVideo)->SetDataSinkNode(iIONodeVideo);
+
+ fprintf(iTestMsgOutputFile, "Adding Videoo Sink...\n");
+ OSCL_TRY(error, iCurrentCmdId = iPlayer->AddDataSink(*iDataSinkVideo, (OsclAny*) & iContextObject));
+ OSCL_FIRST_CATCH_ANY(error, PVPATB_TEST_IS_TRUE(false); iState = STATE_CLEANUPANDCOMPLETE; RunIfNotReady());
+ }
+ break;
+
case STATE_PREPARE:
{
fprintf(iTestMsgOutputFile, "Calling Prepare...\n");
@@ -1264,6 +1286,14 @@ void pvplayer_async_test_playlist_playback::Run()
}
break;
+ case STATE_REMOVEDATASINK_VIDEO:
+ {
+ fprintf(iTestMsgOutputFile, "Removing Video Sink...\n");
+ OSCL_TRY(error, iCurrentCmdId = iPlayer->RemoveDataSink(*iDataSinkVideo, (OsclAny*) & iContextObject));
+ OSCL_FIRST_CATCH_ANY(error, PVPATB_TEST_IS_TRUE(false); iState = STATE_CLEANUPANDCOMPLETE; RunIfNotReady());
+ }
+ break;
+
case STATE_RESET:
{
fprintf(iTestMsgOutputFile, "Calling Reset...\n");
@@ -1294,9 +1324,18 @@ void pvplayer_async_test_playlist_playback::Run()
delete iDataSinkAudio;
iDataSinkAudio = NULL;
+ delete iDataSinkVideo;
+ iDataSinkVideo = NULL;
+
+ PVMediaOutputNodeFactory::DeleteMediaOutputNode(iIONodeVideo);
+ iIONodeVideo = NULL;
+
PVMediaOutputNodeFactory::DeleteMediaOutputNode(iIONodeAudio);
iIONodeAudio = NULL;
+ iMioFactory->DestroyVideoOutput(iMIOFileOutVideo);
+ iMIOFileOutVideo = NULL;
+
iMioFactory->DestroyAudioOutput(iMIOFileOutAudio);
iMIOFileOutAudio = NULL;
@@ -1503,6 +1542,29 @@ void pvplayer_async_test_playlist_playback::CommandCompleted(const PVCmdResponse
if (PVMFSuccess == aResponse.GetCmdStatus())
{
fprintf(iTestMsgOutputFile, "...Add Audio Sink Complete\n");
+ if (iFileType != PVMF_MIME_MP3FF)
+ {
+ iState = STATE_ADDDATASINK_VIDEO;
+ }
+ else
+ {
+ iState = STATE_PREPARE;
+ }
+ RunIfNotReady();
+ }
+ else
+ {
+ // AddDataSink failed
+ PVPATB_TEST_IS_TRUE(false);
+ iState = STATE_CLEANUPANDCOMPLETE;
+ RunIfNotReady();
+ }
+ break;
+
+ case STATE_ADDDATASINK_VIDEO:
+ if (PVMFSuccess == aResponse.GetCmdStatus())
+ {
+ fprintf(iTestMsgOutputFile, "...Add Video Sink Complete\n");
iState = STATE_PREPARE;
RunIfNotReady();
}
@@ -1626,6 +1688,30 @@ void pvplayer_async_test_playlist_playback::CommandCompleted(const PVCmdResponse
if (PVMFSuccess == aResponse.GetCmdStatus())
{
fprintf(iTestMsgOutputFile, "...Remove Audio Sink Complete\n");
+
+ if (iFileType != PVMF_MIME_MP3FF)
+ {
+ iState = STATE_REMOVEDATASINK_VIDEO;
+ }
+ else
+ {
+ iState = STATE_RESET;
+ }
+ RunIfNotReady();
+ }
+ else
+ {
+ // RemoveDataSink failed
+ PVPATB_TEST_IS_TRUE(false);
+ iState = STATE_RESET;
+ RunIfNotReady();
+ }
+ break;
+
+ case STATE_REMOVEDATASINK_VIDEO:
+ if (PVMFSuccess == aResponse.GetCmdStatus())
+ {
+ fprintf(iTestMsgOutputFile, "...Remove Video Sink Complete\n");
iState = STATE_RESET;
RunIfNotReady();
}
@@ -1844,9 +1930,12 @@ void pvplayer_async_test_playlist_playback::HandleInformationalEvent(const PVAsy
case PVMFInfoClipCorrupted:
{
iCorruptedClipsIdentified++;
+
+ uint32 *clipId = (uint32*) aEvent.GetLocalBuffer();
+ fprintf(iTestMsgOutputFile, "***** PVMFInfoClipCorrupted received for clip index %d\n", *clipId);
+
if (iNumInvalidClips > 0)
{
- uint32 *clipId = (uint32*) aEvent.GetLocalBuffer();
// index for first corrupted clip
uint32 startIndex = iInvalidClipAtIndex;
@@ -1862,7 +1951,6 @@ void pvplayer_async_test_playlist_playback::HandleInformationalEvent(const PVAsy
{
PVPATB_TEST_IS_TRUE(false);
}
- fprintf(iTestMsgOutputFile, "***** PVMFInfoClipCorrupted received for clip index %d\n", *clipId);
bool added = AddEventToSequence(iResultingEvents, PL_CLIP_CORRUPT_EVENT, *clipId, PL_GENERATE_TIMESTAMP, 0, iTestMsgOutputFile);
if (!added)
@@ -2296,6 +2384,29 @@ void pvplayer_async_test_playlist_seek_skip::Run()
}
break;
+ case STATE_ADDDATASINK_VIDEO:
+ {
+ OSCL_wHeapString<OsclMemAllocator> sinkfilename;
+ sinkfilename = OUTPUTNAME_PREPEND_WSTRING;
+ sinkfilename += _STRLIT_WCHAR("test_playlist_playback");
+ sinkfilename += iSinkFileNameSubString;
+ if (iCompressedVideo)
+ {
+ sinkfilename += _STRLIT_WCHAR("compressed_");
+ }
+ sinkfilename += _STRLIT_WCHAR("_video.dat");
+
+ iMIOFileOutVideo = iMioFactory->CreateVideoOutput((OsclAny*) & sinkfilename, MEDIATYPE_VIDEO, iCompressedVideo);
+ iIONodeVideo = PVMediaOutputNodeFactory::CreateMediaOutputNode(iMIOFileOutVideo);
+ iDataSinkVideo = new PVPlayerDataSinkPVMFNode;
+ ((PVPlayerDataSinkPVMFNode*)iDataSinkVideo)->SetDataSinkNode(iIONodeVideo);
+
+ fprintf(iTestMsgOutputFile, "Adding Video Sink...\n");
+ OSCL_TRY(error, iCurrentCmdId = iPlayer->AddDataSink(*iDataSinkVideo, (OsclAny*) & iContextObject));
+ OSCL_FIRST_CATCH_ANY(error, PVPATB_TEST_IS_TRUE(false); iState = STATE_CLEANUPANDCOMPLETE; RunIfNotReady());
+ }
+ break;
+
case STATE_PREPARE:
{
fprintf(iTestMsgOutputFile, "Calling Prepare...\n");
@@ -2475,6 +2586,14 @@ void pvplayer_async_test_playlist_seek_skip::Run()
}
break;
+ case STATE_REMOVEDATASINK_VIDEO:
+ {
+ fprintf(iTestMsgOutputFile, "Removing Video Sink...\n");
+ OSCL_TRY(error, iCurrentCmdId = iPlayer->RemoveDataSink(*iDataSinkVideo, (OsclAny*) & iContextObject));
+ OSCL_FIRST_CATCH_ANY(error, PVPATB_TEST_IS_TRUE(false); iState = STATE_CLEANUPANDCOMPLETE; RunIfNotReady());
+ }
+ break;
+
case STATE_RESET:
{
fprintf(iTestMsgOutputFile, "Calling Reset...\n");
@@ -2505,12 +2624,21 @@ void pvplayer_async_test_playlist_seek_skip::Run()
delete iDataSinkAudio;
iDataSinkAudio = NULL;
+ delete iDataSinkVideo;
+ iDataSinkVideo = NULL;
+
PVMediaOutputNodeFactory::DeleteMediaOutputNode(iIONodeAudio);
iIONodeAudio = NULL;
+ PVMediaOutputNodeFactory::DeleteMediaOutputNode(iIONodeVideo);
+ iIONodeVideo = NULL;
+
iMioFactory->DestroyAudioOutput(iMIOFileOutAudio);
iMIOFileOutAudio = NULL;
+ iMioFactory->DestroyAudioOutput(iMIOFileOutVideo);
+ iMIOFileOutVideo = NULL;
+
ValidateEvents();
TestCompleted();
@@ -2602,6 +2730,30 @@ void pvplayer_async_test_playlist_seek_skip::CommandCompleted(const PVCmdRespons
if (PVMFSuccess == aResponse.GetCmdStatus())
{
fprintf(iTestMsgOutputFile, "...Add Audio Sink Complete\n");
+
+ if (iFileType != PVMF_MIME_MP3FF)
+ {
+ iState = STATE_ADDDATASINK_VIDEO;
+ }
+ else
+ {
+ iState = STATE_PREPARE;
+ }
+ RunIfNotReady();
+ }
+ else
+ {
+ // AddDataSink failed
+ PVPATB_TEST_IS_TRUE(false);
+ iState = STATE_CLEANUPANDCOMPLETE;
+ RunIfNotReady();
+ }
+ break;
+
+ case STATE_ADDDATASINK_VIDEO:
+ if (PVMFSuccess == aResponse.GetCmdStatus())
+ {
+ fprintf(iTestMsgOutputFile, "...Add Video Sink Complete\n");
iState = STATE_PREPARE;
RunIfNotReady();
}
@@ -2810,6 +2962,29 @@ void pvplayer_async_test_playlist_seek_skip::CommandCompleted(const PVCmdRespons
if (PVMFSuccess == aResponse.GetCmdStatus())
{
fprintf(iTestMsgOutputFile, "...Remove Audio Sink Complete\n");
+ if (iFileType != PVMF_MIME_MP3FF)
+ {
+ iState = STATE_REMOVEDATASINK_VIDEO;
+ }
+ else
+ {
+ iState = STATE_RESET;
+ }
+ RunIfNotReady();
+ }
+ else
+ {
+ // RemoveDataSink failed
+ PVPATB_TEST_IS_TRUE(false);
+ iState = STATE_RESET;
+ RunIfNotReady();
+ }
+ break;
+
+ case STATE_REMOVEDATASINK_VIDEO:
+ if (PVMFSuccess == aResponse.GetCmdStatus())
+ {
+ fprintf(iTestMsgOutputFile, "...Remove Video Sink Complete\n");
iState = STATE_RESET;
RunIfNotReady();
}
diff --git a/engines/player/test/src/test_pv_player_engine_testset_playlist.h b/engines/player/test/src/test_pv_player_engine_testset_playlist.h
index 4a0871c05..7113d2aca 100644
--- a/engines/player/test/src/test_pv_player_engine_testset_playlist.h
+++ b/engines/player/test/src/test_pv_player_engine_testset_playlist.h
@@ -204,6 +204,9 @@ class pvplayer_async_test_playlist_playback : public pvplayer_async_test_base
, iDataSinkAudio(NULL)
, iMIOFileOutAudio(NULL)
, iIONodeAudio(NULL)
+ , iDataSinkVideo(NULL)
+ , iMIOFileOutVideo(NULL)
+ , iIONodeVideo(NULL)
, iCurrentCmdId(0)
, iSourceContextData(NULL)
, iNumEOSReceived(0)
@@ -481,6 +484,10 @@ class pvplayer_async_test_playlist_playback : public pvplayer_async_test_base
PvmiMIOControl* iMIOFileOutAudio;
PVMFNodeInterface* iIONodeAudio;
+ PVPlayerDataSink* iDataSinkVideo;
+ PvmiMIOControl* iMIOFileOutVideo;
+ PVMFNodeInterface* iIONodeVideo;
+
PVCommandId iCurrentCmdId;
PVMFSourceContextData* iSourceContextData;
uint32 iNumEOSReceived;
@@ -537,6 +544,7 @@ class pvplayer_async_test_playlist_playback : public pvplayer_async_test_base
uint32 iReferencePCMFileSize;
GaplessMetadataFormat iGaplessFormat;
OSCL_wHeapString<OsclMemAllocator> iAudioSinkFileName;
+ OSCL_wHeapString<OsclMemAllocator> iVideoSinkFileName;
};
@@ -586,6 +594,9 @@ class pvplayer_async_test_playlist_seek_skip : public pvplayer_async_test_base
, iDataSinkAudio(NULL)
, iIONodeAudio(NULL)
, iMIOFileOutAudio(NULL)
+ , iDataSinkVideo(NULL)
+ , iIONodeVideo(NULL)
+ , iMIOFileOutVideo(NULL)
, iCurrentCmdId(0)
, iSourceContextData(NULL)
, iNumEOSReceived(0)
@@ -1019,6 +1030,9 @@ class pvplayer_async_test_playlist_seek_skip : public pvplayer_async_test_base
PVPlayerDataSink* iDataSinkAudio;
PVMFNodeInterface* iIONodeAudio;
PvmiMIOControl* iMIOFileOutAudio;
+ PVPlayerDataSink* iDataSinkVideo;
+ PVMFNodeInterface* iIONodeVideo;
+ PvmiMIOControl* iMIOFileOutVideo;
PVCommandId iCurrentCmdId;
PVMFSourceContextData* iSourceContextData;