AX_SPEC.H
/************************************************************************ 
*                                                                       * 
*               INTEL CORPORATION PROPRIETARY INFORMATION               * 
*                                                                       * 
*    This listing is supplied under the terms of a license agreement    * 
*      with INTEL Corporation and may not be copied nor disclosed       * 
*        except in accordance with the terms of that agreement.         * 
*                                                                       * 
************************************************************************* 
*                                                                       * 
*Copyright (c) 1994-1997 Intel Corporation.* 
*                         All Rights Reserved.                          * 
*                                                                       * 
************************************************************************/ 
 
/* 
 *  Tabs set to 4 
 * 
 *  ax_spec.h 
 * 
 *  DESCRIPTION: 
 *  The Indeo(R) Video Interactive codec provides access to new features 
 *  using the ICM_SETCODECSTATE and ICM_GETCODECSTATE messages for VfW. 
 *This header file defines the data structures used in these messages. 
 */ 
 
/* $Header:   I:\proj\src\common\vcs\ax_spec.h_v   1.2 16 Dec 1996 14:54:04tschwart  $ 
 */ 
 
/*  Custom interface for Indeo(r) codecs 
 */ 
 
#ifndef __AX_SPEC_H__ 
#define __AX_SPEC_H__ 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
#ifndef FOURCC_IV41 
 
#ifndef mmioFOURCC 
#define mmioFOURCC( ch0, ch1, ch2, ch3 )\ 
( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |\ 
( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) ) 
#endif 
 
#define FOURCC_IV41 mmioFOURCC('I','V','4','1') 
#endif 
 
#include "vfw_spec.h" 
 
/* Temporary Encode parameters used to set up the compression information 
 */  
 
typedef struct {  
DWORD dwFrameRate; 
DWORD dwKeyFrameInterval; 
DWORD dwDataRate; 
DWORD dwQuality; 
R4_FLAG fPadding; 
} R4_ENC_CMP_DATA, FAR * PTR_R4_ENC_CMP_DATA; 
 
/*AX_SPEC's GUID's 
 * 
 *{CCDA9131-CE8A-11CE-82DD-0800095A5B55}for Encode 
 *{CCDA9132-CE8A-11CE-82DD-0800095A5B55}  for Decode 
 * 
 */ 
 
#define EC_KEY_FRAME (EC_USER + 1) 
#define EC_DECODE_RECT_CHANGED (EC_USER + 2) 
 
DEFINE_GUID(IID_IIndeoEncode, 
0xCCDA9131, 0xCE8A, 0x11CE, 0x82, 0xDD, 0x08, 0x00, 0x09, 0x5A, 0x5B, 0x55); 
 
/*AX_SPECinterface definition 
*/ 
 
#undefINTERFACE 
#defineINTERFACE IIndeoEncode 
 
