deargui-vpl/ref/virtools/Includes/CKVideoPlugin.h

410 lines
14 KiB
C++

/*************************************************************************/
/* File : CKVideoPlugin.h */
/* Author : Leïla AIT KACI */
/* */
/* Virtools SDK */
/* Copyright (c) Virtools 2005, All Rights Reserved. */
/*************************************************************************/
#ifndef CKVIDEOPLUGIN_H
#define CKVIDEOPLUGIN_H "$Id:$"
#include "CKAll.h"
#include "CKVideo.h"
////////////////////////////////////////////////////////////////////////
// This Class is not documented to the user
// It is used for internal implementation
////////////////////////////////////////////////////////////////////////
#ifdef DOCJETDUMMY // DOCJET secret macro
#else
struct CKVideoInputFormatDesc;
/*******************************************************************
Name: CK_VIDEOMANAGER_CAPS
Summary: Video Capabilities of the current manager
See also: CKVideoManager, CKVideo
*********************************************************************/
typedef enum CK_VIDEOPLUGIN_CAPS
{
CK_VIDEOCAPS_FILE = 0x00000001, // Support video files
CK_VIDEOCAPS_LIVE = 0x00000002, // Support live video
CK_VIDEOCAPS_STREAM = 0x00000004, // Support streamed video
CK_VIDEOCAPS_TEXTURE = 0x00000008, // Can play video on a texture
CK_VIDEOCAPS_SCREEN = 0x00000010, // Can play video on the screen as overlay
CK_VIDEOCAPS_SEEK = 0x00000020, // Can we seek in the video
CK_VIDEOCAPS_SPEED = 0x00000040, // Can we change the video speed
CK_VIDEOCAPS_RESERVED0 = 0x00000080, // Reserved for future use
CK_VIDEOCAPS_RESERVED1 = 0x00000100, // Reserved for future use
CK_VIDEOCAPS_RESERVED2 = 0x00000200, // Reserved for future use
CK_VIDEOCAPS_RESERVED3 = 0x00000400, // Reserved for future use
CK_VIDEOCAPS_RESERVED4 = 0x00000800 // Reserved for future use
} CK_VIDEOPLUGIN_CAPS;
/*******************************************************************
Name: CKVideoPlugin
Summary: Video Engine plugin abstract class defining implementation methods.
Remarks:
+ The implementation plugins are implemented as external plugins.
See also: CKContext::GetVideoManager,CKVideo
*********************************************************************/
class CKVideoPlugin : public CKBaseManager
{
public :
/*******************************************************************
Name: UPDATE_FLAGS
Summary: Description for UpdateSource
See also: CKVideoManager::UpdateSource
*********************************************************************/
typedef enum UPDATE_FLAGS
{
UPDATE_TEXTUREOPTIONS,
UPDATE_DESTINATION,
UPDATE_BORDERCOLOR,
UPDATE_FILLTEXTURE,
UPDATE_LIMITTIMES,
UPDATE_BALANCE,
UPDATE_VOLUME,
UPDATE_SPEED,
UPDATE_LOOP,
UPDATE_PRIORITY,
UPDATE_INPUTFORMAT,
UPDATE_RESERVED1,
UPDATE_RESERVED2,
UPDATE_RESERVED3,
UPDATE_RESERVED4,
} UPDATE_FLAGS;
/*************************************************
Summary: Return a unique ID among possible sound engines
Return Value: engine ID
Remark: 0-10 are reserved, don't use them.
See also: CKVideoPlugin
**************************************************/
virtual int GetEngineID() = 0;
/*************************************************
Summary: Get implementation error description
Return value: The requested info
Remarks:
+ The video need to be loaded to get these informations
+ This method is thread safe. Never access the variable directly.
See also: CKVideoManager, CKVideo
*************************************************/
virtual XString GetErrorDescrition(int iError) = 0;
/*************************************************
Summary: Get the video capabilities of the current video manager
Return Value: video caps
See also: CKVideoPlugin,CK_VIDEOMANAGER_CAPS
*************************************************/
virtual CK_VIDEOPLUGIN_CAPS GetCaps(CKContext* iCtx) = 0;
/*************************************************
Summary: Get the number of video type that are supported
Return Value: video caps
See also: CKVideoPlugin,CK_VIDEOMANAGER_CAPS
*************************************************/
virtual int GetSupportedExtensionCount() = 0;
/*************************************************
Summary: Get the ith supported file extension that is supported
Return Value: video caps
See also: CKVideoPlugin,CK_VIDEOMANAGER_CAPS
*************************************************/
virtual CKBOOL GetSupportedExtension(int iIndex, XString& oName, XString& oExtension) = 0;
/*************************************************
Summary: Get information about the given video
Input Arguments:
iVideo: video to get information from.
Output Arguments:
oInfo: information on the video.
Return Value: video caps
See also: CKVideoPlugin,CK_VIDEOMANAGER_CAPS
*************************************************/
virtual CKBOOL GetVideoInfo(CKVideo* iVideo, CKVideoInfo* oInfo) = 0;
/*************************************************
Summary: Get the number of live source available on the current computer
Return Value:
+ Input filter count
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual int GetVideoInputCount() = 0;
/*************************************************
Summary: Get the ID of the live source with the given name
Input Arguments:
+ iName: name of the live source
Return Value:
+ Live source ID, -1 if not found.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual int GetVideoInputID(XString& iName) = 0;
/*************************************************
Summary: Get a readeable name for the a video live source
Input Arguments:
+ iLiveID: index of the live source in the manager list
Output Aguments:
+ oName: name of the live source
Return Value:
+ Error description
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR GetVideoInputName(int iLiveID, XString& oName) = 0;
/*************************************************
Summary: Get the number of live source available on the current computer
Return Value:
+ Input filter count
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual int GetAudioInputCount() = 0;
/*************************************************
Summary: Get the ID of the live source with the given name
Input Arguments:
+ iName: name of the live source
Return Value:
+ Live source ID, -1 if not found.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual int GetAudioInputID(XString& iName) = 0;
/*************************************************
Summary: Get a readeable name for the a video live source
Input Arguments:
+ iLiveID: index of the live source in the manager list
Output Arguments:
+ oName: name of the live source
Return Value:
+ Error description
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR GetAudioInputName(int iLiveID, XString& oName) = 0;
/*************************************************
Summary: Creates the source for the given video.
Argument:
+ iSource: source to get information from
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ The video source is the object that implement the video management.
+ The source is memorized in the m_Source variable of the video,
+ The source depends on the current video manager used
+ This method updates all video information parameters
See also: CKVideoPlugin::DeleteSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR CreateSource(CKVideo* iVideo, void* iPreviewWindow=NULL) = 0;
/*************************************************
Summary: Delete the source of the given video.
Argument:
+ iSource: source to get information from
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ The video source is the object that implement the video management.
+ The source depends on the current video manager used.
+ This methods reset all video information parameters
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR DeleteSource(void* iSource, CKBOOL iForceSync) = 0;
/*************************************************
Summary: Abort request to halt the current source task as quickly as
possible.
Argument:
+ iSource: source to get information from
+ iTexture: texture where to save the captures image
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ This method should not change the target texture format, if needed,
we must warn the user by documenting it or returning a value saying
so.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR AbortSource(void* iSource) = 0;
/*************************************************
Summary: Update a video source after a modification on the given video
Argument:
+ iSource: source to get information from
+ iFlag: flag describing the change that was done. Can be any of
CKVideoManager::UPDATE_FLAGS
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ The video source is the object that implement the video management.
+ The source depends on the current video manager used.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR UpdateSource(void* iSource, UPDATE_FLAGS iFlag) = 0;
/*************************************************
Summary: Play a video source
Argument:
+ iSource: source to get information from
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ The video source is the object that implement the video management.
+ The source depends on the current video manager used.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR PlaySource(void* iSource) = 0;
/*************************************************
Summary: Pause a video sources
Argument:
+ iSource: source to get information from
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ The video source is the object that implement the video management.
+ The source depends on the current video manager used.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR PauseSource(void* iSource) = 0;
/*************************************************
Summary: Stop a video sources
Argument:
+ iSource: source to get information from
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ The video source is the object that implement the video management.
+ The source depends on the current video manager used.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR StopSource(void* iSource) = 0;
/*************************************************
Summary: Seek a video source
Argument:
+ iSource: source to get information from
+ iTime: time position (in ms) where to seek to.
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ The video source is the object that implement the video management.
+ The source depends on the current video manager used.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR SeekSource(void* iSource, float iTime) = 0;
/*************************************************
Summary: Get the current position of a video source.
Argument:
+ iSource: source to get information from
Return Value:
+ Current position (time in ms)
Remark:
+ The video source is the object that implement the video management.
+ The source depends on the current video manager used.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual float GetSourceTime(void* iSource) = 0;
/*************************************************
Summary: Capture the current video image in the given texture.
Argument:
+ iSource: source to get information from
+ iTexture: texture where to save the captures image
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
Remark:
+ This method should not change the target texture format, if needed,
we must warn the user by documenting it or returning a value saying
so.
See also: CKVideoPlugin::CreateSource, CKVideoPlugin::HasSource, CKVideo
*************************************************/
virtual CKERROR CaptureImage(void* iSource, CKTexture* iTarget) = 0;
////////////////////////////////////////////////////////////////////////
// User Undocumented Variables
////////////////////////////////////////////////////////////////////////
CKVideoPlugin(CKContext *iCtx, CKGUID iGuid, CKSTRING iName) : CKBaseManager(iCtx, iGuid, iName) {};
virtual ~CKVideoPlugin() {};
////////////////////////////////////////////////////////////////////////
// Methods added after 3.5.0.24
////////////////////////////////////////////////////////////////////////
/*************************************************
Summary: Get the number of formats available for a given input ID.
Argument:
+ iLiveID: index of the live source in the manager list
Return Value:
+ Number of input formats available. -1 if index is invalid
See also: CKVideoPlugin::GetVideoInputCount, CKVideoPlugin::GetVideoInputFormat
*************************************************/
virtual int GetVideoInputFormatCount(int iLiveID) = 0;
/*************************************************
Summary: Get the description of an available format for the given input ID.
Argument:
+ iLiveID: index of the live source in the manager list
+ iFormatID: index of the format to retrieve
Return Value:
+ CK_OK if success,
+ Any video error otherwise.
See also: CKVideoPlugin::GetVideoInputCount, CKVideoPlugin::GetVideoInputFormatCount
*************************************************/
virtual const CKVideoInputFormatDesc* GetVideoInputFormatDesc(int iLiveID, int iFormatID) = 0;
};
#endif // DOCJET secret macro
#endif