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_TESTSET5_H_INCLUDED
     19 #define TEST_PV_AUTHOR_ENGINE_TESTSET5_H_INCLUDED
     20 
     21 #ifndef TEST_PV_MEDIAINPUT_AUTHOR_ENGINE_H
     22 #include "test_pv_mediainput_author_engine.h"
     23 #endif
     24 #ifndef PVMI_FILEIO_KVP_H_INCLUDED
     25 #include "pvmi_fileio_kvp.h"
     26 #endif
     27 
     28 #define PVPATB_TEST_IS_TRUE( condition ) (iTestCase->test_is_true_stub( (condition), (#condition), __FILE__, __LINE__ ))
     29 
     30 #define TEST_TIMEOUT_FACTOR 8  //take into account AVC encoder and symbian emulator
     31 class pv_mediainput_async_test_opencomposestop: public pvauthor_async_test_base,
     32         public PvmiConfigAndCapabilityCmdObserver
     33 {
     34     public:
     35         pv_mediainput_async_test_opencomposestop(PVAuthorAsyncTestParam aTestParam, PVMediaInputTestParam aMediaParam, bool aPauseResumeEnable,
     36                 bool aUseExtrnFileDesc = false)
     37                 : pvauthor_async_test_base(aTestParam)
     38                 , iOutputFileName(NULL)
     39                 , iInputFileName(NULL)
     40                 , iComposerMimeType(aMediaParam.iComposerInfo)
     41                 , iAudioEncoderMimeType(aMediaParam.iAudioEncInfo)
     42                 , iVideoEncoderMimeType(aMediaParam.iVideoEncInfo)
     43                 , iMediaInputType(aMediaParam.iInputFormat)
     44                 , iLoopTime(aMediaParam.iLoopTime)
     45                 , iAuthor(NULL)
     46                 , iComposer(NULL)
     47                 , iFileParser(NULL)
     48                 , iComposerConfig(NULL)
     49                 , iAudioEncoderConfig(NULL)
     50                 , iVideoEncoderConfig(NULL)
     51                 , iPendingCmds(0)
     52                 , iPauseResumeEnable(aPauseResumeEnable)
     53                 , iRemoveDataSourceDone(0)
     54                 , iAddAudioMediaTrack(false)
     55                 , iAddVideoMediaTrack(false)
     56                 , iFile(aTestParam.iStdOut)
     57                 , iRealTimeAuthoring(aMediaParam.iRealTimeAuthoring)
     58                 , iVideoBitrate(aMediaParam.iVideoBitrate)
     59                 , iAudioBitrate(aMediaParam.iAudioBitrate)
     60                 , iFrameRate(aMediaParam.iFrameRate)
     61                 , iSamplingRate(aMediaParam.iSamplingRate)
     62                 , iUseExtrnFileDesc(aUseExtrnFileDesc)
     63 
     64         {
     65             OSCL_UNUSED_ARG(iAudioBitrate);
     66             OSCL_UNUSED_ARG(iFrameRate);
     67             OSCL_UNUSED_ARG(iSamplingRate);
     68             iFileHandle = NULL;
     69 
     70             iLogger = PVLogger::GetLoggerObject("pv_mediainput_async_test_opencomposestop");
     71 
     72             iTestDuration = KTestDuration * 1000 * 1000;
     73             iAuthoringCount = 0;
     74             if (oscl_strlen(aMediaParam.iIPFileInfo.get_cstr()) != 0)
     75             {
     76                 oscl_wchar output2[ARRAY_SIZE];
     77                 oscl_UTF8ToUnicode(aMediaParam.iIPFileInfo.get_cstr(), oscl_strlen(aMediaParam.iIPFileInfo.get_cstr()), output2, ARRAY_SIZE);
     78                 iInputFileName.set(output2, oscl_strlen(output2));
     79 
     80             }
     81 
     82             if (oscl_strlen(aMediaParam.iOPFileInfo.get_cstr()) != 0)
     83             {
     84                 oscl_wchar output1[ARRAY_SIZE];
     85                 oscl_UTF8ToUnicode(aMediaParam.iOPFileInfo.get_cstr(), oscl_strlen(aMediaParam.iOPFileInfo.get_cstr()), output1, ARRAY_SIZE);
     86                 iOutputFileName.set(output1, oscl_strlen(output1));
     87             }
     88         }
     89 
     90         ~pv_mediainput_async_test_opencomposestop()
     91         {
     92             Cleanup();
     93         }
     94 
     95         void Run();
     96         void StartTest();
     97 
     98         // Author engine observer functions
     99         void HandleErrorEvent(const PVAsyncErrorEvent& aEvent);
    100         void HandleInformationalEvent(const PVAsyncInformationalEvent& aEvent);
    101         void CommandCompleted(const PVCmdResponse& aResponse);
    102 
    103         PVAECmdType iState;
    104         // Test output
    105         OSCL_wHeapString<OsclMemAllocator> iOutputFileName;
    106         OSCL_wHeapString<OsclMemAllocator> iInputFileName;
    107 
    108         OSCL_HeapString<OsclMemAllocator> iComposerMimeType;
    109         OSCL_HeapString<OsclMemAllocator> iAudioEncoderMimeType;
    110         OSCL_HeapString<OsclMemAllocator> iVideoEncoderMimeType;
    111 
    112         //test input type
    113         PVMFFormatType  iMediaInputType;
    114         uint32 iLoopTime;
    115 
    116     private:
    117         // Methods to create test input nodes and add to author engine
    118         bool CreateTestInputs();
    119         bool AddDataSource();
    120 
    121         // Methods to configure composers
    122         bool ConfigComposer();
    123         bool ConfigOutputFile();
    124         OsclFileHandle *iFileHandle;
    125         bool ConfigMp43gpComposer();
    126 
    127         bool CapConfigSync();
    128         bool CapConfigAsync();
    129         // From PvmiConfigAndCapabilityCmdObserver
    130         void SignalEvent(int32 req_id);
    131 
    132         // Method to configure max filesize/duration interface
    133         bool QueryComposerOutputInterface();
    134         bool ConfigComposerOutput();
    135         // Methods to add media tracks
    136         bool AddMediaTrack();
    137 
    138         // Methods to configure encoders
    139         bool ConfigureVideoEncoder();
    140         bool ConfigureAudioEncoder();
    141         void ResetAuthorConfig();
    142 
    143         void Cleanup();
    144 
    145         void AddEngineCommand()
    146         {
    147             iPendingCmds++;
    148         }
    149 
    150         bool EngineCmdComplete()
    151         {
    152             if (iPendingCmds > 0)
    153             {
    154                 --iPendingCmds;
    155             }
    156 
    157             if (iPendingCmds == 0)
    158             {
    159                 return true;
    160             }
    161 
    162             return false;
    163         }
    164 
    165         bool IsEngineCmdPending()
    166         {
    167             if (iPendingCmds > 0)
    168                 return true;
    169             else
    170                 return false;
    171         }
    172 
    173         // Author engine related variables
    174         PVAuthorEngineInterface* iAuthor;
    175         OsclAny*                 iComposer;
    176         OsclAny*                 iFileParser;
    177         PVInterface*             iComposerConfig;
    178         PVInterface*             iAudioEncoderConfig;
    179         PVInterface*             iVideoEncoderConfig;
    180         PVInterface*             iOutputSizeAndDurationConfig;
    181         PVMIOControlComp         iMIOComponent;
    182         uint32                   iPendingCmds;
    183         PVLogger*                iLogger;
    184         bool                     iPauseResumeEnable;
    185         uint                     iRemoveDataSourceDone;
    186         uint32                   iTestDuration;
    187         bool                     iAddAudioMediaTrack;
    188         bool                     iAddVideoMediaTrack;
    189         Oscl_FileServer          iFileServer;
    190         uint32                   iAuthoringCount;
    191         FILE*                    iFile;
    192         bool                     iRealTimeAuthoring;
    193         PvmiCapabilityAndConfig* iAuthorCapConfigIF;
    194         PvmiKvp                  iKVPSetAsync;
    195         OSCL_StackString<64>     iKeyStringSetAsync;
    196         PvmiKvp*                 iErrorKVP;
    197         uint32                   iVideoBitrate;
    198         uint32                   iAudioBitrate;
    199         OsclFloat                iFrameRate;
    200         uint32                   iSamplingRate;
    201         bool                     iUseExtrnFileDesc;
    202 
    203 };
    204 
    205 #endif
    206