DECLARE_INTERFACE_(IIndeoEncode, IUnknown) 
{ 
 
/* 
 *IUnknown methods 
 */ 
 
STDMETHOD(QueryInterface) 
( 
THIS_ 
REFIID riid, 
LPVOID FAR* ppvObj 
) PURE; 
 
STDMETHOD_(ULONG,AddRef) 
( 
THIS 
) PURE; 
 
STDMETHOD_(ULONG,Release) 
( 
THIS 
) PURE; 
 
/* 
 *Query methods 
 */ 
 
    STDMETHOD(query_EncodeSequence) 
( 
THIS_ 
DWORD *pdwFlags /* [out] */ // get data pointer 
) PURE; 
 
STDMETHOD(query_ImageDimensions) 
( 
THIS_ 
DWORD *pdwWidth,/* [out] */ // get data pointer 
DWORD *pdwHeight/* [out] */ // get data pointer 
) PURE; 
 
/* 
 *Get methods 
 */ 
 
    STDMETHOD(get_EncodeSequence) 
( 
THIS_ 
PTR_R4_ENC_SEQ_DATA pData/* [out] */ // get data pointer 
) PURE; 
 
    STDMETHOD(get_EncodePersistent) 
( 
THIS_ 
PTR_R4_ENC_SEQ_DATA pData/* [out] */ // get data pointer 
) PURE; 
 
    STDMETHOD(get_EncodeCompression) 
( 
THIS_ 
PTR_R4_ENC_CMP_DATA pData/* [out] */ // get data pointer 
) PURE; 
 
    STDMETHOD(get_EncodeCompressionDefault) 
( 
THIS_ 
PTR_R4_ENC_CMP_DATA pData/* [out] */ // get data pointer 
) PURE; 
 
 
/* 
 *Set methods 
 */ 
 
    STDMETHOD(set_EncodeSequence) 
( 
THIS_ 
PTR_R4_ENC_SEQ_DATA pData/* [in] */ // set data pointer 
) PURE; 
 
    STDMETHOD(set_EncodePersistent) 
( 
THIS_ 
PTR_R4_ENC_SEQ_DATA pData/* [in] */ // set data pointer 
) PURE; 
 
    STDMETHOD(set_EncodeCompression) 
( 
THIS_ 
PTR_R4_ENC_CMP_DATA pData/* [in] */ // set data pointer 
) PURE; 
}; 
 
 
DEFINE_GUID(IID_IIndeoDecode, 
0xCCDA9132, 0xCE8A, 0x11CE, 0x82, 0xDD, 0x08, 0x00, 0x09, 0x5A, 0x5B, 0x55); 
 
#undefINTERFACE 
#defineINTERFACE IIndeoDecode 
 
DECLARE_INTERFACE_(IIndeoDecode, IUnknown) 
{ 
 
/* 
 *IUnknown methods 
 */ 
 
STDMETHOD(QueryInterface) 
( 
THIS_ 
REFIID riid, 
LPVOID FAR* ppvObj 
) PURE; 
 
STDMETHOD_(ULONG,AddRef) 
( 
THIS 
) PURE; 
 
STDMETHOD_(ULONG,Release) 
( 
THIS 
) PURE; 
 
/* 
 *Query methods 
 */ 
 
    STDMETHOD(query_DecodeSequence) 
( 
THIS_ 
DWORD *pdwFlags/* [out] */ // query data pointer 
) PURE; 
 
    STDMETHOD(query_DecodeFrame) 
( 
THIS_ 
DWORD *pdwFlags/* [out] */ // query data pointer 
) PURE; 
 
STDMETHOD(query_ImageDimensions) 
( 
THIS_ 
DWORD *pdwWidth,/* [out] */ // get data pointer 
DWORD *pdwHeight/* [out] */ // get data pointer 
) PURE; 
 
/* 
 *Get methods 
 */ 
 
    STDMETHOD(get_DecodeSequence) 
( 
THIS_ 
PTR_R4_DEC_SEQ_DATA pData /* [out] */ // get data pointer 
) PURE; 
 
    STDMETHOD(get_DecodeFrame) 
( 
THIS_ 
PTR_R4_DEC_FRAME_DATA pData/* [out] */ // get data pointer 
) PURE; 
 
 
/* 
 *Set methods 
 */ 
 
    STDMETHOD(set_DecodeSequence) 
( 
THIS_ 
PTR_R4_DEC_SEQ_DATA pData/* [in] */ // set data pointer 
) PURE; 
 
    STDMETHOD(set_DecodeFrame) 
( 
THIS_ 
PTR_R4_DEC_FRAME_DATA pData/* [in] */ // set data pointer 
) PURE; 
 
STDMETHOD(set_NotifyKeyFrame) 
( 
THIS_ 
DWORD bState/* [in] */ // Set notify on/off 
) PURE; 
}; 
 
#ifdef __cplusplus 
} 
#endif 
 
#endif /* __AX_SPEC_H__ */