Windows-Server-2003/public/sdk/amovie/inc/cutlist.h

200 lines
5.4 KiB
C++

//==========================================================================;
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
// PURPOSE.
//
// Copyright (c) 1992 - 1997 Microsoft Corporation. All Rights Reserved.
//
//--------------------------------------------------------------------------;
// CutList related definitions and interfaces for ActiveMovie
#ifndef __CUTLIST__
#define __CUTLIST__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
#define CL_DEFAULT_TIME (-1L)
enum CL_ELEM_STATUS {
CL_NOT_PLAYED = 0,
CL_PLAYING = 1,
CL_FINISHED = 2,
CL_STATE_INVALID = 3,
CL_STATE_MASK = CL_STATE_INVALID,
CL_WAIT_FOR_STATE = 0xF0000000
};
enum CL_ELEM_FLAGS{
CL_ELEM_FIRST = 1,
CL_ELEM_LAST = 2,
CL_ELEM_NULL = 4,
CL_ELEM_ALL = 0xFFFFFFFF,
CL_ELEM_NONE = 0x0L
};
#ifndef __IAMCutListElement_INTERFACE_DEFINED__
#define __IAMCutListElement_INTERFACE_DEFINED__
#define __IAMFileCutListElement_INTERFACE_DEFINED__
#define __IAMVideoCutListElement_INTERFACE_DEFINED__
#define __IAMAudioCutListElement_INTERFACE_DEFINED__
interface IAMCutListElement : public IUnknown
{
public:
virtual HRESULT __stdcall GetElementStartPosition(
/* [out] */ REFERENCE_TIME *pmtStart) = 0;
virtual HRESULT __stdcall GetElementDuration(
/* [out] */ REFERENCE_TIME *pmtDuration) = 0;
virtual HRESULT __stdcall IsFirstElement( void ) = 0;
virtual HRESULT __stdcall IsLastElement( void ) = 0;
virtual HRESULT __stdcall IsNull( void ) = 0;
virtual HRESULT __stdcall ElementStatus(
DWORD *pdwStatus,
DWORD dwTimeoutMs) = 0;
};
interface IAMFileCutListElement : public IUnknown
{
public:
virtual HRESULT __stdcall GetFileName(
/* [out] */ LPWSTR *ppwstrFileName) = 0;
virtual HRESULT __stdcall GetTrimInPosition(
/* [out] */ REFERENCE_TIME *pmtTrimIn) = 0;
virtual HRESULT __stdcall GetTrimOutPosition(
/* [out] */ REFERENCE_TIME *pmtTrimOut) = 0;
virtual HRESULT __stdcall GetOriginPosition(
/* [out] */ REFERENCE_TIME *pmtOrigin) = 0;
virtual HRESULT __stdcall GetTrimLength(
/* [out] */ REFERENCE_TIME *pmtLength) = 0;
virtual HRESULT __stdcall GetElementSplitOffset(
/* [out] */ REFERENCE_TIME *pmtOffset) = 0;
};
interface IAMVideoCutListElement : public IUnknown
{
public:
virtual HRESULT __stdcall IsSingleFrame( void) = 0;
virtual HRESULT __stdcall GetStreamIndex(
/* [out] */ DWORD *piStream) = 0;
};
interface IAMAudioCutListElement : public IUnknown
{
public:
virtual HRESULT __stdcall GetStreamIndex(
/* [out] */ DWORD *piStream) = 0;
virtual HRESULT __stdcall HasFadeIn( void) = 0;
virtual HRESULT __stdcall HasFadeOut( void) = 0;
};
#endif // #ifndef IAMCutListElement
interface IStandardCutList : public IUnknown
{
public:
virtual HRESULT __stdcall AddElement(
/* [in] */ IAMCutListElement *pElement,
/* [in] */ REFERENCE_TIME mtStart,
/* [in] */ REFERENCE_TIME mtDuration)=0;
virtual HRESULT __stdcall RemoveElement(
/* [in] */ IAMCutListElement *pElement) = 0;
virtual HRESULT __stdcall GetFirstElement(
/* [out] */ IAMCutListElement **ppElement)=0;
virtual HRESULT __stdcall GetLastElement(
/* [out] */ IAMCutListElement **ppElement)=0;
virtual HRESULT __stdcall GetNextElement(
/* [out] */ IAMCutListElement **ppElement)=0;
virtual HRESULT __stdcall GetPreviousElement(
/* [out] */ IAMCutListElement **ppElement)=0;
virtual HRESULT __stdcall GetMediaType(
/* [out] */ AM_MEDIA_TYPE *pmt)=0;
virtual HRESULT __stdcall SetMediaType(
/* [in] */ AM_MEDIA_TYPE *pmt)=0;
};
interface IFileClip : public IUnknown
{
public:
virtual HRESULT __stdcall SetFileAndStream(
/* [in] */ LPWSTR wstrFileName,
/* [in] */ DWORD streamNum) = 0;
virtual HRESULT __stdcall CreateCut(
/* [out] */ IAMCutListElement **ppElement,
/* [in] */ REFERENCE_TIME mtTrimIn,
/* [in] */ REFERENCE_TIME mtTrimOut,
/* [in] */ REFERENCE_TIME mtOrigin,
/* [in] */ REFERENCE_TIME mtLength,
/* [in] */ REFERENCE_TIME mtOffset) = 0;
virtual HRESULT __stdcall GetMediaType(
/* [out] */ AM_MEDIA_TYPE *pmt) = 0;
};
interface ICutListGraphBuilder : public IUnknown
{
public:
virtual HRESULT __stdcall SetFilterGraph(
/*[in]*/ IGraphBuilder *pFilterGraph)=0;
virtual HRESULT __stdcall GetFilterGraph(
/*[out]*/ IGraphBuilder **ppFilterGraph)=0;
virtual HRESULT __stdcall AddCutList(
/*[in]*/ IStandardCutList *pCutList,
/*[out]*/ IPin **ppPin)=0;
virtual HRESULT __stdcall RemoveCutList(
/*[in]*/ IStandardCutList *pCutList)=0;
virtual HRESULT __stdcall SetOutputFileName(
/*[in]*/ const GUID *pType,
/*[in]*/ LPCOLESTR lpwstrFile,
/*[in]*/ IBaseFilter **ppf,
/*[in]*/ IFileSinkFilter **pSink) = 0;
virtual HRESULT __stdcall Render(void) = 0;
virtual HRESULT __stdcall GetElementFlags(
/*[in]*/ IAMCutListElement *pElement,
/*[out]*/ LPDWORD lpdwFlags) = 0;
};
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // __CUTLIST__