blob: 6e3fa1e0803ad4deff947959c13bc039d5588c19 [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 1998-2009 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.
* -------------------------------------------------------------------
*/
/*
* ==============================================================================
* Name : pv_player_datasource.h
* Part of :
* Interface :
* Description : Abstract base class for player engine data source
* Version : (see RELEASE field in copyright header above)
*
* ==============================================================================
*/
#ifndef PV_PLAYER_DATASOURCE_H_INCLUDED
#define PV_PLAYER_DATASOURCE_H_INCLUDED
#ifndef OSCL_BASE_H_INCLUDED
#include "oscl_base.h"
#endif
#ifndef OSCL_STRING_H_INCLUDED
#include "oscl_string.h"
#endif
#ifndef OSCL_STRING_CONTAINERS_H_INCLUDED
#include "oscl_string_containers.h"
#endif
#ifndef PVMF_FORMAT_TYPE_H_INCLUDED
#include "pvmf_format_type.h"
#endif
class PVMFNodeInterface;
typedef enum
{
PVP_DATASRCTYPE_UNKNOWN,
PVP_DATASRCTYPE_URL,
PVP_DATASRCTYPE_SOURCENODE
} PVPDataSourceType;
// CLASS DECLARATION
/**
* PVPlayerDataSource is an abstract base class for player engine data source.
* Player engine expects the data source to be derived from PVPlayerDataSource.
**/
class PVPlayerDataSource
{
public:
/**
* Object destructor function
**/
virtual ~PVPlayerDataSource() {};
/**
* Returns this instance's data source type
*
* @returns The PVPlayer data source type
**/
virtual PVPDataSourceType GetDataSourceType() = 0;
/**
* Returns this data source instance's format type
*
* @returns The format type
**/
virtual PVMFFormatType GetDataSourceFormatType() = 0;
/**
* Returns the URL for the data source
*
* @returns The URL as an OSCL_wString
**/
virtual OSCL_wString& GetDataSourceURL() = 0;
/**
* Returns the opaque data specific for the data source
*
* @returns The opaque data as OsclAny pointer
**/
virtual OsclAny* GetDataSourceContextData() = 0;
/**
* Returns the node interface for the data source
*
* @returns The node interface pointer to the data source
**/
virtual PVMFNodeInterface* GetDataSourceNodeInterface() = 0;
/**
* Sets alternate source format type. The format types
* would internally go into a queue(FIFO). So in case the caller
* has a certain order of priority for alternates, then the
* caller would have to make sure the calls are made in that
* order.
* These alternates are used in case the app wants to the
* engine to try alternate source nodes for the same url
*
* @returns true if the alternate source format type was
* successfully added to the queue, false otherwise.
**/
virtual bool SetAlternateSourceFormatType(PVMFFormatType aFormatType) = 0;
/**
* Returns the number of alternate source format types, if any.
* These alternates are used in case the app wants to the
* engine to try alternate source nodes for the same url
*
* @returns Number of alternate source format types
**/
virtual uint32 GetNumAlternateSourceFormatTypes() = 0;
/**
* Returns the alternate source format type, based on index.
* (Index is zero based)
* These alternates are used in case the app wants to the
* engine to try alternate source nodes for the same url
*
* @returns true if a valid source format type is found
* corresponding to the mentioned index, false otherwise.
**/
virtual bool GetAlternateSourceFormatType(PVMFFormatType& aFormatType,
uint32 aIndex) = 0;
};
#endif // PV_PLAYER_DATASOURCE_H_INCLUDED