1 /* ------------------------------------------------------------------ 2 * Copyright (C) 1998-2009 PacketVideo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 * express or implied. 14 * See the License for the specific language governing permissions 15 * and limitations under the License. 16 * ------------------------------------------------------------------- 17 */ 18 #ifndef TEST_PV_PLAYER_ENGINE_TESTSET13_H_INCLUDED 19 #define TEST_PV_PLAYER_ENGINE_TESTSET13_H_INCLUDED 20 21 /** 22 * @file test_pv_player_engine_testset13.h 23 * @brief This file contains the class definitions for the Thirteenth set of 24 * test cases for PVPlayerEngine - Generic tests 25 * 26 */ 27 28 #ifndef TEST_PV_PLAYER_ENGINE_H_INCLUDED 29 #include "test_pv_player_engine.h" 30 #endif 31 32 #ifndef TEST_PV_PLAYER_ENGINE_CONFIG_H_INCLUDED 33 #include "test_pv_player_engine_config.h" 34 #endif 35 36 #ifndef PVMF_STREAMING_DATA_SOURCE_H_INCLUDED 37 #include "pvmf_streaming_data_source.h" 38 #endif 39 40 #if RUN_FASTTRACK_TESTCASES 41 #ifndef PVPVXPARSER_H_INCLUDED 42 #include "pvpvxparser.h" 43 #endif 44 #endif 45 46 #ifndef PVMF_DOWNLOAD_DATA_SOURCE_H_INCLUDED 47 #include "pvmf_download_data_source.h" 48 #endif 49 50 #ifndef PVMF_SOURCE_CONTEXT_DATA_H_INCLUDED 51 #include "pvmf_source_context_data.h" 52 #endif 53 54 #ifndef DEFAULT_URLS_DEFINED 55 #define DEFAULT_URLS_DEFINED 56 #define AMR_MPEG4_RTSP_URL "" 57 #define AMR_MPEG4_RTSP_URL_2 "" 58 #define H263_AMR_RTSP_URL "" 59 #define MPEG4_RTSP_URL "" 60 #define MPEG4_SHRT_HDR_RTSP_URL "" 61 #define AAC_RTSP_URL "" 62 #define MPEG4_AAC_RTSP_URL "" 63 #define AMR_MPEG4_SDP_FILE "pv_amr_mpeg4.sdp" 64 #endif 65 66 #define DEFAULT_GATEWAY "10.112.43.1" 67 68 class PVPlayerDataSourceURL; 69 class PVPlayerDataSink; 70 class PVPlayerDataSink; 71 class PVPlayerDataSinkFilename; 72 class PvmfFileOutputNodeConfigInterface; 73 class PvmiCapabilityAndConfig; 74 class PVMFDownloadDataSourcePVX; 75 76 77 /*! 78 * A test case to count time taken in each command completion when playing an local/PDL/rtsp url 79 * - Data Source: Specified by user of test case 80 * - Data Sink(s): Video[FileOutputNode-test_player_genericprofiling_video.dat]\n 81 * Audio[FileOutputNode-test_player_genericprofiling_audio.dat] 82 * - Sequence: 83 * -# CreatePlayer() 84 * -# AddDataSource() 85 * -# Init() 86 * -# AddDataSink() (video) 87 * -# AddDataSink() (audio) 88 * -# Prepare() 89 * -# Start() 90 * -# Play 10 sec 91 * -# SetPlaybackRange() if seekEnable flag is made true 92 * -# Pause() if pauseresumeEnable flag is made true 93 * -# WAIT 10 sec 94 * -# Resume() 95 * -# Play until EOS 96 * -# Stop() 97 * -# RemoveDataSink() (video) 98 * -# RemoveDataSink() (audio) 99 * -# Reset() 100 * -# RemoveDataSource() 101 * -# DeletePlayer() 102 * 103 */ 104 class pvplayer_async_test_genericprofiling : public pvplayer_async_test_base 105 { 106 public: pvplayer_async_test_genericprofiling(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aWaitForEOS,bool aCloaking,bool aCancelDuringPrepare)107 pvplayer_async_test_genericprofiling(PVPlayerAsyncTestParam aTestParam, 108 PVMFFormatType aVideoSinkFormat, 109 PVMFFormatType aAudioSinkFormat, 110 uint32 aTestID, 111 bool aWaitForEOS, 112 bool aCloaking, 113 bool aCancelDuringPrepare) 114 : pvplayer_async_test_base(aTestParam) 115 , iPlayer(NULL) 116 , iDataSource(NULL) 117 , iDataSinkVideo(NULL) 118 , iDataSinkAudio(NULL) 119 , iIONodeVideo(NULL) 120 , iIONodeAudio(NULL) 121 , iMIOFileOutVideo(NULL) 122 , iMIOFileOutAudio(NULL) 123 , iCurrentCmdId(0) 124 , iCancelAllCmdId(0) 125 , iSeekAfterEOSEnable(false) 126 , iSessionDuration(0) 127 , bcloaking(aCloaking) 128 , oLiveSession(false) 129 , iProtocolRollOver(false) 130 , iProtocolRollOverWithUnknownURLType(false) 131 , iPlayListURL(false) 132 , iStreamDataSource(NULL) 133 , iSourceContextData(NULL) 134 , iDownloadContextDataPVX(NULL) 135 { 136 iVideoSinkFormatType = aVideoSinkFormat; 137 iAudioSinkFormatType = aAudioSinkFormat; 138 oWaitForEOS = aWaitForEOS; 139 oCancelDuringPrepare = aCancelDuringPrepare; 140 iTestID = aTestID; 141 iNumPlay = 0; 142 iTargetNumPlay = 1; 143 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 144 iDownloadOnly = iDownloadThenPlay = false; 145 iCurrenttime = 0; 146 iPrevtime = 0; 147 iOverflow = false; 148 iPauseResumeDone = false; 149 iSeekDone = false; 150 } 151 ~pvplayer_async_test_genericprofiling()152 ~pvplayer_async_test_genericprofiling() {} 153 154 void StartTest(); 155 void Run(); 156 157 void CommandCompleted(const PVCmdResponse& aResponse); 158 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 159 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 160 161 /*enum PVTestState 162 { 163 STATE_CREATE, 164 STATE_QUERYINTERFACE, 165 STATE_ADDDATASOURCE, 166 STATE_CONFIGPARAMS, 167 STATE_INIT, 168 STATE_GETMETADATAKEYLIST, 169 STATE_GETMETADATAVALUELIST, 170 STATE_ADDDATASINK_VIDEO, 171 STATE_ADDDATASINK_AUDIO, 172 STATE_PREPARE, 173 STATE_CANCELALL, 174 STATE_WAIT_FOR_CANCELALL, 175 STATE_START, 176 STATE_SETPLAYBACKRANGE, 177 STATE_PAUSE, 178 STATE_RESUME, 179 STATE_EOSNOTREACHED, 180 STATE_STOP, 181 STATE_REMOVEDATASINK_VIDEO, 182 STATE_REMOVEDATASINK_AUDIO, 183 STATE_RESET, 184 STATE_REMOVEDATASOURCE, 185 STATE_CLEANUPANDCOMPLETE 186 };*/ 187 188 PVTestState iState; 189 190 PVPlayerInterface* iPlayer; 191 PVPlayerDataSourceURL* iDataSource; 192 PVPlayerDataSink* iDataSinkVideo; 193 PVPlayerDataSink* iDataSinkAudio; 194 PVMFNodeInterface* iIONodeVideo; 195 PVMFNodeInterface* iIONodeAudio; 196 PvmiMIOControl* iMIOFileOutVideo; 197 PvmiMIOControl* iMIOFileOutAudio; 198 PVCommandId iCurrentCmdId; 199 PVCommandId iCancelAllCmdId; 200 setMultiplePlayMode(uint32 aNum)201 void setMultiplePlayMode(uint32 aNum) 202 { 203 iMultiplePlay = true; 204 iTargetNumPlay = aNum; 205 } 206 setProtocolRollOverMode()207 void setProtocolRollOverMode() 208 { 209 iProtocolRollOver = true; 210 } 211 setProtocolRollOverModeWithUnknownURL()212 void setProtocolRollOverModeWithUnknownURL() 213 { 214 iProtocolRollOverWithUnknownURLType = true; 215 } 216 setPlayListMode()217 void setPlayListMode() 218 { 219 iPlayListURL = true; 220 } 221 setSeekAfterEOSMode()222 void setSeekAfterEOSMode() 223 { 224 iSeekAfterEOSEnable = true; 225 } 226 227 private: 228 void HandleSocketNodeErrors(int32 aErr); 229 void HandleRTSPNodeErrors(int32 aErr); 230 void HandleStreamingManagerNodeErrors(int32 aErr); 231 void HandleJitterBufferNodeErrors(int32 aErr); 232 void HandleMediaLayerNodeErrors(int32 aErr); 233 void HandleProtocolEngineNodeErrors(int32 aErr); 234 235 void PrintMetadataInfo(); 236 237 PVMFFormatType iVideoSinkFormatType; 238 PVMFFormatType iAudioSinkFormatType; 239 OSCL_wHeapString<OsclMemAllocator> wFileName; 240 oscl_wchar output[512]; 241 bool oCancelDuringPrepare; 242 bool oWaitForEOS; 243 uint32 iTestID; 244 bool iSeekAfterEOSEnable; 245 246 PVPMetadataList iMetadataKeyList; 247 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 248 int32 iNumValues; 249 250 uint32 iSessionDuration; 251 bool bcloaking; 252 bool oLiveSession; 253 254 bool iMultiplePlay; 255 uint32 iNumPlay; 256 uint32 iTargetNumPlay; 257 bool iPauseResumeDone; 258 bool iSeekDone; 259 260 bool iProtocolRollOver; 261 bool iProtocolRollOverWithUnknownURLType; 262 bool iPlayListURL; 263 264 PVMFTimebase_Tickcount tb; 265 PVMFMediaClock iClock; 266 //For clock usage 267 uint32 iCurrenttime; 268 uint32 iPrevtime; 269 bool iOverflow; 270 271 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 272 PvmiKvp* iErrorKVP; 273 PvmiKvp iKVPSetAsync; 274 OSCL_StackString<128> iKeyStringSetAsync; 275 276 PVMFStreamingDataSource* iStreamDataSource; 277 278 PVMFSourceContextData* iSourceContextData; 279 280 //FTDL 281 void CreateDownloadDataSource(); 282 uint8 iPVXFileBuf[4096]; 283 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 284 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 285 int32 iDownloadMaxfilesize; 286 #if RUN_FASTTRACK_TESTCASES 287 CPVXInfo iDownloadPvxInfo; 288 #endif 289 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 290 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 291 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 292 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 293 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 294 bool iDownloadOnly, iDownloadThenPlay; 295 bool iContentTooLarge; 296 }; 297 298 /*! 299 * A test case to test seek while in paused state when playing an local/PDL/rtsp url 300 * - Data Source: Specified by user of test case 301 * - Data Sink(s): Video[FileOutputNode-test_player_genericplaypauserepositionresume_video.dat]\n 302 * Audio[FileOutputNode-test_player_genericplaypauserepositionresume_audio.dat] 303 * - Sequence: 304 * -# CreatePlayer() 305 * -# AddDataSource() 306 * -# Init() 307 * -# AddDataSink() (video) 308 * -# AddDataSink() (audio) 309 * -# Prepare() 310 * -# Start() 311 * -# Play 10 sec 312 * -# Pause() 313 * -# WAIT 5 sec 314 * -# SetPlaybackRange() 315 * -# WAIT 5 sec 316 * -# Resume() 317 * -# Play until EOS 318 * -# Stop() 319 * -# RemoveDataSink() (video) 320 * -# RemoveDataSink() (audio) 321 * -# Reset() 322 * -# RemoveDataSource() 323 * -# DeletePlayer() 324 * 325 */ 326 class pvplayer_async_test_genericplaypauserepositionresumetest : public pvplayer_async_test_base 327 { 328 public: pvplayer_async_test_genericplaypauserepositionresumetest(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aWaitForEOS,bool aCloaking,bool aCancelDuringPrepare)329 pvplayer_async_test_genericplaypauserepositionresumetest(PVPlayerAsyncTestParam aTestParam, 330 PVMFFormatType aVideoSinkFormat, 331 PVMFFormatType aAudioSinkFormat, 332 uint32 aTestID, 333 bool aWaitForEOS, 334 bool aCloaking, 335 bool aCancelDuringPrepare) 336 : pvplayer_async_test_base(aTestParam) 337 , iPlayer(NULL) 338 , iDataSource(NULL) 339 , iDataSinkVideo(NULL) 340 , iDataSinkAudio(NULL) 341 , iIONodeVideo(NULL) 342 , iIONodeAudio(NULL) 343 , iMIOFileOutVideo(NULL) 344 , iMIOFileOutAudio(NULL) 345 , iCurrentCmdId(0) 346 , iCancelAllCmdId(0) 347 , iSeekAfterEOSEnable(false) 348 , iSessionDuration(0) 349 , bcloaking(aCloaking) 350 , oLiveSession(false) 351 , iProtocolRollOver(false) 352 , iProtocolRollOverWithUnknownURLType(false) 353 , iPlayListURL(false) 354 , iStreamDataSource(NULL) 355 , iSourceContextData(NULL) 356 , iDownloadContextDataPVX(NULL) 357 { 358 iVideoSinkFormatType = aVideoSinkFormat; 359 iAudioSinkFormatType = aAudioSinkFormat; 360 oWaitForEOS = aWaitForEOS; 361 oCancelDuringPrepare = aCancelDuringPrepare; 362 iTestID = aTestID; 363 iNumPlay = 0; 364 iTargetNumPlay = 1; 365 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 366 iDownloadOnly = iDownloadThenPlay = false; 367 iPauseDone = false; 368 iSeekDone = false; 369 } 370 ~pvplayer_async_test_genericplaypauserepositionresumetest()371 ~pvplayer_async_test_genericplaypauserepositionresumetest() {} 372 373 void StartTest(); 374 void Run(); 375 376 void CommandCompleted(const PVCmdResponse& aResponse); 377 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 378 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 379 380 /*enum PVTestState 381 { 382 STATE_CREATE, 383 STATE_QUERYINTERFACE, 384 STATE_ADDDATASOURCE, 385 STATE_CONFIGPARAMS, 386 STATE_INIT, 387 STATE_GETMETADATAKEYLIST, 388 STATE_GETMETADATAVALUELIST, 389 STATE_ADDDATASINK_VIDEO, 390 STATE_ADDDATASINK_AUDIO, 391 STATE_PREPARE, 392 STATE_CANCELALL, 393 STATE_WAIT_FOR_CANCELALL, 394 STATE_START, 395 STATE_SETPLAYBACKRANGE, 396 STATE_PAUSE, 397 STATE_RESUME, 398 STATE_EOSNOTREACHED, 399 STATE_STOP, 400 STATE_REMOVEDATASINK_VIDEO, 401 STATE_REMOVEDATASINK_AUDIO, 402 STATE_RESET, 403 STATE_REMOVEDATASOURCE, 404 STATE_CLEANUPANDCOMPLETE 405 };*/ 406 407 PVTestState iState; 408 409 PVPlayerInterface* iPlayer; 410 PVPlayerDataSourceURL* iDataSource; 411 PVPlayerDataSink* iDataSinkVideo; 412 PVPlayerDataSink* iDataSinkAudio; 413 PVMFNodeInterface* iIONodeVideo; 414 PVMFNodeInterface* iIONodeAudio; 415 PvmiMIOControl* iMIOFileOutVideo; 416 PvmiMIOControl* iMIOFileOutAudio; 417 PVCommandId iCurrentCmdId; 418 PVCommandId iCancelAllCmdId; 419 setMultiplePlayMode(uint32 aNum)420 void setMultiplePlayMode(uint32 aNum) 421 { 422 iMultiplePlay = true; 423 iTargetNumPlay = aNum; 424 } 425 setProtocolRollOverMode()426 void setProtocolRollOverMode() 427 { 428 iProtocolRollOver = true; 429 } 430 setProtocolRollOverModeWithUnknownURL()431 void setProtocolRollOverModeWithUnknownURL() 432 { 433 iProtocolRollOverWithUnknownURLType = true; 434 } 435 setPlayListMode()436 void setPlayListMode() 437 { 438 iPlayListURL = true; 439 } 440 setSeekAfterEOSMode()441 void setSeekAfterEOSMode() 442 { 443 iSeekAfterEOSEnable = true; 444 } 445 446 private: 447 void HandleSocketNodeErrors(int32 aErr); 448 void HandleRTSPNodeErrors(int32 aErr); 449 void HandleStreamingManagerNodeErrors(int32 aErr); 450 void HandleJitterBufferNodeErrors(int32 aErr); 451 void HandleMediaLayerNodeErrors(int32 aErr); 452 void HandleProtocolEngineNodeErrors(int32 aErr); 453 454 void PrintMetadataInfo(); 455 456 PVMFFormatType iVideoSinkFormatType; 457 PVMFFormatType iAudioSinkFormatType; 458 OSCL_wHeapString<OsclMemAllocator> wFileName; 459 oscl_wchar output[512]; 460 bool oCancelDuringPrepare; 461 bool oWaitForEOS; 462 uint32 iTestID; 463 bool iSeekAfterEOSEnable; 464 465 PVPMetadataList iMetadataKeyList; 466 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 467 int32 iNumValues; 468 469 uint32 iSessionDuration; 470 bool bcloaking; 471 bool oLiveSession; 472 473 474 bool iMultiplePlay; 475 uint32 iNumPlay; 476 uint32 iTargetNumPlay; 477 bool iPauseDone; 478 bool iSeekDone; 479 480 bool iProtocolRollOver; 481 bool iProtocolRollOverWithUnknownURLType; 482 bool iPlayListURL; 483 484 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 485 PvmiKvp* iErrorKVP; 486 PvmiKvp iKVPSetAsync; 487 OSCL_StackString<128> iKeyStringSetAsync; 488 489 PVMFStreamingDataSource* iStreamDataSource; 490 491 PVMFSourceContextData* iSourceContextData; 492 493 //FTDL 494 void CreateDownloadDataSource(); 495 uint8 iPVXFileBuf[4096]; 496 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 497 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 498 int32 iDownloadMaxfilesize; 499 #if RUN_FASTTRACK_TESTCASES 500 CPVXInfo iDownloadPvxInfo; 501 #endif 502 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 503 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 504 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 505 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 506 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 507 bool iDownloadOnly, iDownloadThenPlay; 508 bool iContentTooLarge; 509 }; 510 511 /*! 512 * A test case to test seek before start when playing an local/PDL/rtsp url 513 * - Data Source: Specified by user of test case 514 * - Data Sink(s): Video[FileOutputNode-test_player_genericopensetplaybackrangestartplaystop_video.dat]\n 515 * Audio[FileOutputNode-test_player_genericopensetplaybackrangestartplaystop_audio.dat] 516 * - Sequence: 517 * -# CreatePlayer() 518 * -# AddDataSource() 519 * -# Init() 520 * -# AddDataSink() (video) 521 * -# AddDataSink() (audio) 522 * -# Prepare() 523 * -# SetPlaybackRange() 524 * -# Start() 525 * -# Play 30 sec 526 * -# Stop() 527 * -# RemoveDataSink() (video) 528 * -# RemoveDataSink() (audio) 529 * -# Reset() 530 * -# RemoveDataSource() 531 * -# DeletePlayer() 532 * 533 */ 534 class pvplayer_async_test_genericopensetplaybackrangestartplaystoptest : public pvplayer_async_test_base 535 { 536 public: pvplayer_async_test_genericopensetplaybackrangestartplaystoptest(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aWaitForEOS,bool aCloaking,bool aCancelDuringPrepare)537 pvplayer_async_test_genericopensetplaybackrangestartplaystoptest(PVPlayerAsyncTestParam aTestParam, 538 PVMFFormatType aVideoSinkFormat, 539 PVMFFormatType aAudioSinkFormat, 540 uint32 aTestID, 541 bool aWaitForEOS, 542 bool aCloaking, 543 bool aCancelDuringPrepare) 544 : pvplayer_async_test_base(aTestParam) 545 , iPlayer(NULL) 546 , iDataSource(NULL) 547 , iDataSinkVideo(NULL) 548 , iDataSinkAudio(NULL) 549 , iIONodeVideo(NULL) 550 , iIONodeAudio(NULL) 551 , iMIOFileOutVideo(NULL) 552 , iMIOFileOutAudio(NULL) 553 , iCurrentCmdId(0) 554 , iCancelAllCmdId(0) 555 , iSeekAfterEOSEnable(false) 556 , iSessionDuration(0) 557 , bcloaking(aCloaking) 558 , oLiveSession(false) 559 , iProtocolRollOver(false) 560 , iProtocolRollOverWithUnknownURLType(false) 561 , iPlayListURL(false) 562 , iStreamDataSource(NULL) 563 , iSourceContextData(NULL) 564 , iDownloadContextDataPVX(NULL) 565 { 566 iVideoSinkFormatType = aVideoSinkFormat; 567 iAudioSinkFormatType = aAudioSinkFormat; 568 oWaitForEOS = aWaitForEOS; 569 oCancelDuringPrepare = aCancelDuringPrepare; 570 iTestID = aTestID; 571 iNumPlay = 0; 572 iTargetNumPlay = 1; 573 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 574 iDownloadOnly = iDownloadThenPlay = false; 575 iSeekDone = false; 576 iInitDone = false; 577 } 578 ~pvplayer_async_test_genericopensetplaybackrangestartplaystoptest()579 ~pvplayer_async_test_genericopensetplaybackrangestartplaystoptest() {} 580 581 void StartTest(); 582 void Run(); 583 584 void CommandCompleted(const PVCmdResponse& aResponse); 585 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 586 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 587 588 /*enum PVTestState 589 { 590 STATE_CREATE, 591 STATE_QUERYINTERFACE, 592 STATE_ADDDATASOURCE, 593 STATE_CONFIGPARAMS, 594 STATE_INIT, 595 STATE_GETMETADATAKEYLIST, 596 STATE_GETMETADATAVALUELIST, 597 STATE_ADDDATASINK_VIDEO, 598 STATE_ADDDATASINK_AUDIO, 599 STATE_PREPARE, 600 STATE_CANCELALL, 601 STATE_WAIT_FOR_CANCELALL, 602 STATE_START, 603 STATE_SETPLAYBACKRANGE, 604 STATE_PAUSE, 605 STATE_RESUME, 606 STATE_EOSNOTREACHED, 607 STATE_STOP, 608 STATE_REMOVEDATASINK_VIDEO, 609 STATE_REMOVEDATASINK_AUDIO, 610 STATE_RESET, 611 STATE_REMOVEDATASOURCE, 612 STATE_CLEANUPANDCOMPLETE 613 };*/ 614 615 PVTestState iState; 616 617 PVPlayerInterface* iPlayer; 618 PVPlayerDataSourceURL* iDataSource; 619 PVPlayerDataSink* iDataSinkVideo; 620 PVPlayerDataSink* iDataSinkAudio; 621 PVMFNodeInterface* iIONodeVideo; 622 PVMFNodeInterface* iIONodeAudio; 623 PvmiMIOControl* iMIOFileOutVideo; 624 PvmiMIOControl* iMIOFileOutAudio; 625 PVCommandId iCurrentCmdId; 626 PVCommandId iCancelAllCmdId; 627 setMultiplePlayMode(uint32 aNum)628 void setMultiplePlayMode(uint32 aNum) 629 { 630 iMultiplePlay = true; 631 iTargetNumPlay = aNum; 632 } 633 setProtocolRollOverMode()634 void setProtocolRollOverMode() 635 { 636 iProtocolRollOver = true; 637 } 638 setProtocolRollOverModeWithUnknownURL()639 void setProtocolRollOverModeWithUnknownURL() 640 { 641 iProtocolRollOverWithUnknownURLType = true; 642 } 643 setPlayListMode()644 void setPlayListMode() 645 { 646 iPlayListURL = true; 647 } 648 setSeekAfterEOSMode()649 void setSeekAfterEOSMode() 650 { 651 iSeekAfterEOSEnable = true; 652 } 653 654 private: 655 void HandleSocketNodeErrors(int32 aErr); 656 void HandleRTSPNodeErrors(int32 aErr); 657 void HandleStreamingManagerNodeErrors(int32 aErr); 658 void HandleJitterBufferNodeErrors(int32 aErr); 659 void HandleMediaLayerNodeErrors(int32 aErr); 660 void HandleProtocolEngineNodeErrors(int32 aErr); 661 662 void PrintMetadataInfo(); 663 664 PVMFFormatType iVideoSinkFormatType; 665 PVMFFormatType iAudioSinkFormatType; 666 OSCL_wHeapString<OsclMemAllocator> wFileName; 667 oscl_wchar output[512]; 668 bool oCancelDuringPrepare; 669 bool oWaitForEOS; 670 uint32 iTestID; 671 bool iSeekAfterEOSEnable; 672 673 PVPMetadataList iMetadataKeyList; 674 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 675 int32 iNumValues; 676 677 uint32 iSessionDuration; 678 bool bcloaking; 679 bool oLiveSession; 680 681 bool iMultiplePlay; 682 uint32 iNumPlay; 683 uint32 iTargetNumPlay; 684 bool iSeekDone; 685 bool iInitDone; 686 687 bool iProtocolRollOver; 688 bool iProtocolRollOverWithUnknownURLType; 689 bool iPlayListURL; 690 691 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 692 PvmiKvp* iErrorKVP; 693 PvmiKvp iKVPSetAsync; 694 OSCL_StackString<128> iKeyStringSetAsync; 695 696 PVMFStreamingDataSource* iStreamDataSource; 697 698 PVMFSourceContextData* iSourceContextData; 699 700 //FTDL 701 void CreateDownloadDataSource(); 702 uint8 iPVXFileBuf[4096]; 703 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 704 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 705 int32 iDownloadMaxfilesize; 706 #if RUN_FASTTRACK_TESTCASES 707 CPVXInfo iDownloadPvxInfo; 708 #endif 709 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 710 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 711 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 712 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 713 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 714 bool iDownloadOnly, iDownloadThenPlay; 715 bool iContentTooLarge; 716 }; 717 718 /*! 719 * A test case to test seek to end of clip when playing an local/PDL/rtsp url 720 * - Data Source: Specified by user of test case 721 * - Data Sink(s): Video[FileOutputNode-test_player_genericopenplayrepositiontoend_video.dat]\n 722 * Audio[FileOutputNode-test_player_genericopenplayrepositiontoend_audio.dat] 723 * - Sequence: 724 * -# CreatePlayer() 725 * -# AddDataSource() 726 * -# Init() 727 * -# AddDataSink() (video) 728 * -# AddDataSink() (audio) 729 * -# Prepare() 730 * -# Start() 731 * -# Play 10 sec 732 * -# SetPlaybackRange() to the end of clip 733 * -# Play until EOS 734 * -# Stop() 735 * -# RemoveDataSink() (video) 736 * -# RemoveDataSink() (audio) 737 * -# Reset() 738 * -# RemoveDataSource() 739 * -# DeletePlayer() 740 * 741 */ 742 class pvplayer_async_test_genericopenplayrepositiontoendtest : public pvplayer_async_test_base 743 { 744 public: pvplayer_async_test_genericopenplayrepositiontoendtest(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aWaitForEOS,bool aCloaking,bool aCancelDuringPrepare)745 pvplayer_async_test_genericopenplayrepositiontoendtest(PVPlayerAsyncTestParam aTestParam, 746 PVMFFormatType aVideoSinkFormat, 747 PVMFFormatType aAudioSinkFormat, 748 uint32 aTestID, 749 bool aWaitForEOS, 750 bool aCloaking, 751 bool aCancelDuringPrepare) 752 : pvplayer_async_test_base(aTestParam) 753 , iPlayer(NULL) 754 , iDataSource(NULL) 755 , iDataSinkVideo(NULL) 756 , iDataSinkAudio(NULL) 757 , iIONodeVideo(NULL) 758 , iIONodeAudio(NULL) 759 , iMIOFileOutVideo(NULL) 760 , iMIOFileOutAudio(NULL) 761 , iCurrentCmdId(0) 762 , iCancelAllCmdId(0) 763 , iSeekAfterEOSEnable(false) 764 , iSessionDuration(0) 765 , bcloaking(aCloaking) 766 , oLiveSession(false) 767 , iProtocolRollOver(false) 768 , iProtocolRollOverWithUnknownURLType(false) 769 , iPlayListURL(false) 770 , iStreamDataSource(NULL) 771 , iSourceContextData(NULL) 772 , iDownloadContextDataPVX(NULL) 773 { 774 iVideoSinkFormatType = aVideoSinkFormat; 775 iAudioSinkFormatType = aAudioSinkFormat; 776 oWaitForEOS = aWaitForEOS; 777 oCancelDuringPrepare = aCancelDuringPrepare; 778 iTestID = aTestID; 779 iNumPlay = 0; 780 iTargetNumPlay = 1; 781 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 782 iDownloadOnly = iDownloadThenPlay = false; 783 iPlayStarted = false; 784 iSeekDone = false; 785 } 786 ~pvplayer_async_test_genericopenplayrepositiontoendtest()787 ~pvplayer_async_test_genericopenplayrepositiontoendtest() {} 788 789 void StartTest(); 790 void Run(); 791 792 void CommandCompleted(const PVCmdResponse& aResponse); 793 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 794 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 795 796 /*enum PVTestState 797 { 798 STATE_CREATE, 799 STATE_QUERYINTERFACE, 800 STATE_ADDDATASOURCE, 801 STATE_CONFIGPARAMS, 802 STATE_INIT, 803 STATE_GETMETADATAKEYLIST, 804 STATE_GETMETADATAVALUELIST, 805 STATE_ADDDATASINK_VIDEO, 806 STATE_ADDDATASINK_AUDIO, 807 STATE_PREPARE, 808 STATE_CANCELALL, 809 STATE_WAIT_FOR_CANCELALL, 810 STATE_START, 811 STATE_SETPLAYBACKRANGE, 812 STATE_PAUSE, 813 STATE_RESUME, 814 STATE_EOSNOTREACHED, 815 STATE_STOP, 816 STATE_REMOVEDATASINK_VIDEO, 817 STATE_REMOVEDATASINK_AUDIO, 818 STATE_RESET, 819 STATE_REMOVEDATASOURCE, 820 STATE_CLEANUPANDCOMPLETE 821 };*/ 822 823 PVTestState iState; 824 825 PVPlayerInterface* iPlayer; 826 PVPlayerDataSourceURL* iDataSource; 827 PVPlayerDataSink* iDataSinkVideo; 828 PVPlayerDataSink* iDataSinkAudio; 829 PVMFNodeInterface* iIONodeVideo; 830 PVMFNodeInterface* iIONodeAudio; 831 PvmiMIOControl* iMIOFileOutVideo; 832 PvmiMIOControl* iMIOFileOutAudio; 833 PVCommandId iCurrentCmdId; 834 PVCommandId iCancelAllCmdId; 835 setMultiplePlayMode(uint32 aNum)836 void setMultiplePlayMode(uint32 aNum) 837 { 838 iMultiplePlay = true; 839 iTargetNumPlay = aNum; 840 } 841 setProtocolRollOverMode()842 void setProtocolRollOverMode() 843 { 844 iProtocolRollOver = true; 845 } 846 setProtocolRollOverModeWithUnknownURL()847 void setProtocolRollOverModeWithUnknownURL() 848 { 849 iProtocolRollOverWithUnknownURLType = true; 850 } 851 setPlayListMode()852 void setPlayListMode() 853 { 854 iPlayListURL = true; 855 } 856 setSeekAfterEOSMode()857 void setSeekAfterEOSMode() 858 { 859 iSeekAfterEOSEnable = true; 860 } 861 862 private: 863 void HandleSocketNodeErrors(int32 aErr); 864 void HandleRTSPNodeErrors(int32 aErr); 865 void HandleStreamingManagerNodeErrors(int32 aErr); 866 void HandleJitterBufferNodeErrors(int32 aErr); 867 void HandleMediaLayerNodeErrors(int32 aErr); 868 void HandleProtocolEngineNodeErrors(int32 aErr); 869 870 void PrintMetadataInfo(); 871 872 PVMFFormatType iVideoSinkFormatType; 873 PVMFFormatType iAudioSinkFormatType; 874 OSCL_wHeapString<OsclMemAllocator> wFileName; 875 oscl_wchar output[512]; 876 bool oCancelDuringPrepare; 877 bool oWaitForEOS; 878 uint32 iTestID; 879 bool iSeekAfterEOSEnable; 880 881 PVPMetadataList iMetadataKeyList; 882 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 883 int32 iNumValues; 884 885 uint32 iSessionDuration; 886 bool bcloaking; 887 bool oLiveSession; 888 889 bool iMultiplePlay; 890 uint32 iNumPlay; 891 uint32 iTargetNumPlay; 892 bool iPlayStarted; 893 bool iSeekDone; 894 895 bool iProtocolRollOver; 896 bool iProtocolRollOverWithUnknownURLType; 897 bool iPlayListURL; 898 899 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 900 PvmiKvp* iErrorKVP; 901 PvmiKvp iKVPSetAsync; 902 OSCL_StackString<128> iKeyStringSetAsync; 903 904 PVMFStreamingDataSource* iStreamDataSource; 905 906 PVMFSourceContextData* iSourceContextData; 907 908 //FTDL 909 void CreateDownloadDataSource(); 910 uint8 iPVXFileBuf[4096]; 911 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 912 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 913 int32 iDownloadMaxfilesize; 914 #if RUN_FASTTRACK_TESTCASES 915 CPVXInfo iDownloadPvxInfo; 916 #endif 917 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 918 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 919 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 920 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 921 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 922 bool iDownloadOnly, iDownloadThenPlay; 923 bool iContentTooLarge; 924 }; 925 926 /*! 927 * Test cases to test engine behavior when network is disconnected DURING/RIGHT AFTER various engine command's 928 * execution when playing an PDL/streaming url 929 * - Data Source: Specified by user of test case 930 * - Data Sink(s): Video[FileOutputNode-test_player_genericnetworkdisconnect_video.dat]\n 931 * Audio[FileOutputNode-test_player_genericnetworkdisconnect_audio.dat] 932 * - Sequence: 933 * -# CreatePlayer() 934 * -# AddDataSource() 935 * -# Init() 936 * -# AddDataSink() (video) 937 * -# AddDataSink() (audio) 938 * -# Prepare() 939 * -# Start() 940 * -# Play 10 sec 941 * -# SetPlaybackRange() if seekEnable flag is made true 942 * -# Pause() if pauseresumeEnable flag is made true 943 * -# WAIT 10 sec 944 * -# Resume() 945 * -# Play until EOS 946 * -# Stop() 947 * -# RemoveDataSink() (video) 948 * -# RemoveDataSink() (audio) 949 * -# Reset() 950 * -# RemoveDataSource() 951 * -# DeletePlayer() 952 * 953 */ 954 class pvplayer_async_test_genericnetworkdisconnect : public pvplayer_async_test_base 955 { 956 public: pvplayer_async_test_genericnetworkdisconnect(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aPauseResumeEnable,bool aSeekEnable,bool aWaitForEOS,bool aCloaking,bool aCancelDuringPrepare,int aDisconnectState,bool aDisconnectWhileProc)957 pvplayer_async_test_genericnetworkdisconnect(PVPlayerAsyncTestParam aTestParam, 958 PVMFFormatType aVideoSinkFormat, 959 PVMFFormatType aAudioSinkFormat, 960 uint32 aTestID, 961 bool aPauseResumeEnable, 962 bool aSeekEnable, 963 bool aWaitForEOS, 964 bool aCloaking, 965 bool aCancelDuringPrepare, 966 int aDisconnectState, 967 bool aDisconnectWhileProc) 968 : pvplayer_async_test_base(aTestParam) 969 , iPlayer(NULL) 970 , iDataSource(NULL) 971 , iDataSinkVideo(NULL) 972 , iDataSinkAudio(NULL) 973 , iIONodeVideo(NULL) 974 , iIONodeAudio(NULL) 975 , iMIOFileOutVideo(NULL) 976 , iMIOFileOutAudio(NULL) 977 , iCurrentCmdId(0) 978 , iCancelAllCmdId(0) 979 , iSessionDuration(0) 980 , bcloaking(aCloaking) 981 , oLiveSession(false) 982 , iProtocolRollOver(false) 983 , iProtocolRollOverWithUnknownURLType(false) 984 , iPlayListURL(false) 985 , iSourceContextData(NULL) 986 , iStreamDataSource(NULL) 987 , iDownloadContextDataPVX(NULL) 988 { 989 iVideoSinkFormatType = aVideoSinkFormat; 990 iAudioSinkFormatType = aAudioSinkFormat; 991 oPauseResumeEnable = aPauseResumeEnable; 992 oSeekEnable = aSeekEnable; 993 oWaitForEOS = aWaitForEOS; 994 oCancelDuringPrepare = aCancelDuringPrepare; 995 iTestID = aTestID; 996 iNumPlay = 0; 997 iTargetNumPlay = 1; 998 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 999 iDownloadOnly = iDownloadThenPlay = false; 1000 iDisconnectState = (PVTestState)aDisconnectState; 1001 iDisconnectWhileProc = aDisconnectWhileProc; 1002 } 1003 ~pvplayer_async_test_genericnetworkdisconnect()1004 ~pvplayer_async_test_genericnetworkdisconnect() {} 1005 1006 void StartTest(); 1007 void Run(); 1008 1009 void CommandCompleted(const PVCmdResponse& aResponse); 1010 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 1011 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 1012 1013 1014 PVTestState iState; 1015 PVTestState iDisconnectState; 1016 bool iDisconnectWhileProc; 1017 1018 PVPlayerInterface* iPlayer; 1019 PVPlayerDataSourceURL* iDataSource; 1020 PVPlayerDataSink* iDataSinkVideo; 1021 PVPlayerDataSink* iDataSinkAudio; 1022 PVMFNodeInterface* iIONodeVideo; 1023 PVMFNodeInterface* iIONodeAudio; 1024 PvmiMIOControl* iMIOFileOutVideo; 1025 PvmiMIOControl* iMIOFileOutAudio; 1026 PVCommandId iCurrentCmdId; 1027 PVCommandId iCancelAllCmdId; 1028 1029 setMultiplePlayMode(uint32 aNum)1030 void setMultiplePlayMode(uint32 aNum) 1031 { 1032 iMultiplePlay = true; 1033 iTargetNumPlay = aNum; 1034 } 1035 setProtocolRollOverMode()1036 void setProtocolRollOverMode() 1037 { 1038 iProtocolRollOver = true; 1039 } 1040 setProtocolRollOverModeWithUnknownURL()1041 void setProtocolRollOverModeWithUnknownURL() 1042 { 1043 iProtocolRollOverWithUnknownURLType = true; 1044 } 1045 setPlayListMode()1046 void setPlayListMode() 1047 { 1048 iPlayListURL = true; 1049 } 1050 disableNetwork()1051 void disableNetwork() 1052 { 1053 1054 #if PVPLAYER_TEST_LINUX_DISABLE_NETWORK 1055 fprintf(iTestMsgOutputFile, "***Disconnecting Network...\n"); 1056 system("/sbin/ifconfig eth0 down"); 1057 #endif 1058 1059 #if PVPLAYER_TEST_WIN32_DISABLE_NETWORK 1060 fprintf(iTestMsgOutputFile, "***Disconnecting Network...\n"); 1061 system("ipconfig /release"); 1062 #endif 1063 1064 } 1065 enableNetwork()1066 void enableNetwork() 1067 { 1068 char cmd_str[48] = "/sbin/route add default gw "; 1069 oscl_strcat(cmd_str, DEFAULT_GATEWAY); 1070 1071 #if PVPLAYER_TEST_LINUX_DISABLE_NETWORK 1072 fprintf(iTestMsgOutputFile, "***Reconnecting Network...\n"); 1073 system("/sbin/ifconfig eth0 up"); 1074 system(cmd_str); 1075 #endif 1076 1077 #if PVPLAYER_TEST_WIN32_DISABLE_NETWORK 1078 fprintf(iTestMsgOutputFile, "***Reconnecting Network...\n"); 1079 system("ipconfig /renew"); 1080 #endif 1081 1082 } 1083 1084 private: 1085 void HandleSocketNodeErrors(int32 aErr); 1086 void HandleRTSPNodeErrors(int32 aErr); 1087 void HandleStreamingManagerNodeErrors(int32 aErr); 1088 void HandleJitterBufferNodeErrors(int32 aErr); 1089 void HandleMediaLayerNodeErrors(int32 aErr); 1090 void HandleProtocolEngineNodeErrors(int32 aErr); 1091 1092 1093 void PrintMetadataInfo(); 1094 1095 PVMFFormatType iVideoSinkFormatType; 1096 PVMFFormatType iAudioSinkFormatType; 1097 OSCL_wHeapString<OsclMemAllocator> wFileName; 1098 oscl_wchar output[512]; 1099 bool oPauseResumeEnable; 1100 bool oSeekEnable; 1101 bool oCancelDuringPrepare; 1102 bool oWaitForEOS; 1103 uint32 iTestID; 1104 1105 PVPMetadataList iMetadataKeyList; 1106 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 1107 int32 iNumValues; 1108 1109 uint32 iSessionDuration; 1110 bool bcloaking; 1111 bool oLiveSession; 1112 1113 bool iMultiplePlay; 1114 uint32 iNumPlay; 1115 uint32 iTargetNumPlay; 1116 1117 bool iProtocolRollOver; 1118 bool iProtocolRollOverWithUnknownURLType; 1119 bool iPlayListURL; 1120 1121 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 1122 PvmiKvp* iErrorKVP; 1123 PvmiKvp iKVPSetAsync; 1124 OSCL_StackString<128> iKeyStringSetAsync; 1125 PVMFSourceContextData* iSourceContextData; 1126 1127 PVMFStreamingDataSource* iStreamDataSource; 1128 1129 //FTDL 1130 void CreateDownloadDataSource(); 1131 uint8 iPVXFileBuf[4096]; 1132 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 1133 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 1134 int32 iDownloadMaxfilesize; 1135 #if RUN_FASTTRACK_TESTCASES 1136 CPVXInfo iDownloadPvxInfo; 1137 #endif 1138 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 1139 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 1140 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 1141 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 1142 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 1143 bool iDownloadOnly, iDownloadThenPlay; 1144 bool iContentTooLarge; 1145 }; 1146 1147 /*! 1148 * Test cases to test engine behavior when network is disconnected and then reconnected after 1149 * NW_RECONNECT_AFTER_DISCONNECT milli secs, DURING/RIGHT AFTER various engine command's 1150 * execution, when playing an PDL/streaming url 1151 * - Data Source: Specified by user of test case 1152 * - Data Sink(s): Video[FileOutputNode-test_player_genericnetworkdisconnectreconnect_video.dat]\n 1153 * Audio[FileOutputNode-test_player_genericnetworkdisconnectreconnect_audio.dat] 1154 * - Sequence: 1155 * -# CreatePlayer() 1156 * -# AddDataSource() 1157 * -# Init() 1158 * -# AddDataSink() (video) 1159 * -# AddDataSink() (audio) 1160 * -# Prepare() 1161 * -# Start() 1162 * -# Play 10 sec 1163 * -# SetPlaybackRange() if seekEnable flag is made true 1164 * -# Pause() if pauseresumeEnable flag is made true 1165 * -# WAIT 10 sec 1166 * -# Resume() 1167 * -# Play until EOS 1168 * -# Stop() 1169 * -# RemoveDataSink() (video) 1170 * -# RemoveDataSink() (audio) 1171 * -# Reset() 1172 * -# RemoveDataSource() 1173 * -# DeletePlayer() 1174 * 1175 */ 1176 class pvplayer_async_test_genericnetworkdisconnectreconnect : public pvplayer_async_test_base 1177 { 1178 public: pvplayer_async_test_genericnetworkdisconnectreconnect(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aPauseResumeEnable,bool aSeekEnable,bool aWaitForEOS,bool aCloaking,bool aCancelDuringPrepare,int aDisconnectState,bool aDisconnectWhileProc)1179 pvplayer_async_test_genericnetworkdisconnectreconnect(PVPlayerAsyncTestParam aTestParam, 1180 PVMFFormatType aVideoSinkFormat, 1181 PVMFFormatType aAudioSinkFormat, 1182 uint32 aTestID, 1183 bool aPauseResumeEnable, 1184 bool aSeekEnable, 1185 bool aWaitForEOS, 1186 bool aCloaking, 1187 bool aCancelDuringPrepare, 1188 int aDisconnectState, 1189 bool aDisconnectWhileProc) 1190 : pvplayer_async_test_base(aTestParam) 1191 , iPlayer(NULL) 1192 , iDataSource(NULL) 1193 , iDataSinkVideo(NULL) 1194 , iDataSinkAudio(NULL) 1195 , iIONodeVideo(NULL) 1196 , iIONodeAudio(NULL) 1197 , iMIOFileOutVideo(NULL) 1198 , iMIOFileOutAudio(NULL) 1199 , iCurrentCmdId(0) 1200 , iCancelAllCmdId(0) 1201 , iSessionDuration(0) 1202 , bcloaking(aCloaking) 1203 , oLiveSession(false) 1204 , iProtocolRollOver(false) 1205 , iProtocolRollOverWithUnknownURLType(false) 1206 , iPlayListURL(false) 1207 , iSourceContextData(NULL) 1208 , iStreamDataSource(NULL) 1209 , iDownloadContextDataPVX(NULL) 1210 { 1211 iVideoSinkFormatType = aVideoSinkFormat; 1212 iAudioSinkFormatType = aAudioSinkFormat; 1213 oPauseResumeEnable = aPauseResumeEnable; 1214 oSeekEnable = aSeekEnable; 1215 oWaitForEOS = aWaitForEOS; 1216 oCancelDuringPrepare = aCancelDuringPrepare; 1217 iTestID = aTestID; 1218 iNumPlay = 0; 1219 iTargetNumPlay = 1; 1220 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 1221 iDownloadOnly = iDownloadThenPlay = false; 1222 iDisconnectState = (PVTestState)aDisconnectState; 1223 iDisconnectWhileProc = aDisconnectWhileProc; 1224 iNextState = STATE_RECONNECT; 1225 iNextStateActiveTime = 0; 1226 iNetworkIsDisabled = false; 1227 } 1228 ~pvplayer_async_test_genericnetworkdisconnectreconnect()1229 ~pvplayer_async_test_genericnetworkdisconnectreconnect() {} 1230 1231 void StartTest(); 1232 void Run(); 1233 1234 void CommandCompleted(const PVCmdResponse& aResponse); 1235 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 1236 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 1237 1238 PVTestState iState; 1239 PVTestState iDisconnectState; 1240 bool iDisconnectWhileProc; 1241 bool iNetworkIsDisabled; 1242 1243 PVTestState iNextState; 1244 uint32 iNextStateActiveTime; 1245 1246 PVPlayerInterface* iPlayer; 1247 PVPlayerDataSourceURL* iDataSource; 1248 PVPlayerDataSink* iDataSinkVideo; 1249 PVPlayerDataSink* iDataSinkAudio; 1250 PVMFNodeInterface* iIONodeVideo; 1251 PVMFNodeInterface* iIONodeAudio; 1252 PvmiMIOControl* iMIOFileOutVideo; 1253 PvmiMIOControl* iMIOFileOutAudio; 1254 PVCommandId iCurrentCmdId; 1255 PVCommandId iCancelAllCmdId; 1256 1257 setMultiplePlayMode(uint32 aNum)1258 void setMultiplePlayMode(uint32 aNum) 1259 { 1260 iMultiplePlay = true; 1261 iTargetNumPlay = aNum; 1262 } 1263 setProtocolRollOverMode()1264 void setProtocolRollOverMode() 1265 { 1266 iProtocolRollOver = true; 1267 } 1268 setProtocolRollOverModeWithUnknownURL()1269 void setProtocolRollOverModeWithUnknownURL() 1270 { 1271 iProtocolRollOverWithUnknownURLType = true; 1272 } 1273 setPlayListMode()1274 void setPlayListMode() 1275 { 1276 iPlayListURL = true; 1277 } 1278 disableNetwork()1279 void disableNetwork() 1280 { 1281 1282 #if PVPLAYER_TEST_LINUX_DISABLE_NETWORK 1283 fprintf(iTestMsgOutputFile, "***Disconnecting Network...\n"); 1284 system("/sbin/ifconfig eth0 down"); 1285 #endif 1286 1287 #if PVPLAYER_TEST_WIN32_DISABLE_NETWORK 1288 fprintf(iTestMsgOutputFile, "***Disconnecting Network...\n"); 1289 system("ipconfig /release"); 1290 #endif 1291 iNetworkIsDisabled = true; 1292 } 1293 enableNetwork()1294 void enableNetwork() 1295 { 1296 if (iNetworkIsDisabled) 1297 { 1298 char cmd_str[48] = "/sbin/route add default gw "; 1299 oscl_strcat(cmd_str, DEFAULT_GATEWAY); 1300 #if PVPLAYER_TEST_LINUX_DISABLE_NETWORK 1301 fprintf(iTestMsgOutputFile, "***Reconnecting Network...\n"); 1302 system("/sbin/ifconfig eth0 up"); 1303 system(cmd_str); 1304 #endif 1305 1306 #if PVPLAYER_TEST_WIN32_DISABLE_NETWORK 1307 fprintf(iTestMsgOutputFile, "***Reconnecting Network...\n"); 1308 system("ipconfig /renew"); 1309 #endif 1310 iNetworkIsDisabled = false; 1311 } 1312 } 1313 1314 private: 1315 void HandleSocketNodeErrors(int32 aErr); 1316 void HandleRTSPNodeErrors(int32 aErr); 1317 void HandleStreamingManagerNodeErrors(int32 aErr); 1318 void HandleJitterBufferNodeErrors(int32 aErr); 1319 void HandleMediaLayerNodeErrors(int32 aErr); 1320 void HandleProtocolEngineNodeErrors(int32 aErr); 1321 1322 1323 void PrintMetadataInfo(); 1324 1325 PVMFFormatType iVideoSinkFormatType; 1326 PVMFFormatType iAudioSinkFormatType; 1327 OSCL_wHeapString<OsclMemAllocator> wFileName; 1328 oscl_wchar output[512]; 1329 bool oPauseResumeEnable; 1330 bool oSeekEnable; 1331 bool oCancelDuringPrepare; 1332 bool oWaitForEOS; 1333 uint32 iTestID; 1334 1335 PVPMetadataList iMetadataKeyList; 1336 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 1337 int32 iNumValues; 1338 1339 uint32 iSessionDuration; 1340 bool bcloaking; 1341 bool oLiveSession; 1342 1343 bool iMultiplePlay; 1344 uint32 iNumPlay; 1345 uint32 iTargetNumPlay; 1346 1347 bool iProtocolRollOver; 1348 bool iProtocolRollOverWithUnknownURLType; 1349 bool iPlayListURL; 1350 1351 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 1352 PvmiKvp* iErrorKVP; 1353 PvmiKvp iKVPSetAsync; 1354 OSCL_StackString<128> iKeyStringSetAsync; 1355 PVMFSourceContextData* iSourceContextData; 1356 1357 PVMFStreamingDataSource* iStreamDataSource; 1358 1359 //FTDL 1360 void CreateDownloadDataSource(); 1361 uint8 iPVXFileBuf[4096]; 1362 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 1363 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 1364 int32 iDownloadMaxfilesize; 1365 #if RUN_FASTTRACK_TESTCASES 1366 CPVXInfo iDownloadPvxInfo; 1367 #endif 1368 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 1369 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 1370 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 1371 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 1372 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 1373 bool iDownloadOnly, iDownloadThenPlay; 1374 bool iContentTooLarge; 1375 }; 1376 1377 /*! 1378 * Test cases to test engine behavior when network is disconnected, followed by cancelAllCommands() immediately, 1379 * DURING/RIGHT AFTER various engine commands processing 1380 * - Data Source: Specified by user of test case 1381 * - Data Sink(s): Video[FileOutputNode-test_player_genericcancelall_video.dat]\n 1382 * Audio[FileOutputNode-test_player_genericcancelall_audio.dat] 1383 * - Sequence: 1384 * -# CreatePlayer() 1385 * -# CancelAllCommands() is called after/in one of the following states based on the test case 1386 * -# AddDataSource() 1387 * -# Init() 1388 * -# AddDataSink() (video) 1389 * -# AddDataSink() (audio) 1390 * -# Prepare() 1391 * -# Start() 1392 * -# Play 10 sec 1393 * -# SetPlaybackRange() if seekEnable flag is made true 1394 * -# Pause() if pauseresumeEnable flag is made true 1395 * -# WAIT 10 sec 1396 * -# Resume() 1397 * -# Play until EOS 1398 * -# Stop() 1399 * -# RemoveDataSink() (video) 1400 * -# RemoveDataSink() (audio) 1401 * -# Reset() 1402 * -# RemoveDataSource() 1403 * -# DeletePlayer() 1404 * 1405 */ 1406 class pvplayer_async_test_genericcancelallnetworkdisconnect : public pvplayer_async_test_base 1407 { 1408 public: pvplayer_async_test_genericcancelallnetworkdisconnect(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aPauseResumeEnable,bool aSeekEnable,bool aWaitForEOS,bool aCloaking,bool aCancelDuringPrepare,int lastState,bool aCancelAllWhileProc)1409 pvplayer_async_test_genericcancelallnetworkdisconnect(PVPlayerAsyncTestParam aTestParam, 1410 PVMFFormatType aVideoSinkFormat, 1411 PVMFFormatType aAudioSinkFormat, 1412 uint32 aTestID, 1413 bool aPauseResumeEnable, 1414 bool aSeekEnable, 1415 bool aWaitForEOS, 1416 bool aCloaking, 1417 bool aCancelDuringPrepare, 1418 int lastState, 1419 bool aCancelAllWhileProc) 1420 : pvplayer_async_test_base(aTestParam) 1421 , iPlayer(NULL) 1422 , iDataSource(NULL) 1423 , iDataSinkVideo(NULL) 1424 , iDataSinkAudio(NULL) 1425 , iIONodeVideo(NULL) 1426 , iIONodeAudio(NULL) 1427 , iMIOFileOutVideo(NULL) 1428 , iMIOFileOutAudio(NULL) 1429 , iCurrentCmdId(0) 1430 , iCancelAllCmdId(0) 1431 , iSessionDuration(0) 1432 , bcloaking(aCloaking) 1433 , oLiveSession(false) 1434 , iProtocolRollOver(false) 1435 , iProtocolRollOverWithUnknownURLType(false) 1436 , iPlayListURL(false) 1437 , iSourceContextData(NULL) 1438 , iStreamDataSource(NULL) 1439 , iDownloadContextDataPVX(NULL) 1440 { 1441 iVideoSinkFormatType = aVideoSinkFormat; 1442 iAudioSinkFormatType = aAudioSinkFormat; 1443 oPauseResumeEnable = aPauseResumeEnable; 1444 oSeekEnable = aSeekEnable; 1445 oWaitForEOS = aWaitForEOS; 1446 oCancelDuringPrepare = aCancelDuringPrepare; 1447 iTestID = aTestID; 1448 iNumPlay = 0; 1449 iTargetNumPlay = 1; 1450 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 1451 iDownloadOnly = iDownloadThenPlay = false; 1452 iEndState = (PVTestState)lastState; 1453 iCancelAllWhileProc = aCancelAllWhileProc; 1454 iNetworkIsDisabled = false; 1455 } 1456 ~pvplayer_async_test_genericcancelallnetworkdisconnect()1457 ~pvplayer_async_test_genericcancelallnetworkdisconnect() {} 1458 1459 void StartTest(); 1460 void Run(); 1461 1462 void CommandCompleted(const PVCmdResponse& aResponse); 1463 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 1464 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 1465 1466 1467 PVTestState iState; 1468 PVTestState iEndState; 1469 bool iCancelAllWhileProc; 1470 bool iNetworkIsDisabled; 1471 1472 PVPlayerInterface* iPlayer; 1473 PVPlayerDataSourceURL* iDataSource; 1474 PVPlayerDataSink* iDataSinkVideo; 1475 PVPlayerDataSink* iDataSinkAudio; 1476 PVMFNodeInterface* iIONodeVideo; 1477 PVMFNodeInterface* iIONodeAudio; 1478 PvmiMIOControl* iMIOFileOutVideo; 1479 PvmiMIOControl* iMIOFileOutAudio; 1480 PVCommandId iCurrentCmdId; 1481 PVCommandId iCancelAllCmdId; 1482 1483 setMultiplePlayMode(uint32 aNum)1484 void setMultiplePlayMode(uint32 aNum) 1485 { 1486 iMultiplePlay = true; 1487 iTargetNumPlay = aNum; 1488 } 1489 setProtocolRollOverMode()1490 void setProtocolRollOverMode() 1491 { 1492 iProtocolRollOver = true; 1493 } 1494 setProtocolRollOverModeWithUnknownURL()1495 void setProtocolRollOverModeWithUnknownURL() 1496 { 1497 iProtocolRollOverWithUnknownURLType = true; 1498 } 1499 setPlayListMode()1500 void setPlayListMode() 1501 { 1502 iPlayListURL = true; 1503 } 1504 disableNetwork()1505 void disableNetwork() 1506 { 1507 1508 #if PVPLAYER_TEST_LINUX_DISABLE_NETWORK 1509 fprintf(iTestMsgOutputFile, "***Disconnecting Network...\n"); 1510 system("/sbin/ifconfig eth0 down"); 1511 #endif 1512 1513 #if PVPLAYER_TEST_WIN32_DISABLE_NETWORK 1514 fprintf(iTestMsgOutputFile, "***Disconnecting Network...\n"); 1515 system("ipconfig /release"); 1516 #endif 1517 iNetworkIsDisabled = true; 1518 1519 } 1520 enableNetwork()1521 void enableNetwork() 1522 { 1523 if (iNetworkIsDisabled) 1524 { 1525 char cmd_str[48] = "/sbin/route add default gw "; 1526 oscl_strcat(cmd_str, DEFAULT_GATEWAY); 1527 1528 #if PVPLAYER_TEST_LINUX_DISABLE_NETWORK 1529 fprintf(iTestMsgOutputFile, "***Reconnecting Network...\n"); 1530 system("/sbin/ifconfig eth0 up"); 1531 system(cmd_str); 1532 #endif 1533 1534 #if PVPLAYER_TEST_WIN32_DISABLE_NETWORK 1535 fprintf(iTestMsgOutputFile, "***Reconnecting Network...\n"); 1536 system("ipconfig /renew"); 1537 #endif 1538 iNetworkIsDisabled = false; 1539 } 1540 } 1541 1542 private: 1543 void HandleSocketNodeErrors(int32 aErr); 1544 void HandleRTSPNodeErrors(int32 aErr); 1545 void HandleStreamingManagerNodeErrors(int32 aErr); 1546 void HandleJitterBufferNodeErrors(int32 aErr); 1547 void HandleMediaLayerNodeErrors(int32 aErr); 1548 void HandleProtocolEngineNodeErrors(int32 aErr); 1549 1550 1551 void PrintMetadataInfo(); 1552 1553 PVMFFormatType iVideoSinkFormatType; 1554 PVMFFormatType iAudioSinkFormatType; 1555 OSCL_wHeapString<OsclMemAllocator> wFileName; 1556 oscl_wchar output[512]; 1557 bool oPauseResumeEnable; 1558 bool oSeekEnable; 1559 bool oCancelDuringPrepare; 1560 bool oWaitForEOS; 1561 uint32 iTestID; 1562 1563 PVPMetadataList iMetadataKeyList; 1564 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 1565 int32 iNumValues; 1566 1567 uint32 iSessionDuration; 1568 bool bcloaking; 1569 bool oLiveSession; 1570 1571 bool iMultiplePlay; 1572 uint32 iNumPlay; 1573 uint32 iTargetNumPlay; 1574 1575 bool iProtocolRollOver; 1576 bool iProtocolRollOverWithUnknownURLType; 1577 bool iPlayListURL; 1578 1579 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 1580 PvmiKvp* iErrorKVP; 1581 PvmiKvp iKVPSetAsync; 1582 OSCL_StackString<128> iKeyStringSetAsync; 1583 PVMFSourceContextData* iSourceContextData; 1584 1585 PVMFStreamingDataSource* iStreamDataSource; 1586 1587 //FTDL 1588 void CreateDownloadDataSource(); 1589 uint8 iPVXFileBuf[4096]; 1590 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 1591 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 1592 int32 iDownloadMaxfilesize; 1593 #if RUN_FASTTRACK_TESTCASES 1594 CPVXInfo iDownloadPvxInfo; 1595 #endif 1596 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 1597 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 1598 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 1599 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 1600 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 1601 bool iDownloadOnly, iDownloadThenPlay; 1602 bool iContentTooLarge; 1603 }; 1604 1605 /*! 1606 * A test case to test Play -> pause -> seek -> Resume -> network Disconnection -> CancelAllCmds 1607 * when playing an local/PDL/rtsp url 1608 * - Data Source: Specified by user of test case 1609 * - Data Sink(s): Video[FileOutputNode-test_player_genericplaypauserepositionresumenwdisconnect_video.dat]\n 1610 * Audio[FileOutputNode-test_player_genericplaypauserepositionresumenwdisconnect_audio.dat] 1611 * - Sequence: 1612 * -# CreatePlayer() 1613 * -# AddDataSource() 1614 * -# Init() 1615 * -# AddDataSink() (video) 1616 * -# AddDataSink() (audio) 1617 * -# Prepare() 1618 * -# Start() 1619 * -# Play 10 sec 1620 * -# Pause() 1621 * -# WAIT 5 sec 1622 * -# SetPlaybackRange() 1623 * -# WAIT 5 sec 1624 * -# Resume() 1625 * -# Network disconnection followed by CancelAllCmds() 1626 * -# RemoveDataSink() (video) 1627 * -# RemoveDataSink() (audio) 1628 * -# Reset() 1629 * -# RemoveDataSource() 1630 * -# DeletePlayer() 1631 * 1632 */ 1633 class pvplayer_async_test_genericplaypauserepositionresumenwdisconnectcancelalltest : public pvplayer_async_test_base 1634 { 1635 public: pvplayer_async_test_genericplaypauserepositionresumenwdisconnectcancelalltest(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aWaitForEOS,bool aCloaking,bool aCancelDuringPrepare)1636 pvplayer_async_test_genericplaypauserepositionresumenwdisconnectcancelalltest(PVPlayerAsyncTestParam aTestParam, 1637 PVMFFormatType aVideoSinkFormat, 1638 PVMFFormatType aAudioSinkFormat, 1639 uint32 aTestID, 1640 bool aWaitForEOS, 1641 bool aCloaking, 1642 bool aCancelDuringPrepare) 1643 : pvplayer_async_test_base(aTestParam) 1644 , iPlayer(NULL) 1645 , iDataSource(NULL) 1646 , iDataSinkVideo(NULL) 1647 , iDataSinkAudio(NULL) 1648 , iIONodeVideo(NULL) 1649 , iIONodeAudio(NULL) 1650 , iMIOFileOutVideo(NULL) 1651 , iMIOFileOutAudio(NULL) 1652 , iCurrentCmdId(0) 1653 , iCancelAllCmdId(0) 1654 , iSeekAfterEOSEnable(false) 1655 , iSessionDuration(0) 1656 , bcloaking(aCloaking) 1657 , oLiveSession(false) 1658 , iProtocolRollOver(false) 1659 , iProtocolRollOverWithUnknownURLType(false) 1660 , iPlayListURL(false) 1661 , iStreamDataSource(NULL) 1662 , iSourceContextData(NULL) 1663 , iDownloadContextDataPVX(NULL) 1664 { 1665 iVideoSinkFormatType = aVideoSinkFormat; 1666 iAudioSinkFormatType = aAudioSinkFormat; 1667 oWaitForEOS = aWaitForEOS; 1668 oCancelDuringPrepare = aCancelDuringPrepare; 1669 iTestID = aTestID; 1670 iNumPlay = 0; 1671 iTargetNumPlay = 1; 1672 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 1673 iDownloadOnly = iDownloadThenPlay = false; 1674 iPauseDone = false; 1675 iSeekDone = false; 1676 } 1677 ~pvplayer_async_test_genericplaypauserepositionresumenwdisconnectcancelalltest()1678 ~pvplayer_async_test_genericplaypauserepositionresumenwdisconnectcancelalltest() {} 1679 1680 void StartTest(); 1681 void Run(); 1682 1683 void CommandCompleted(const PVCmdResponse& aResponse); 1684 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 1685 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 1686 1687 /*enum PVTestState 1688 { 1689 STATE_CREATE, 1690 STATE_QUERYINTERFACE, 1691 STATE_ADDDATASOURCE, 1692 STATE_CONFIGPARAMS, 1693 STATE_INIT, 1694 STATE_GETMETADATAKEYLIST, 1695 STATE_GETMETADATAVALUELIST, 1696 STATE_ADDDATASINK_VIDEO, 1697 STATE_ADDDATASINK_AUDIO, 1698 STATE_PREPARE, 1699 STATE_WAIT_FOR_DATAREADY, 1700 STATE_WAIT_FOR_BUFFCOMPLETE, 1701 STATE_CANCELALL, 1702 STATE_WAIT_FOR_CANCELALL, 1703 STATE_START, 1704 STATE_SETPLAYBACKRANGE, 1705 STATE_PAUSE, 1706 STATE_RESUME, 1707 STATE_EOSNOTREACHED, 1708 STATE_STOP, 1709 STATE_REMOVEDATASINK_VIDEO, 1710 STATE_REMOVEDATASINK_AUDIO, 1711 STATE_RESET, 1712 STATE_REMOVEDATASOURCE, 1713 STATE_CLEANUPANDCOMPLETE 1714 };*/ 1715 1716 PVTestState iState; 1717 1718 PVPlayerInterface* iPlayer; 1719 PVPlayerDataSourceURL* iDataSource; 1720 PVPlayerDataSink* iDataSinkVideo; 1721 PVPlayerDataSink* iDataSinkAudio; 1722 PVMFNodeInterface* iIONodeVideo; 1723 PVMFNodeInterface* iIONodeAudio; 1724 PvmiMIOControl* iMIOFileOutVideo; 1725 PvmiMIOControl* iMIOFileOutAudio; 1726 PVCommandId iCurrentCmdId; 1727 PVCommandId iCancelAllCmdId; 1728 setMultiplePlayMode(uint32 aNum)1729 void setMultiplePlayMode(uint32 aNum) 1730 { 1731 iMultiplePlay = true; 1732 iTargetNumPlay = aNum; 1733 } 1734 setProtocolRollOverMode()1735 void setProtocolRollOverMode() 1736 { 1737 iProtocolRollOver = true; 1738 } 1739 setProtocolRollOverModeWithUnknownURL()1740 void setProtocolRollOverModeWithUnknownURL() 1741 { 1742 iProtocolRollOverWithUnknownURLType = true; 1743 } 1744 setPlayListMode()1745 void setPlayListMode() 1746 { 1747 iPlayListURL = true; 1748 } 1749 setSeekAfterEOSMode()1750 void setSeekAfterEOSMode() 1751 { 1752 iSeekAfterEOSEnable = true; 1753 } 1754 disableNetwork()1755 void disableNetwork() 1756 { 1757 1758 #if PVPLAYER_TEST_LINUX_DISABLE_NETWORK 1759 fprintf(iTestMsgOutputFile, "***Disconnecting Network...\n"); 1760 system("/sbin/ifconfig eth0 down"); 1761 #endif 1762 1763 #if PVPLAYER_TEST_WIN32_DISABLE_NETWORK 1764 fprintf(iTestMsgOutputFile, "***Disconnecting Network...\n"); 1765 system("ipconfig /release"); 1766 #endif 1767 1768 } 1769 enableNetwork()1770 void enableNetwork() 1771 { 1772 char cmd_str[48] = "/sbin/route add default gw "; 1773 oscl_strcat(cmd_str, DEFAULT_GATEWAY); 1774 1775 #if PVPLAYER_TEST_LINUX_DISABLE_NETWORK 1776 fprintf(iTestMsgOutputFile, "***Reconnecting Network...\n"); 1777 system("/sbin/ifconfig eth0 up"); 1778 system(cmd_str); 1779 #endif 1780 1781 #if PVPLAYER_TEST_WIN32_DISABLE_NETWORK 1782 fprintf(iTestMsgOutputFile, "***Reconnecting Network...\n"); 1783 system("ipconfig /renew"); 1784 #endif 1785 1786 } 1787 1788 private: 1789 void HandleSocketNodeErrors(int32 aErr); 1790 void HandleRTSPNodeErrors(int32 aErr); 1791 void HandleStreamingManagerNodeErrors(int32 aErr); 1792 void HandleJitterBufferNodeErrors(int32 aErr); 1793 void HandleMediaLayerNodeErrors(int32 aErr); 1794 void HandleProtocolEngineNodeErrors(int32 aErr); 1795 1796 void PrintMetadataInfo(); 1797 1798 PVMFFormatType iVideoSinkFormatType; 1799 PVMFFormatType iAudioSinkFormatType; 1800 OSCL_wHeapString<OsclMemAllocator> wFileName; 1801 oscl_wchar output[512]; 1802 bool oCancelDuringPrepare; 1803 bool oWaitForEOS; 1804 uint32 iTestID; 1805 bool iSeekAfterEOSEnable; 1806 1807 PVPMetadataList iMetadataKeyList; 1808 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 1809 int32 iNumValues; 1810 1811 uint32 iSessionDuration; 1812 bool bcloaking; 1813 bool oLiveSession; 1814 1815 bool iMultiplePlay; 1816 uint32 iNumPlay; 1817 uint32 iTargetNumPlay; 1818 bool iPauseDone; 1819 bool iSeekDone; 1820 1821 bool iProtocolRollOver; 1822 bool iProtocolRollOverWithUnknownURLType; 1823 bool iPlayListURL; 1824 1825 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 1826 PvmiKvp* iErrorKVP; 1827 PvmiKvp iKVPSetAsync; 1828 OSCL_StackString<128> iKeyStringSetAsync; 1829 1830 PVMFStreamingDataSource* iStreamDataSource; 1831 1832 PVMFSourceContextData* iSourceContextData; 1833 1834 //FTDL 1835 void CreateDownloadDataSource(); 1836 uint8 iPVXFileBuf[4096]; 1837 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 1838 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 1839 int32 iDownloadMaxfilesize; 1840 #if RUN_FASTTRACK_TESTCASES 1841 CPVXInfo iDownloadPvxInfo; 1842 #endif 1843 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 1844 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 1845 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 1846 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 1847 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 1848 bool iDownloadOnly, iDownloadThenPlay; 1849 bool iContentTooLarge; 1850 }; 1851 1852 /*! 1853 * A test case to verify PAN-13 fix that is to check if PVMFErrCorrupt is 1854 * notified after Init then calling AdddataSource and init again should notify 1855 * same error PVMFErrCorrupt instead of PVMFErrBusy; when playing an local/PDL/rtsp url 1856 * - Data Source: Specified by user of test case 1857 * - Data Sink(s): Video[FileOutputNode-test_player_genericpvmferrorcorruptrenotified_video.dat]\n 1858 * Audio[FileOutputNode-test_player_genericpvmferrorcorruptrenotified_audio.dat] 1859 * - Sequence: 1860 * -# CreatePlayer() 1861 * -# AddDataSource() 1862 * -# Init() PVMFErrCorrupt is notified in callback of init 1863 * -# RemoveDataSource() 1864 * -# AddDataSource() 1865 * -# Init() PVMFErrCorrupt is notified in callback of init 1866 * -# RemoveDataSource() 1867 * -# DeletePlayer() 1868 * 1869 */ 1870 class pvplayer_async_test_genericpvmferrorcorruptrenotified : public pvplayer_async_test_base 1871 { 1872 public: pvplayer_async_test_genericpvmferrorcorruptrenotified(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aCloaking)1873 pvplayer_async_test_genericpvmferrorcorruptrenotified(PVPlayerAsyncTestParam aTestParam, 1874 PVMFFormatType aVideoSinkFormat, 1875 PVMFFormatType aAudioSinkFormat, 1876 uint32 aTestID, 1877 bool aCloaking) 1878 : pvplayer_async_test_base(aTestParam) 1879 , iPlayer(NULL) 1880 , iDataSource(NULL) 1881 , iDataSinkVideo(NULL) 1882 , iDataSinkAudio(NULL) 1883 , iIONodeVideo(NULL) 1884 , iIONodeAudio(NULL) 1885 , iMIOFileOutVideo(NULL) 1886 , iMIOFileOutAudio(NULL) 1887 , iCurrentCmdId(0) 1888 , iCancelAllCmdId(0) 1889 , iSessionDuration(0) 1890 , bcloaking(aCloaking) 1891 , oLiveSession(false) 1892 , iProtocolRollOver(false) 1893 , iProtocolRollOverWithUnknownURLType(false) 1894 , iPlayListURL(false) 1895 , iStreamDataSource(NULL) 1896 , iSourceContextData(NULL) 1897 , iDownloadContextDataPVX(NULL) 1898 { 1899 iVideoSinkFormatType = aVideoSinkFormat; 1900 iAudioSinkFormatType = aAudioSinkFormat; 1901 iTestID = aTestID; 1902 iNumPlay = 0; 1903 iTargetNumPlay = 2;// 2 times PVMFErrCorrupt is required 1904 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 1905 iDownloadOnly = iDownloadThenPlay = false; 1906 iOverflow = false; 1907 } 1908 ~pvplayer_async_test_genericpvmferrorcorruptrenotified()1909 ~pvplayer_async_test_genericpvmferrorcorruptrenotified() {} 1910 1911 void StartTest(); 1912 void Run(); 1913 1914 void CommandCompleted(const PVCmdResponse& aResponse); 1915 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 1916 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 1917 1918 /*enum PVTestState 1919 { 1920 STATE_CREATE, 1921 STATE_QUERYINTERFACE, 1922 STATE_ADDDATASOURCE, 1923 STATE_CONFIGPARAMS, 1924 STATE_INIT, 1925 STATE_GETMETADATAKEYLIST, 1926 STATE_GETMETADATAVALUELIST, 1927 STATE_ADDDATASINK_VIDEO, 1928 STATE_ADDDATASINK_AUDIO, 1929 STATE_PREPARE, 1930 STATE_CANCELALL, 1931 STATE_WAIT_FOR_CANCELALL, 1932 STATE_START, 1933 STATE_SETPLAYBACKRANGE, 1934 STATE_PAUSE, 1935 STATE_RESUME, 1936 STATE_EOSNOTREACHED, 1937 STATE_STOP, 1938 STATE_REMOVEDATASINK_VIDEO, 1939 STATE_REMOVEDATASINK_AUDIO, 1940 STATE_RESET, 1941 STATE_REMOVEDATASOURCE, 1942 STATE_CLEANUPANDCOMPLETE 1943 };*/ 1944 1945 PVTestState iState; 1946 1947 PVPlayerInterface* iPlayer; 1948 PVPlayerDataSourceURL* iDataSource; 1949 PVPlayerDataSink* iDataSinkVideo; 1950 PVPlayerDataSink* iDataSinkAudio; 1951 PVMFNodeInterface* iIONodeVideo; 1952 PVMFNodeInterface* iIONodeAudio; 1953 PvmiMIOControl* iMIOFileOutVideo; 1954 PvmiMIOControl* iMIOFileOutAudio; 1955 PVCommandId iCurrentCmdId; 1956 PVCommandId iCancelAllCmdId; 1957 setMultiplePlayMode(uint32 aNum)1958 void setMultiplePlayMode(uint32 aNum) 1959 { 1960 iMultiplePlay = true; 1961 iTargetNumPlay = aNum; 1962 } 1963 setProtocolRollOverMode()1964 void setProtocolRollOverMode() 1965 { 1966 iProtocolRollOver = true; 1967 } 1968 setProtocolRollOverModeWithUnknownURL()1969 void setProtocolRollOverModeWithUnknownURL() 1970 { 1971 iProtocolRollOverWithUnknownURLType = true; 1972 } 1973 setPlayListMode()1974 void setPlayListMode() 1975 { 1976 iPlayListURL = true; 1977 } 1978 1979 private: 1980 void HandleSocketNodeErrors(int32 aErr); 1981 void HandleRTSPNodeErrors(int32 aErr); 1982 void HandleStreamingManagerNodeErrors(int32 aErr); 1983 void HandleJitterBufferNodeErrors(int32 aErr); 1984 void HandleMediaLayerNodeErrors(int32 aErr); 1985 void HandleProtocolEngineNodeErrors(int32 aErr); 1986 1987 void PrintMetadataInfo(); 1988 1989 PVMFFormatType iVideoSinkFormatType; 1990 PVMFFormatType iAudioSinkFormatType; 1991 OSCL_wHeapString<OsclMemAllocator> wFileName; 1992 oscl_wchar output[512]; 1993 uint32 iTestID; 1994 1995 PVPMetadataList iMetadataKeyList; 1996 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 1997 int32 iNumValues; 1998 1999 uint32 iSessionDuration; 2000 bool bcloaking; 2001 bool oLiveSession; 2002 2003 bool iMultiplePlay; 2004 uint32 iNumPlay; 2005 uint32 iTargetNumPlay; 2006 2007 bool iProtocolRollOver; 2008 bool iProtocolRollOverWithUnknownURLType; 2009 bool iPlayListURL; 2010 2011 bool iOverflow; 2012 2013 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 2014 PvmiKvp* iErrorKVP; 2015 PvmiKvp iKVPSetAsync; 2016 OSCL_StackString<128> iKeyStringSetAsync; 2017 2018 PVMFStreamingDataSource* iStreamDataSource; 2019 PVMFSourceContextData* iSourceContextData; 2020 2021 //FTDL 2022 void CreateDownloadDataSource(); 2023 uint8 iPVXFileBuf[4096]; 2024 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 2025 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 2026 int32 iDownloadMaxfilesize; 2027 #if RUN_FASTTRACK_TESTCASES 2028 CPVXInfo iDownloadPvxInfo; 2029 #endif 2030 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 2031 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 2032 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 2033 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 2034 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 2035 bool iDownloadOnly, iDownloadThenPlay; 2036 bool iContentTooLarge; 2037 }; 2038 2039 /*! 2040 * A test case to test fetching meta data during play, when playing an local/PDL/rtsp url 2041 * - Data Source: Specified by user of test case 2042 * - Data Sink(s): Video[FileOutputNode-test_player_genericopenplaygetmetadata_video.dat]\n 2043 * Audio[FileOutputNode-test_player_genericopenplaygetmetadata_audio.dat] 2044 * - Sequence: 2045 * -# CreatePlayer() 2046 * -# AddDataSource() 2047 * -# Init() 2048 * -# AddDataSink() (video) 2049 * -# AddDataSink() (audio) 2050 * -# Prepare() 2051 * -# Start() 2052 * -# Play 10 sec 2053 * -# getmetadata and print 2054 * -# Play until EOS 2055 * -# Stop() 2056 * -# RemoveDataSink() (video) 2057 * -# RemoveDataSink() (audio) 2058 * -# Reset() 2059 * -# RemoveDataSource() 2060 * -# DeletePlayer() 2061 * 2062 */ 2063 class pvplayer_async_test_genericopenplaygetmetadatatest : public pvplayer_async_test_base 2064 { 2065 public: pvplayer_async_test_genericopenplaygetmetadatatest(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aWaitForEOS,bool aCloaking)2066 pvplayer_async_test_genericopenplaygetmetadatatest(PVPlayerAsyncTestParam aTestParam, 2067 PVMFFormatType aVideoSinkFormat, 2068 PVMFFormatType aAudioSinkFormat, 2069 uint32 aTestID, 2070 bool aWaitForEOS, 2071 bool aCloaking) 2072 : pvplayer_async_test_base(aTestParam) 2073 , iPlayer(NULL) 2074 , iDataSource(NULL) 2075 , iDataSinkVideo(NULL) 2076 , iDataSinkAudio(NULL) 2077 , iIONodeVideo(NULL) 2078 , iIONodeAudio(NULL) 2079 , iMIOFileOutVideo(NULL) 2080 , iMIOFileOutAudio(NULL) 2081 , iCurrentCmdId(0) 2082 , iCancelAllCmdId(0) 2083 , iSessionDuration(0) 2084 , bcloaking(aCloaking) 2085 , oLiveSession(false) 2086 , iProtocolRollOverWithUnknownURLType(false) 2087 , iPlayListURL(false) 2088 , iStreamDataSource(NULL) 2089 , iSourceContextData(NULL) 2090 , iDownloadContextDataPVX(NULL) 2091 { 2092 iVideoSinkFormatType = aVideoSinkFormat; 2093 iAudioSinkFormatType = aAudioSinkFormat; 2094 oWaitForEOS = aWaitForEOS; 2095 iTestID = aTestID; 2096 iNumPlay = 0; 2097 iTargetNumPlay = 1; 2098 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 2099 iDownloadOnly = iDownloadThenPlay = false; 2100 } 2101 ~pvplayer_async_test_genericopenplaygetmetadatatest()2102 ~pvplayer_async_test_genericopenplaygetmetadatatest() {} 2103 2104 void StartTest(); 2105 void Run(); 2106 2107 void CommandCompleted(const PVCmdResponse& aResponse); 2108 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 2109 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 2110 2111 enum PVTestState 2112 { 2113 STATE_CREATE, 2114 STATE_QUERYINTERFACE, 2115 STATE_ADDDATASOURCE, 2116 STATE_CONFIGPARAMS, 2117 STATE_INIT, 2118 STATE_GETMETADATAKEYLIST, 2119 STATE_GETMETADATAVALUELIST, 2120 STATE_ADDDATASINK_VIDEO, 2121 STATE_ADDDATASINK_AUDIO, 2122 STATE_PREPARE, 2123 STATE_WAIT_FOR_DATAREADY, 2124 STATE_WAIT_FOR_BUFFCOMPLETE, 2125 STATE_CANCELALL, 2126 STATE_WAIT_FOR_CANCELALL, 2127 STATE_START, 2128 STATE_SETPLAYBACKRANGE, 2129 STATE_PAUSE, 2130 STATE_RESUME, 2131 STATE_EOSNOTREACHED, 2132 STATE_STOP, 2133 STATE_REMOVEDATASINK_VIDEO, 2134 STATE_REMOVEDATASINK_AUDIO, 2135 STATE_RESET, 2136 STATE_REMOVEDATASOURCE, 2137 STATE_CLEANUPANDCOMPLETE, 2138 STATE_GETMETADATAKEYLIST1, 2139 STATE_GETMETADATAVALUELIST1 2140 }; 2141 2142 PVTestState iState; 2143 2144 PVPlayerInterface* iPlayer; 2145 PVPlayerDataSourceURL* iDataSource; 2146 PVPlayerDataSink* iDataSinkVideo; 2147 PVPlayerDataSink* iDataSinkAudio; 2148 PVMFNodeInterface* iIONodeVideo; 2149 PVMFNodeInterface* iIONodeAudio; 2150 PvmiMIOControl* iMIOFileOutVideo; 2151 PvmiMIOControl* iMIOFileOutAudio; 2152 PVCommandId iCurrentCmdId; 2153 PVCommandId iCancelAllCmdId; 2154 setMultiplePlayMode(uint32 aNum)2155 void setMultiplePlayMode(uint32 aNum) 2156 { 2157 iMultiplePlay = true; 2158 iTargetNumPlay = aNum; 2159 } 2160 setProtocolRollOverModeWithUnknownURL()2161 void setProtocolRollOverModeWithUnknownURL() 2162 { 2163 iProtocolRollOverWithUnknownURLType = true; 2164 } 2165 setPlayListMode()2166 void setPlayListMode() 2167 { 2168 iPlayListURL = true; 2169 } 2170 2171 private: 2172 void HandleSocketNodeErrors(int32 aErr); 2173 void HandleRTSPNodeErrors(int32 aErr); 2174 void HandleStreamingManagerNodeErrors(int32 aErr); 2175 void HandleJitterBufferNodeErrors(int32 aErr); 2176 void HandleMediaLayerNodeErrors(int32 aErr); 2177 void HandleProtocolEngineNodeErrors(int32 aErr); 2178 2179 void PrintMetadataInfo(); 2180 2181 PVMFFormatType iVideoSinkFormatType; 2182 PVMFFormatType iAudioSinkFormatType; 2183 OSCL_wHeapString<OsclMemAllocator> wFileName; 2184 oscl_wchar output[512]; 2185 bool oWaitForEOS; 2186 uint32 iTestID; 2187 2188 PVPMetadataList iMetadataKeyList; 2189 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 2190 int32 iNumValues; 2191 2192 uint32 iSessionDuration; 2193 bool bcloaking; 2194 bool oLiveSession; 2195 2196 bool iMultiplePlay; 2197 uint32 iNumPlay; 2198 uint32 iTargetNumPlay; 2199 2200 bool iProtocolRollOver; 2201 bool iProtocolRollOverWithUnknownURLType; 2202 bool iPlayListURL; 2203 2204 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 2205 PvmiKvp* iErrorKVP; 2206 PvmiKvp iKVPSetAsync; 2207 OSCL_StackString<128> iKeyStringSetAsync; 2208 2209 PVMFStreamingDataSource* iStreamDataSource; 2210 2211 PVMFSourceContextData* iSourceContextData; 2212 2213 //FTDL 2214 void CreateDownloadDataSource(); 2215 uint8 iPVXFileBuf[4096]; 2216 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 2217 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 2218 int32 iDownloadMaxfilesize; 2219 #if RUN_FASTTRACK_TESTCASES 2220 CPVXInfo iDownloadPvxInfo; 2221 #endif 2222 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 2223 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 2224 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 2225 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 2226 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 2227 bool iDownloadOnly, iDownloadThenPlay; 2228 bool iContentTooLarge; 2229 }; 2230 2231 /*! 2232 * A test case to check whether meta data contains any picture, if yes then retrieve and save 2233 * while playing a local, PDL or streaming source 2234 * - Data Source: Specified by user of test case 2235 * - Data Sink(s): Video[FileOutputNode-test_player_genericopenplaygetmetadatapic_video.dat]\n 2236 * Audio[FileOutputNode-test_player_genericopenplaygetmetadatapic_audio.dat] 2237 * - Sequence: 2238 * -# CreatePlayer() 2239 * -# AddDataSource() 2240 * -# Init() 2241 * -# AddDataSink() (video) 2242 * -# AddDataSink() (audio) 2243 * -# Prepare() 2244 * -# Start() 2245 * -# Stop() 2246 * -# RemoveDataSink() (video) 2247 * -# RemoveDataSink() (audio) 2248 * -# Reset() 2249 * -# RemoveDataSource() 2250 * -# DeletePlayer() 2251 * 2252 */ 2253 class pvplayer_async_test_genericopengetmetadatapictest : public pvplayer_async_test_base 2254 { 2255 public: pvplayer_async_test_genericopengetmetadatapictest(PVPlayerAsyncTestParam aTestParam,PVMFFormatType aVideoSinkFormat,PVMFFormatType aAudioSinkFormat,uint32 aTestID,bool aWaitForEOS,bool aCloaking)2256 pvplayer_async_test_genericopengetmetadatapictest(PVPlayerAsyncTestParam aTestParam, 2257 PVMFFormatType aVideoSinkFormat, 2258 PVMFFormatType aAudioSinkFormat, 2259 uint32 aTestID, 2260 bool aWaitForEOS, 2261 bool aCloaking) 2262 : pvplayer_async_test_base(aTestParam) 2263 , iPlayer(NULL) 2264 , iDataSource(NULL) 2265 , iDataSinkVideo(NULL) 2266 , iDataSinkAudio(NULL) 2267 , iIONodeVideo(NULL) 2268 , iIONodeAudio(NULL) 2269 , iMIOFileOutVideo(NULL) 2270 , iMIOFileOutAudio(NULL) 2271 , iCurrentCmdId(0) 2272 , iCancelAllCmdId(0) 2273 , iSessionDuration(0) 2274 , bcloaking(aCloaking) 2275 , oLiveSession(false) 2276 , iProtocolRollOverWithUnknownURLType(false) 2277 , iPlayListURL(false) 2278 , iStreamDataSource(NULL) 2279 , iSourceContextData(NULL) 2280 , iDownloadContextDataPVX(NULL) 2281 { 2282 iVideoSinkFormatType = aVideoSinkFormat; 2283 iAudioSinkFormatType = aAudioSinkFormat; 2284 oWaitForEOS = aWaitForEOS; 2285 iTestID = aTestID; 2286 iNumPlay = 0; 2287 iTargetNumPlay = 1; 2288 iNumBufferingStart = iNumBufferingComplete = iNumUnderflow = iNumDataReady = iNumEOS = 0; 2289 iDownloadOnly = iDownloadThenPlay = false; 2290 } 2291 ~pvplayer_async_test_genericopengetmetadatapictest()2292 ~pvplayer_async_test_genericopengetmetadatapictest() {} 2293 2294 void StartTest(); 2295 void Run(); 2296 2297 void CommandCompleted(const PVCmdResponse& aResponse); 2298 void HandleErrorEvent(const PVAsyncErrorEvent& aEvent); 2299 void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent); 2300 2301 enum PVTestState 2302 { 2303 STATE_CREATE, 2304 STATE_QUERYINTERFACE, 2305 STATE_ADDDATASOURCE, 2306 STATE_CONFIGPARAMS, 2307 STATE_INIT, 2308 STATE_GETMETADATAKEYLIST, 2309 STATE_GETMETADATAVALUELIST, 2310 STATE_ADDDATASINK_VIDEO, 2311 STATE_ADDDATASINK_AUDIO, 2312 STATE_PREPARE, 2313 STATE_WAIT_FOR_DATAREADY, 2314 STATE_WAIT_FOR_BUFFCOMPLETE, 2315 STATE_CANCELALL, 2316 STATE_WAIT_FOR_CANCELALL, 2317 STATE_START, 2318 STATE_SETPLAYBACKRANGE, 2319 STATE_PAUSE, 2320 STATE_RESUME, 2321 STATE_EOSNOTREACHED, 2322 STATE_STOP, 2323 STATE_REMOVEDATASINK_VIDEO, 2324 STATE_REMOVEDATASINK_AUDIO, 2325 STATE_RESET, 2326 STATE_REMOVEDATASOURCE, 2327 STATE_CLEANUPANDCOMPLETE, 2328 STATE_GETMETADATAKEYLIST1, 2329 STATE_GETMETADATAVALUELIST1 2330 }; 2331 2332 PVTestState iState; 2333 2334 PVPlayerInterface* iPlayer; 2335 PVPlayerDataSourceURL* iDataSource; 2336 PVPlayerDataSink* iDataSinkVideo; 2337 PVPlayerDataSink* iDataSinkAudio; 2338 PVMFNodeInterface* iIONodeVideo; 2339 PVMFNodeInterface* iIONodeAudio; 2340 PvmiMIOControl* iMIOFileOutVideo; 2341 PvmiMIOControl* iMIOFileOutAudio; 2342 PVCommandId iCurrentCmdId; 2343 PVCommandId iCancelAllCmdId; 2344 setMultiplePlayMode(uint32 aNum)2345 void setMultiplePlayMode(uint32 aNum) 2346 { 2347 iMultiplePlay = true; 2348 iTargetNumPlay = aNum; 2349 } 2350 setPlayListMode()2351 void setPlayListMode() 2352 { 2353 iPlayListURL = true; 2354 } 2355 2356 private: 2357 void HandleSocketNodeErrors(int32 aErr); 2358 void HandleRTSPNodeErrors(int32 aErr); 2359 void HandleStreamingManagerNodeErrors(int32 aErr); 2360 void HandleJitterBufferNodeErrors(int32 aErr); 2361 void HandleMediaLayerNodeErrors(int32 aErr); 2362 void HandleProtocolEngineNodeErrors(int32 aErr); 2363 2364 void PrintMetadataInfo(); 2365 2366 PVMFFormatType iVideoSinkFormatType; 2367 PVMFFormatType iAudioSinkFormatType; 2368 OSCL_wHeapString<OsclMemAllocator> wFileName; 2369 oscl_wchar output[512]; 2370 bool oWaitForEOS; 2371 uint32 iTestID; 2372 2373 PVPMetadataList iMetadataKeyList; 2374 Oscl_Vector<PvmiKvp, OsclMemAllocator> iMetadataValueList; 2375 int32 iNumValues; 2376 2377 uint32 iSessionDuration; 2378 bool bcloaking; 2379 bool oLiveSession; 2380 2381 bool iMultiplePlay; 2382 uint32 iNumPlay; 2383 uint32 iTargetNumPlay; 2384 2385 bool iProtocolRollOver; 2386 bool iProtocolRollOverWithUnknownURLType; 2387 bool iPlayListURL; 2388 2389 PvmiCapabilityAndConfig* iPlayerCapConfigIF; 2390 PvmiKvp* iErrorKVP; 2391 PvmiKvp iKVPSetAsync; 2392 OSCL_StackString<128> iKeyStringSetAsync; 2393 2394 PVMFStreamingDataSource* iStreamDataSource; 2395 2396 PVMFSourceContextData* iSourceContextData; 2397 2398 //FTDL 2399 void CreateDownloadDataSource(); 2400 uint8 iPVXFileBuf[4096]; 2401 PVMFDownloadDataSourcePVX* iDownloadContextDataPVX; 2402 PVMFDownloadDataSourceHTTP* iDownloadContextDataHTTP; 2403 int32 iDownloadMaxfilesize; 2404 #if RUN_FASTTRACK_TESTCASES 2405 CPVXInfo iDownloadPvxInfo; 2406 #endif 2407 OSCL_wHeapString<OsclMemAllocator> iDownloadURL; 2408 OSCL_wHeapString<OsclMemAllocator> iDownloadFilename; 2409 OSCL_HeapString<OsclMemAllocator> iDownloadProxy; 2410 OSCL_wHeapString<OsclMemAllocator> iDownloadConfigFilename; 2411 int32 iNumBufferingStart, iNumBufferingComplete, iNumUnderflow, iNumDataReady, iNumEOS; 2412 bool iDownloadOnly, iDownloadThenPlay; 2413 bool iContentTooLarge; 2414 }; 2415 #endif 2416