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  * @file pvmf_fileinputnode_extension.h
     20  * @brief Extension interface for PVMFFileInputNode
     21  */
     22 
     23 #ifndef PVMF_FILEINPUT_NODE_EXTENSION_H_INCLUDED
     24 #define PVMF_FILEINPUT_NODE_EXTENSION_H_INCLUDED
     25 
     26 #ifndef OSCL_BASE_H_INCLUDED
     27 #include "oscl_base.h"
     28 #endif
     29 #ifndef PV_INTERFACE_H
     30 #include "pv_interface.h"
     31 #endif
     32 #ifndef PV_UUID_H_INCLUDED
     33 #include "pv_uuid.h"
     34 #endif
     35 
     36 // The PVUuid cannot by a const or it will create uninitialized data
     37 //
     38 #define KPVMFFileInputNodeExtensionUuid PVUuid(0xca27cb64,0x83ed,0x40d6,0x96,0xa3,0xed,0x1d,0x8b,0x60,0x11,0x38)
     39 
     40 // Forward declaration
     41 class OsclRefCounterMemFrag;
     42 
     43 /**
     44  * PVMFFileInputNodeExtensionInterface allows a client to do exercise extened functions
     45  * of a PVMFFileInputNode
     46  */
     47 class PVMFFileInputNodeExtensionInterface : public PVInterface
     48 {
     49     public:
     50         virtual void addRef() = 0;
     51         virtual void removeRef() = 0;
     52         virtual bool queryInterface(const PVUuid& uuid, PVInterface*& iface) = 0;
     53 
     54         /**
     55          * Retrieves bitstream configuration information specific to the file type.
     56          * This method is not valid for all files types. For M4V files, this function
     57          * would copy the VOL header to the config memory fragment provided. For
     58          * other file types, this method would return false, and aConfig is not
     59          * modified.
     60          *
     61          * @param aConfig Memory fragment to hold the config information.
     62          * @return true if config info is provided, else false.
     63          */
     64         virtual bool GetBitstreamConfig(OsclRefCounterMemFrag& aConfig) = 0;
     65 };
     66 
     67 #endif // PVMF_FILEINPUT_NODE_EXTENSION_H_INCLUDED
     68