blob: 3088b40fc2fbff1a535218dc3c289ea8c3903d10 [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 2008 PacketVideo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
* -------------------------------------------------------------------
*/
/**
* @file pvmf_ffparsernode_extension.h
* @brief Extension interface for PVMF FF parser nodes
*/
#ifndef PVMF_FFPARSERNODE_EXTENSION_H_INCLUDED
#define PVMF_FFPARSERNODE_EXTENSION_H_INCLUDED
#ifndef OSCL_BASE_H_INCLUDED
#include "oscl_base.h"
#endif
#ifndef OSCL_FILE_IO_H_INCLUDED
#include "oscl_file_io.h"
#endif
#ifndef PV_INTERFACE_H
#include "pv_interface.h"
#endif
#ifndef PV_UUID_H_INCLUDED
#include "pv_uuid.h"
#endif
#ifndef PVMF_FORMAT_TYPE_H_INCLUDED
#include "pvmf_format_type.h"
#endif
#ifndef PVMF_RETURN_CODES_H_INCLUDED
#include "pvmf_return_codes.h"
#endif
// UUID for the extension interface
// The below commented out line won't build on ARM5 - have to replace w/ #define. Global data not allowed on ARM5.
//const PVUuid KPVMFFFParserNodeExtensionUuid = PVUuid(0x72B76D8C,0xB4CC,0x4887,0xB1,0x0B,0x7E,0xE6,0x48,0x47,0xB2,0x05);
#define KPVMFFFParserNodeExtensionUuid PVUuid(0x72B76D8C,0xB4CC,0x4887,0xB1,0x0B,0x7E,0xE6,0x48,0x47,0xB2,0x05)
// Defines
#define PVMFFFPARSERNODE_MAX_NUM_TRACKS 6
// Structs
struct PVMFFFParserNodeTrackInfo
{
int32 iNumTracks;
uint32 iTrackId[PVMFFFPARSERNODE_MAX_NUM_TRACKS];
PVMFFormatType iFormatType[PVMFFFPARSERNODE_MAX_NUM_TRACKS];
uint32 iBitrate[PVMFFFPARSERNODE_MAX_NUM_TRACKS];
uint32 iTimescale[PVMFFFPARSERNODE_MAX_NUM_TRACKS];
};
/**
* PVMFFFParserNodeExtensionInterface specifies extended interfaces for file format parser nodes
*/
class PVMFFFParserNodeExtensionInterface : public PVInterface
{
public:
virtual void addRef() = 0;
virtual void removeRef() = 0;
virtual bool queryInterface(const PVUuid& uuid, PVInterface*& iface) = 0;
/**
* Sets the path and filename for the input file to be used for the data source
*
* @param aFilename Wide character OSCL_String.reference to the input filename
* @return PVMFSuccess if successful. PVMFFailure if not
*/
virtual PVMFStatus SetSourceFilename(OSCL_wString& aFilename) = 0;
/**
* Retrieves the track information for the currently set and initialized file
*
* @param aTrackInfo Reference to a PVMFFFParserNodeTrackInfo struct that will be filled with track info
* @return PVMFSuccess if successful. PVMFFailure if not
*/
virtual PVMFStatus GetTrackInfo(PVMFFFParserNodeTrackInfo& aTrackInfo) = 0;
};
#endif // PVMF_FFPARSERNODE_EXTENSION_H_INCLUDED