Home | History | Annotate | Download | only in src
      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_AUTHOR_ENGINE_TYPEDEFS_H
     19 #define TEST_PV_AUTHOR_ENGINE_TYPEDEFS_H
     20 
     21 #ifndef OSCL_BASE_H_INCLUDED
     22 #include "oscl_base.h"
     23 #endif
     24 #ifndef OSCL_ERROR_H_INCLUDED
     25 #include "oscl_error.h"
     26 #endif
     27 #ifndef OSCL_ERROR_CODES_H_INCLUDED
     28 #include "oscl_error_codes.h"
     29 #endif
     30 #ifndef OSCL_CONFIG_IO_H_INCLUDED
     31 #include "osclconfig_io.h"
     32 #endif
     33 #ifndef OSCL_FILE_IO_H_INCLUDED
     34 #include "oscl_file_io.h"
     35 #endif
     36 #ifndef OSCL_MEM_H_INCLUDED
     37 #include "oscl_mem.h"
     38 #endif
     39 #ifndef OSCL_VECTOR_H_INCLUDED
     40 #include "oscl_vector.h"
     41 #endif
     42 #ifndef OSCL_SCHEDULER_AO_H_INCLUDED
     43 #include "oscl_scheduler_ao.h"
     44 #endif
     45 #ifndef PVLOGGER_H_INCLUDED
     46 #include "pvlogger.h"
     47 #endif
     48 #ifndef PVLOGGER_STDERR_APPENDER_H_INCLUDED
     49 #include "pvlogger_stderr_appender.h"
     50 #endif
     51 #ifndef PVLOGGER_FILE_APPENDER_H_INCLUDED
     52 #include "pvlogger_file_appender.h"
     53 #endif
     54 #ifndef PVLOGGER_TIME_AND_ID_LAYOUT_H_INCLUDED
     55 #include "pvlogger_time_and_id_layout.h"
     56 #endif
     57 #ifndef TEST_CASE_H_INCLUDED
     58 #include "test_case.h"
     59 #endif
     60 #ifndef PVMF_NODE_INTERFACE_H_INCLUDED
     61 #include "pvmf_node_interface.h"
     62 #endif
     63 #ifndef PV_ENGINE_TYPES_H_INCLUDED
     64 #include "pv_engine_types.h"
     65 #endif
     66 #ifndef PV_ENGINE_OBSERVER_H_INCLUDED
     67 #include "pv_engine_observer.h"
     68 #endif
     69 #ifndef PVAUTHORENGINEFACTORY_H_INCLUDED
     70 #include "pvauthorenginefactory.h"
     71 #endif
     72 #ifndef PVAUTHORENGINEINTERFACE_H_INCLUDED
     73 #include "pvauthorengineinterface.h"
     74 #endif
     75 #ifndef PVAETESTINPUT_H_INCLUDED
     76 #include "pvaetestinput.h"
     77 #endif
     78 #ifndef OSCL_UTF8CONV_H
     79 #include "oscl_utf8conv.h"
     80 #endif
     81 #ifndef OSCL_SCHEDULER_H_INCLUDED
     82 #include "oscl_scheduler.h"
     83 #endif
     84 #ifndef TEXT_TEST_INTERPRETER_H_INCLUDED
     85 #include "text_test_interpreter.h"
     86 #endif
     87 #ifndef PV_MP4_H263_ENC_EXTENSION_H_INCLUDED
     88 #include "pvmp4h263encextension.h"
     89 #endif
     90 #ifndef PVMP4FFCN_CLIPCONFIG_H_INCLUDED
     91 #include "pvmp4ffcn_clipconfig.h"
     92 #endif
     93 #ifndef PVMF_FILEOUTPUT_CONFIG_H_INCLUDED
     94 #include "pvmf_fileoutput_config.h"
     95 #endif
     96 #ifndef PVMF_COMPOSER_SIZE_AND_DURATION_H_INCLUDED
     97 #include "pvmf_composer_size_and_duration.h"
     98 #endif
     99 #ifndef TEST_PV_AUTHOR_ENGINE_CONFIG_H_INCLUDED
    100 #include "test_pv_author_engine_config.h"
    101 #endif
    102 #ifndef UNIT_TEST_ARGS_H_INCLUDED
    103 #include "unit_test_args.h"
    104 #endif
    105 #ifndef PVLOGGER_FILE_APPENDER_H_INCLUDED
    106 #include "pvlogger_file_appender.h"
    107 #endif
    108 #ifndef OSCL_MEM_H_INCLUDED
    109 #include "oscl_mem.h"
    110 #endif
    111 #ifndef OSCL_MEM_AUDIT_H_INCLUDED
    112 #include "oscl_mem_audit.h"
    113 #endif
    114 #ifndef OSCL_UTF8CONV_H
    115 #include "oscl_utf8conv.h"
    116 #endif
    117 #ifndef OSCL_STRING_UTILS_H
    118 #include "oscl_string_utils.h"
    119 #endif
    120 #ifndef OSCL_BASE_H_INCLUDED
    121 #include "oscl_stdstring.h"
    122 #endif
    123 #ifndef PVMI_CONFIG_AND_CAPABILITY_H_INCLUDED
    124 #include "pvmi_config_and_capability.h"
    125 #endif
    126 #ifndef PVMI_CONFIG_AND_CAPABILITY_OBSERVER_H_INCLUDED
    127 #include "pvmi_config_and_capability_observer.h"
    128 #endif
    129 
    130 #ifndef OSCLCONFIG_H_INCLUDED
    131 #include "osclconfig.h"
    132 #endif
    133 
    134 #ifndef OSCL_UTF8CONV_H
    135 #include "oscl_utf8conv.h"
    136 #endif
    137 
    138 #ifndef PVAELOGGER_H_INCLUDED
    139 #include "test_pv_author_engine_logger.h"
    140 #endif
    141 
    142 //#define _W(x) _STRLIT_WCHAR(x)
    143 
    144 //composer mime type
    145 #define K3gpComposerMimeType "/x-pvmf/ff-mux/3gp"
    146 #define KAMRNbComposerMimeType      "/x-pvmf/ff-mux/amr-nb"
    147 #define KAMRWBComposerMimeType      "/x-pvmf/ff-mux/amr-wb"
    148 #define KAACADIFComposerMimeType    "/x-pvmf/ff-mux/adif"
    149 #define KAACADTSComposerMimeType    "/x-pvmf/ff-mux/adts"
    150 
    151 //encoder mime type
    152 #define KAMRNbEncMimeType "/x-pvmf/audio/encode/amr-nb"
    153 #define KAMRWbEncMimeType "/x-pvmf/audio/encode/amr-wb"
    154 #define KAACMP4EncMimeType "/x-pvmf/audio/encode/X-MPEG4-AUDIO"
    155 #define KH263EncMimeType "/x-pvmf/video/encode/h263"
    156 #define KH264EncMimeType "/x-pvmf/video/encode/h264"
    157 #define KMp4EncMimeType "/x-pvmf/video/encode/mp4"
    158 #define KAACADIFEncMimeType         "/x-pvmf/audio/encode/aac/adif"
    159 #define KAACADTSEncMimeType         "/x-pvmf/audio/encode/aac/adts"
    160 #define KTextEncMimeType "/x-pvmf/text/encode/txt"
    161 
    162 // Default input settings
    163 extern const uint32 KVideoBitrate ;
    164 extern const uint32 KVideoFrameWidth ;
    165 extern const uint32 KVideoFrameHeight;
    166 extern const uint32 KVideoTimescale ;
    167 extern const uint32 KNumLayers;
    168 
    169 extern const uint32 KVideoFrameRate;
    170 extern const uint32 KNum20msFramesPerChunk;
    171 extern const uint32 KAudioBitsPerSample;
    172 
    173 extern const uint16 KVideoIFrameInterval;
    174 extern const uint8 KH263VideoProfile;
    175 extern const uint8 KH263VideoLevel;
    176 extern const uint32 KAudioBitrate;
    177 extern const uint32 KAudioBitrateWB;
    178 extern const uint32 KAACAudioBitrate;
    179 extern const uint32 KAudioTimescale;
    180 extern const uint32 KAudioTimescaleWB;
    181 extern const uint32 KAudioNumChannels;
    182 
    183 extern const uint32 KMaxFileSize;
    184 extern const uint32 KMaxDuration;
    185 extern const uint32 KFileSizeProgressFreq;
    186 extern const uint32 KDurationProgressFreq;
    187 extern const uint32 KTestDuration;
    188 extern const uint32 KTextTimescale;
    189 extern const uint32 KTextFrameWidth;
    190 extern const uint32 KTextFrameHeight;
    191 
    192 
    193 
    194 // it's for setting Authoring Time Unit for selecting counter loop
    195 // this time unit is used as default authoring time for longetivity tests
    196 //const uint32 KAuthoringSessionUnit = 1800; //in seconds
    197 extern const uint32 KAuthoringSessionUnit;
    198 extern const uint32 KPauseDuration;
    199 
    200 // The string to prepend to source filenames
    201 #define SOURCENAME_PREPEND_STRING ""
    202 #define SOURCENAME_PREPEND_WSTRING _STRLIT_WCHAR("")
    203 
    204 
    205 #define ARRAY_SIZE  512
    206 
    207 //enum types for test cases
    208 typedef enum
    209 {
    210     ERROR_NOSTATE = 0,
    211     ERROR_VIDEO_START_INIT,
    212     ERROR_VIDEO_START_ENCODE,
    213     ERROR_VIDEO_START_ENCODE_5FRAMES,
    214     ERROR_COMPOSER_START_ADDMEMFRAG,
    215     ERROR_COMPOSER_START_ADDTRACK,
    216     ERROR_MEDIAINPUTNODE_ADDDATASOURCE_START,
    217     ERROR_MEDIAINPUTNODE_ADDDATASOURCE_STOP,
    218     ERROR_AVC_START_ENCODE,
    219     ERROR_AVC_START_ENCODE_5FRAMES
    220 } FAIL_STATE;
    221 
    222 
    223 typedef enum
    224 {
    225 
    226     /*********** Compressed Tests Begin****************************/
    227     // Tests that take compressed inputs
    228     //3gp output file
    229     AMR_Input_AOnly_3gpTest  = 0,                       //.amr
    230     H263_Input_VOnly_3gpTest = 1,                       //.h263
    231     AMR_YUV_Input_AV_3gpTest = 2,                       //.amr+.yuv
    232     AMR_H263_Input_AV_3gpTest = 3,                      //.amr+.h263
    233 
    234     H264_AMR_Input_AV_3gpTest = 4,                      //.yuv
    235     AMR_YUV_Input_AV_M4V_AMR_Output_3gpTest = 5,            //.amr+.yuv
    236     TEXT_Input_TOnly_3gpTest = 6,
    237     AMR_TEXT_Input_AT_3gpTest = 7,
    238     YUV_TEXT_Input_VT_3gpTest = 8,
    239     AMR_YUV_TEXT_Input_AVT_Mp4Test = 9,
    240 
    241     K3GP_OUTPUT_TestEnd = 10,                               //placeholder
    242 
    243     //amr output file
    244     AMR_FOutput_Test = 11,                              //.amr
    245 
    246     AMR_OUTPUT_TestEnd = 12,                                // placeholder
    247 
    248     //aac output file
    249     AACADIF_FOutput_Test = 13,                          //.aacadif
    250     AACADTS_FOutput_Test = 14,                          //.aacadts
    251 
    252     AAC_OUTPUT_TestEnd = 15,                                // placeholder
    253 
    254     //ErrorHandling_WrongTextInputFileNameTest,         //Incorrect name of Text input file
    255     //amr output file
    256     AMR_FileOutput_Test_UsingExternalFileHandle = 16,       //.amr
    257     //3gp output file
    258     AMRWB_Input_AOnly_3gpTest = 17,
    259 
    260     //amr-wb output file
    261     AMRWB_FOutput_Test = 18,
    262 
    263     CompressedNormalTestEnd = 19,                           //placeholder
    264 
    265     /*********** Compressed Longetivity Tests *********************/
    266     // tests that takes compressed inputs and run for long duration
    267     // The duration is configurable through command line argument
    268     CompressedLongetivityTestBegin = 100,           //placeholder
    269     //3gp output file
    270     TEXT_Input_TOnly_3gp_LongetivityTest = 101,         //.txt
    271     AMR_TEXT_Input_AT_3gp_LongetivityTest = 102,            //.amr+.txt
    272     YUV_TEXT_Input_VT_3gp_LongetivityTest = 103,            //.txt+.yuv
    273     AMR_YUV_TEXT_Input_AVT_3gp_LongetivityTest = 104,       //.txt+.yuv +.amr
    274     Compressed_LongetivityTestEnd = 105,                    // placeholder
    275 
    276     /*********** Compressed Tests End******************************/
    277 
    278     /*********** UnCompressed Tests Begin**************************/
    279     // Test case that takes Uncompressed input through AVI File begin
    280 
    281     // AVI file must have RGB24, RGB12, YUV420 planar or PCM mono 8KHz data only
    282     UnCompressed_NormalTestBegin = 200,                 //placeholder
    283     PVMediaInput_Open_Compose_Stop_Test = 201,          //Use testinput.avi
    284     PVMediaInput_Open_RealTimeCompose_Stop_Test = 202,  //Real Time authoring
    285     YUV_Input_VOnly_3gpTest = 203,                      //.yuv
    286     PCM16_Input_AOnly_3gpTest = 204,                        //.pcm
    287     PCM16_YUV_Input_AV_3gpTest = 205,                       //.pcm+.yuv
    288     H264_Input_VOnly_3gpTest = 206,                     //.yuv
    289     PCM16In_AMROut_Test = 207,                          //.pcm//207
    290 
    291     KMaxFileSizeTest = 208,                             //.amr+.yuv
    292 
    293     K3GPPDownloadModeTest = 210,                            //.amr+.yuv
    294     K3GPPProgressiveDownloadModeTest = 211,             //.amr+.yuv
    295 
    296     KMovieFragmentModeTest = 213,
    297     CapConfigTest = 214,
    298 
    299     PVMediaInput_Pause_Resume_Test = 215,
    300 
    301     PVMediaInput_Reset_After_Create_Test = 216,
    302     PVMediaInput_Reset_After_Open_Test = 217,
    303     PVMediaInput_Reset_After_AddDataSource_Test = 218,
    304     PVMediaInput_Reset_After_SelectComposer_Test = 219,
    305     PVMediaInput_Reset_After_AddMediaTrack_Test = 220,
    306     PVMediaInput_Reset_After_Init_Test = 221,
    307     PVMediaInput_Reset_After_Start_Test = 222,
    308     PVMediaInput_Reset_After_Pause_Test = 223,
    309     PVMediaInput_Reset_After_Recording_Test = 224,
    310     PVMediaInput_Reset_After_Stop_Test = 225,
    311 
    312     PVMediaInput_Delete_After_Create_Test = 226,
    313     PVMediaInput_Delete_After_Open_Test = 227,
    314     PVMediaInput_Delete_After_AddDataSource_Test = 228,
    315     PVMediaInput_Delete_After_SelectComposer_Test = 229,
    316     PVMediaInput_Delete_After_AddMediaTrack_Test = 230,
    317     PVMediaInput_Delete_After_Init_Test = 231,
    318     PVMediaInput_Delete_After_Start_Test = 232,
    319     PVMediaInput_Delete_After_Pause_Test = 233,
    320     PVMediaInput_Delete_After_Recording_Test = 234,
    321     PVMediaInput_Delete_After_Stop_Test = 235,
    322     PVMediaInput_Open_Compose_Stop_Test_UsingExternalFileHandle = 236,
    323 
    324     UnCompressed_NormalTestEnd = 237,
    325 
    326     /********** Uncompressed Longetivity tests*********************/
    327     UnCompressed_LongetivityTestBegin = 300,            //placeholder
    328     AVI_Input_Longetivity_Test = 301,
    329     KMaxFileSizeLongetivityTest = 302,                  //.amr+.yuv/302
    330     K3GPPDownloadModeLongetivityTest = 304,             //.amr+.yuv
    331     K3GPPProgressiveDownloadModeLongetivityTest = 305,  //.amr+.yuv
    332     KMovieFragmentModeLongetivityTest = 307,
    333     UnCompressed_LongetivityTestEnd = 308,
    334 
    335     /*********** UnCompressed Tests End****************************/
    336 
    337     /*********** Error Handling Tests Begin************************/
    338 
    339     // Error Handling tests. These are to test the error handling capability of Author Engine.
    340     // Some of the tests takes unsupported inputs like RGB16 data (PVMediaInput_ErrorHandling_Test_WrongFormat).
    341     // Other tests deliberately induces errors at various points in the data path. The error point is send through
    342     // KVP keys through the test app.
    343 
    344     // Error handling tests that takes compressed inputs
    345     KCompressed_Errorhandling_TestBegin = 400,
    346     ErrorHandling_WrongTextInputFileNameTest = 401,
    347     ErrorHandling_MediaInputNodeStartFailed = 402,
    348     KCompressed_Errorhandling_TestEnd = 403,
    349 
    350     //Error handling tests that takes uncompressed inputs through avi files.
    351     KUnCompressed_Errorhandling_TestBegin = 500,
    352     PVMediaInput_ErrorHandling_Test_WrongFormat = 501,  //Use testinput_rgb16.avi
    353     PVMediaInput_ErrorHandling_Test_WrongIPFileName = 502,
    354     ErrorHandling_WrongOutputPathTest = 503,
    355     ErrorHandling_VideoInitFailed = 504,                            //Video Encoder Init Failed
    356     ErrorHandling_VideoEncodeFailed = 505,                      //Video Encoder Encode Failed
    357     ErrorHandling_VideoEncode5FramesFailed = 506,                   //VideoEncNode Encode5Frames Failed
    358     ErrorHandling_ComposerAddFragFailed = 507,                  //507, Composer AddMemFrag Failed
    359     ErrorHandling_ComposerAddTrackFailed = 508,                 //Composer AddMemTrack Failed
    360     ErrorHandling_AVCVideoEncodeFailed = 509,                       //AVCEncNode Encode Failed
    361     ErrorHandling_AVCVideoEncode5FramesFailed = 510,                //AVCEncNode Encode5Frames Failed
    362     ErrorHandling_MediaInputNodeStopFailed = 511,
    363     ErrorHandling_AudioInitFailed = 512,                            //Audio Encoder(AMR) Init Failed
    364     ErrorHandling_AudioEncodeFailed = 513,                      //Audio Encoder(AMR) Encode Failed
    365     ErrorHandling_MediaInputNode_NoMemBuffer = 514,
    366     ErrorHandling_MediaInputNode_Out_Queue_busy = 515,
    367     ErrorHandling_MediaInputNode_large_time_stamp = 516,                        //MediaInputNode Error in time stamp for large value.
    368     ErrorHandling_MediaInputNode_wrong_time_stamp_after_duration = 517,     //MediaInputNode Error in time stamp for wrong value after duration of time.
    369     ErrorHandling_MediaInputNode_zero_time_stamp = 518,                     //MediaInputNode Error in time stamp for zero value.
    370     ErrorHandling_MediaInputNode_StateFailure_EPause_SendMIORequest = 519,  //MediaInputNode Error in SendMIOioRequest().
    371     ErrorHandling_MediaInputNode_StateFailure_CancelMIORequest = 520,           //MediaInputNode Error in CancelMIORequest().
    372     ErrorHandling_MediaInputNode_Corrupt_Video_InputData = 521,             //MediaInputNode Corrupt the video input data.
    373     ErrorHandling_MediaInputNode_Corrupt_Audio_InputData = 522,             //MediaInputNode Corrupt the audio input data.
    374     ErrorHandling_MediaInputNode_DataPath_Stall = 523,                      //MediaInputNode Stall the data path.
    375     ErrorHandling_MP4Composer_AddTrack_PVMF_AMR_IETF = 524,                 //MP4ComposerNode Error in AddTrack() for PVMF_AMR_IETF.
    376     ErrorHandling_MP4Composer_AddTrack_PVMF_3GPP_TIMEDTEXT = 525,               //MP4ComposerNode Error in AddTrack() for PVMF_3GPP_TIMEDTEXT.
    377     ErrorHandling_MP4Composer_AddTrack_PVMF_M4V = 526,                      //MP4ComposerNode Error in AddTrack() for PVMF_M4V.
    378     ErrorHandling_MP4Composer_AddTrack_PVMF_H263 = 527,                     //MP4ComposerNode Error in AddTrack() for PVMF_H263.
    379     ErrorHandling_MP4Composer_AddTrack_PVMF_H264_MP4 = 528,                 //MP4ComposerNode Error in AddTrack() for PVMF_H264_MP4.
    380     ErrorHandling_MP4Composer_Create_FileParser = 529,                      //MP4ComposerNode Error in the creation of mp4 file parser.
    381     ErrorHandling_MP4Composer_RenderToFile = 530,                               //MP4ComposerNode Error in the RenderToFile().
    382     ErrorHandling_MP4Composer_FailAfter_FileSize = 531,                     //MP4ComposerNode Error after a particular file size is reached.
    383     ErrorHandling_MP4Composer_FailAfter_Duration = 532,                     //MP4ComposerNode Error after a duration of some time.
    384     ErrorHandling_MP4Composer_DataPathStall = 533,                          //MP4ComposerNode Stall the data path.
    385     ErrorHandling_VideoEncodeNode_ConfigHeader = 534,                           //VideoEncodeNode Error in GetVolHeader().
    386     ErrorHandling_VideoEncodeNode_DataPathStall_Before_ProcessingData = 535,    //VideoEncodeNode Stall the data path before processing starts.
    387     ErrorHandling_VideoEncodeNode_DataPathStall_After_ProcessingData = 536, //VideoEncodeNode Stall the data path post processing.
    388     ErrorHandling_VideoEncodeNode_FailEncode_AfterDuration = 537,               //VideoEncodeNode Error in encode after duration of time.
    389     ErrorHandling_AudioEncodeNode_FailEncode_AfterDuration = 538,               //AudioEncodeNode Error in encode operation after duration of time.
    390     ErrorHandling_AudioEncodeNode_DataPathStall_Before_ProcessingData = 539,    //AudioEncodeNode Stall data path before processing starts.
    391     ErrorHandling_AudioEncodeNode_DataPathStall_After_ProcessingData = 540, //AudioEncodeNode Stall data path post processing.
    392     ErrorHandling_AVCEncodeNode_ConfigHeader = 541,                         //AVCEncodeNode Error in in getting SPS & PPS Values.
    393     ErrorHandling_AVCEncodeNode_DataPathStall_Before_ProcessingData = 542,  //AVCEncodeNode Stall the data path before processing starts.
    394     ErrorHandling_AVCEncodeNode_DataPathStall_After_ProcessingData = 543,       //AVCEncodeNode Stall the data path post processing.
    395     ErrorHandling_AVCEncodeNode_FailEncode_AfterDuration = 544,             //AVCEncodeNode Error in encode after duration of time.
    396 
    397     /***** Test for Node Commands *****/
    398     ErrorHandling_MediaInputNode_Node_Cmd_Start = 545,          //MediaInputNode Error in node command DoStart().
    399     ErrorHandling_MediaInputNode_Node_Cmd_Stop = 546,               //MediaInputNode Error in node command DoStop().
    400     ErrorHandling_MediaInputNode_Node_Cmd_Flush = 547,          //MediaInputNode Error in node command DoFlush().
    401     ErrorHandling_MediaInputNode_Node_Cmd_Pause = 548,          //MediaInputNode Error in node command DoPause().
    402     ErrorHandling_MediaInputNode_Node_Cmd_ReleasePort = 549,        //MediaInputNode Error in node command DoReleasePort().
    403     ErrorHandling_MP4Composer_Node_Cmd_Start = 550,             //MP4ComposerNode Error in the node command DoStart().
    404     ErrorHandling_MP4Composer_Node_Cmd_Stop = 551,              //MP4ComposerNode Error in the node command DoStop().
    405     ErrorHandling_MP4Composer_Node_Cmd_Flush = 552,             //MP4ComposerNode Error in the node command DoFlush().
    406     ErrorHandling_MP4Composer_Node_Cmd_Pause = 553,             //MP4ComposerNode Error in the node command DoPause().
    407     ErrorHandling_MP4Composer_Node_Cmd_ReleasePort = 554,           //MP4ComposerNode Error in the node command DoReleasePort().
    408     ErrorHandling_VideoEncodeNode_Node_Cmd_Start = 555,         //VideoEncodeNode Error in node command DoStart().
    409     ErrorHandling_VideoEncodeNode_Node_Cmd_Stop = 556,          //VideoEncodeNode Error in node command DoStop().
    410     ErrorHandling_VideoEncodeNode_Node_Cmd_Flush = 557,         //VideoEncodeNode Error in node command DoFlush().
    411     ErrorHandling_VideoEncodeNode_Node_Cmd_Pause = 558,         //VideoEncodeNode Error in node command DoPause().
    412     ErrorHandling_VideoEncodeNode_Node_Cmd_ReleasePort = 559,       //VideoEncodeNode Error in node command DoReleasePort().
    413     ErrorHandling_AudioEncodeNode_Node_Cmd_Start = 560,         //AudioEncodeNode Error in node command DoStart().
    414     ErrorHandling_AudioEncodeNode_Node_Cmd_Stop = 561,          //AudioEncodeNode Error in node command DoStop().
    415     ErrorHandling_AudioEncodeNode_Node_Cmd_Flush = 562,         //AudioEncodeNode Error in node command DoFlush().
    416     ErrorHandling_AudioEncodeNode_Node_Cmd_Pause = 563,         //AudioEncodeNode Error in node command DoPause().
    417     ErrorHandling_AudioEncodeNode_Node_Cmd_ReleasePort = 564,       //AudioEncodeNode Error in node command DoReleasePort().
    418     ErrorHandling_AVCEncodeNode_Node_Cmd_Start = 565,               //AVCEncodeNode Error in node command DoStart().
    419     ErrorHandling_AVCEncodeNode_Node_Cmd_Stop = 566,                //AVCEncodeNode Error in node command DoStop().
    420     ErrorHandling_AVCEncodeNode_Node_Cmd_Flush = 567,               //AVCEncodeNode Error in node command DoFlush().
    421     ErrorHandling_AVCEncodeNode_Node_Cmd_Pause = 568,               //AVCEncodeNode Error in node command DoPause().
    422     ErrorHandling_AVCEncodeNode_Node_Cmd_ReleasePort = 569,     //AVCEncodeNode Error in node command DoReleasePort().
    423 
    424     KUnCompressed_Errorhandling_TestEnd = 570,
    425 
    426     /*********** Error Handling Tests End**************************/
    427     LastInteractiveTest = 1000,
    428     Invalid_Test
    429 
    430 } PVAETestCase;
    431 
    432 class pvauthor_async_test_observer;
    433 
    434 typedef struct
    435 {
    436     pvauthor_async_test_observer* iObserver;
    437     test_case* iTestCase;
    438     int32 iTestCaseNum;
    439     FILE* iStdOut;
    440 
    441 } PVAuthorAsyncTestParam;
    442 
    443 
    444 
    445 
    446 /** Enumeration of types of asychronous commands that can be issued to PV Author Engine */
    447 typedef enum
    448 {
    449     PVAE_CMD_NONE = 0,
    450     PVAE_CMD_SET_LOG_APPENDER,
    451     PVAE_CMD_REMOVE_LOG_APPENDER,
    452     PVAE_CMD_SET_LOG_LEVEL,
    453     PVAE_CMD_GET_LOG_LEVEL,
    454     PVAE_CMD_CREATE,
    455     PVAE_CMD_OPEN,
    456     PVAE_CMD_CLOSE,
    457     PVAE_CMD_ADD_DATA_SOURCE,
    458     PVAE_CMD_ADD_DATA_SOURCE_AUDIO,
    459     PVAE_CMD_ADD_DATA_SOURCE_VIDEO,
    460     PVAE_CMD_ADD_DATA_SOURCE_TEXT,
    461     PVAE_CMD_REMOVE_DATA_SOURCE,
    462     PVAE_CMD_SELECT_COMPOSER,
    463     PVAE_CMD_ADD_MEDIA_TRACK,
    464     PVAE_CMD_ADD_AUDIO_MEDIA_TRACK,
    465     PVAE_CMD_ADD_VIDEO_MEDIA_TRACK,
    466     PVAE_CMD_ADD_TEXT_MEDIA_TRACK,
    467     PVAE_CMD_ADD_DATA_SINK,
    468     PVAE_CMD_REMOVE_DATA_SINK,
    469     PVAE_CMD_INIT,
    470     PVAE_CMD_RESET,
    471     PVAE_CMD_START,
    472     PVAE_CMD_PAUSE,
    473     PVAE_CMD_RESUME,
    474     PVAE_CMD_STOP,
    475     PVAE_CMD_QUERY_UUID,
    476     PVAE_CMD_QUERY_INTERFACE,
    477     PVAE_CMD_GET_SDK_INFO,
    478     PVAE_CMD_GET_SDK_MODULE_INFO,
    479     PVAE_CMD_CANCEL_ALL_COMMANDS,
    480     PVAE_CMD_QUERY_INTERFACE2,
    481     PVAE_CMD_CLEANUPANDCOMPLETE,
    482     PVAE_CMD_CAPCONFIG_SYNC,
    483     PVAE_CMD_CAPCONFIG_ASYNC,
    484     PVAE_CMD_RECORDING,
    485     PVAE_CMD_QUERY_INTERFACE1,
    486     PVAE_CMD_CAPCONFIG_SYNC1,
    487     PVAE_CMD_QUERY_INTERFACE_COMP
    488 } PVAECmdType;
    489 
    490 
    491 ////////////////////////////////////////////////////////////////////////////
    492 class PVLoggerSchedulerSetup
    493 {
    494     public:
    495         PVLoggerSchedulerSetup() {};
    496         ~PVLoggerSchedulerSetup() {};
    497 
    498         void InitLoggerScheduler()
    499         {
    500             // Logging by PV Logger
    501             PVLogger::Init();
    502             //PVAELogger::ParseConfigFile(_W("uilogger.txt"));
    503             PVAELogger::ParseConfigFile(KPVAELoggerFile);
    504 
    505             // Construct and install the active scheduler
    506             OsclScheduler::Init("PVAuthorEngineTestScheduler");
    507         }
    508 
    509         void CleanupLoggerScheduler()
    510         {
    511             OsclScheduler::Cleanup();
    512             PVLogger::Cleanup();
    513         }
    514 
    515 };
    516 // Observer class for pvPlayer async test to notify completion of test
    517 class pvauthor_async_test_observer
    518 {
    519     public:
    520         // Signals completion of test. Test instance can be deleted after this callback completes.
    521         virtual void CompleteTest(test_case &) = 0;
    522 };
    523 
    524 
    525 ////////////////////////////////////////////////////////////////////////////
    526 class pvauthor_async_test_base : public OsclTimerObject,
    527         public PVCommandStatusObserver,
    528         public PVErrorEventObserver,
    529         public PVInformationalEventObserver
    530 {
    531     public:
    532         pvauthor_async_test_base(PVAuthorAsyncTestParam aTestParam)
    533                 : OsclTimerObject(OsclActiveObject::EPriorityNominal, "PVAuthorEngineAsyncTestBase"),
    534                 iObserver(aTestParam.iObserver),
    535                 iTestCase(aTestParam.iTestCase),
    536                 iTestCaseNum(aTestParam.iTestCaseNum),
    537                 iStdOut(aTestParam.iStdOut)
    538         {};
    539 
    540         virtual ~pvauthor_async_test_base() {}
    541         virtual void StartTest() = 0;
    542         virtual void CommandCompleted(const PVCmdResponse& /*aResponse*/) {}
    543         virtual void HandleErrorEvent(const PVAsyncErrorEvent& /*aEvent*/) {}
    544         virtual void HandleInformationalEvent(const PVAsyncInformationalEvent& /*aEvent*/) {}
    545 
    546         pvauthor_async_test_observer* iObserver;
    547         test_case* iTestCase;
    548         int32 iTestCaseNum;
    549         FILE* iStdOut;
    550 };
    551 
    552 
    553 #endif //#ifndef TEST_PV_AUTHOR_ENGINE_TYPEDEFS_H
    554 
    555