Home | History | Annotate | Download | only in include
      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 /*
     19 * ==============================================================================
     20 *  Name        : pvmf_recognizer_registry.h
     21 *  Part of     :
     22 *  Interface   :
     23 *  Description : Interface class with static methods for PVMF recognizer registry
     24 *  Version     : (see RELEASE field in copyright header above)
     25 *
     26 * ==============================================================================
     27 */
     28 
     29 #ifndef PVMF_RECOGNIZER_REGISTRY_H_INCLUDED
     30 #define PVMF_RECOGNIZER_REGISTRY_H_INCLUDED
     31 
     32 #ifndef OSCL_BASE_H_INCLUDED
     33 #include "oscl_base.h"
     34 #endif
     35 
     36 #ifndef OSCL_VECTOR_H_INCLUDED
     37 #include "oscl_vector.h"
     38 #endif
     39 
     40 #ifndef PVMF_RETURN_CODES_H_INCLUDED
     41 #include "pvmf_return_codes.h"
     42 #endif
     43 
     44 #ifndef OSCL_STRING_H_INCLUDED
     45 #include "oscl_string.h"
     46 #endif
     47 
     48 #ifndef PVMF_FORMAT_TYPE_H_INCLUDED
     49 #include "pvmf_format_type.h"
     50 #endif
     51 
     52 #ifndef PVMF_RECOGNIZER_TYPES_H_INCLUDED
     53 #include "pvmf_recognizer_types.h"
     54 #endif
     55 
     56 #ifndef PVMF_RECOGNIZER_PLUGIN_H_INCLUDED
     57 #include "pvmf_recognizer_plugin.h"
     58 #endif
     59 
     60 #ifndef PVMI_DATASTREAMUSER_INTERFACE_H_INCLUDED
     61 #include "pvmi_datastreamuser_interface.h"
     62 #endif
     63 
     64 
     65 /**
     66  * A class of static methods that provides the interface to the PVMF recognizer registry..
     67  * With these static methods, the recognizer registry can be initialized and shutdown, recognizer
     68  * plug-ins can be registered and unregistered, and format of a content can be recognized.
     69  **/
     70 class PVMFRecognizerRegistry
     71 {
     72     public:
     73         /**
     74          * This static method initializes the recognizer registry for use. This method must be called once
     75          * and succeed before calling any other methods from PVMFRecognizerRegistry.
     76          *
     77          * @exception This method can leave with one of the following error codes
     78          *         OsclErrNoMemory if memory cannot be allocated for the registry implementation
     79          * @returns A PVMF status code to report result of method
     80          **/
     81         OSCL_IMPORT_REF static PVMFStatus Init();
     82 
     83         /**
     84          * This static methods shuts down and cleans up the recognizer registry. This method must be called once
     85          * after there is no more use for the recognizer registry to properly release the memory allocated for the
     86          * registry
     87          **/
     88         OSCL_IMPORT_REF static void Cleanup();
     89 
     90         /**
     91          * This static method adds the specified recognizer plug-in factory to the list of available recognizers.
     92          * The passed-in plug-in factory would be used to create and destroy the recognizer plug-in in the Recognize() methods.
     93          * The passed-in plug-in factory reference must be valid until it is removed from the list by the RemovePlugin() method.
     94          *
     95          * @param aPluginFactory
     96          *        A reference to a recognizer plug-in factory to add to the list of registered recognizers
     97          *
     98          * @exception This method can leave with one of the following error codes
     99          *         OsclErrNoMemory if memory cannot be allocated for vector holding the plug-in factory pointers
    100          * @returns A PVMF status code to report result of method
    101          **/
    102         OSCL_IMPORT_REF static PVMFStatus RegisterPlugin(PVMFRecognizerPluginFactory& aPluginFactory);
    103 
    104         /**
    105          * This static method removes the specified recognizer plug-in factory from the list of available recognizers.
    106          * The passed-in plug-in factory must have been added before with RegisterPlugin() for this method to succeed.
    107          * After the plug-in factory is successfully removed, the factory instance can be deleted.
    108          *
    109          * @param aPluginFactory
    110          *        A reference to a recognizer plug-in factory to remove from the list of registered recognizers
    111          *
    112          * @returns A PVMF status code to report result of method
    113          **/
    114         OSCL_IMPORT_REF static PVMFStatus RemovePlugin(PVMFRecognizerPluginFactory& aPluginFactory);
    115 
    116         /**
    117          * This static method creates a recognition session with the recognizer framework.
    118          *
    119          * @param aSessionId
    120          *        A reference to a PVMFSessionId which will be set to the session's unique identifier when this method
    121          *        completes successfully.
    122          * @param aCmdHandler
    123          *        A reference to a PVMFRecognizerCommmandHandler which will receive asynchronous command completion notification.
    124          *
    125          * @returns A PVMF status code to report result of method
    126          **/
    127         OSCL_IMPORT_REF static PVMFStatus OpenSession(PVMFSessionId& aSessionId, PVMFRecognizerCommmandHandler& aCmdHandler);
    128 
    129         /**
    130          * This static method shuts down a recognition session with the recognizer framework.
    131          *
    132          * @param aSessionId
    133          *        The unique identifier of the session to close
    134          *
    135          * @returns A PVMF status code to report result of method
    136          **/
    137         OSCL_IMPORT_REF static PVMFStatus CloseSession(PVMFSessionId aSessionId);
    138 
    139         /**
    140          * This static method asynchronously determines the format of the specified content using the currently registered
    141          * recognizer plug-ins. When the recognizer request completes, the user would be notified via the PVMFRecognizerCommandHandler
    142          * callback handler set when opening the session.
    143          *
    144          * @param aSessionId
    145          *        The unique identifier for the recognizer session
    146          * @param aSourceDataStreamFactory
    147          *        A reference to a PVMFDataStreamFactory representing the content to recognize
    148          * @param aFormatHintList
    149          *        An optional input parameter expressed as a list of MIME string which provides a priori hint for the format
    150          *        of the content specified by aSourceDataStreamFactory.
    151          * @param aRecognizerResult
    152          *        An output parameter which is a reference to a vector of PVMFRecognizerResult that will contain the recognition
    153          *        result if the Recognize() method succeeds.
    154          * @param aCmdContext
    155          *        Optional pointer to opaque data that will be returned in the command completion response
    156          * @param aTimeout
    157          *        Optional timeout value for the recognition request. If the recognition operation takes more time than the timeout
    158          *        value, the operation will be cancelled with PVMFErrTimeout status code. If the timeout value is set to 0, the
    159          *        recognition operation will go to completion.
    160          *
    161          * @exception This method can leave with one of the following error codes
    162          *         OsclErrNoMemory if memory cannot allocated to process this request
    163          *         OsclErrArgument if one or more of the passed-in parameters is invalid
    164          *
    165          * @returns A PVMF command ID for the recognize request
    166          **/
    167         OSCL_IMPORT_REF static PVMFCommandId Recognize(PVMFSessionId aSessionId, PVMFDataStreamFactory& aSourceDataStreamFactory, PVMFRecognizerMIMEStringList* aFormatHintList,
    168                 Oscl_Vector<PVMFRecognizerResult, OsclMemAllocator>& aRecognizerResult, OsclAny* aCmdContext = NULL, uint32 aTimeout = 0);
    169 
    170         /**
    171          * This static method cancels a previously issued asynchronous request that hasn't completed yet.
    172          *
    173          * @param aSessionId
    174          *        The unique identifier for the recognizer session
    175          * @param aCommandToCancelId
    176          *        Unique identifier for the asynchronous request to cancel.
    177          * @param aCmdContext
    178          *        Optional pointer to opaque data that will be returned in the command completion response
    179          *
    180          * @exception This method can leave with one of the following error codes
    181          *         OsclErrNoMemory if memory cannot allocated to process this request
    182          *         OsclErrArgument if one or more of the passed-in parameters is invalid
    183          *
    184          * @returns A PVMF command ID for the cancel request
    185          **/
    186         OSCL_IMPORT_REF static PVMFCommandId CancelCommand(PVMFSessionId aSessionId, PVMFCommandId aCommandToCancelId, OsclAny* aCmdContext = NULL);
    187 };
    188 
    189 #endif // PVMF_RECOGNIZER_REGISTRY_H_INCLUDED
    190 
    191 
    192 
    193 
    194