• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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