summaryrefslogtreecommitdiffstats
path: root/sdk/dx8sdk/Include/vptype.h
blob: b03baae69682ecd9231b48e9f68edd5a0ed93208 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//------------------------------------------------------------------------------
// File: VPType.h
//
// Desc: This file includes all the data structures defined for the IVPConfig
//       interface.
//
// Copyright (c) 1997-2001, Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------------------------


#ifndef __IVPType__
#define __IVPType__

#ifdef __cplusplus
extern "C" {
#endif

    // enum to specify the criterion, which the vpmixer is supposed to use
    // in order to select the video format
    typedef enum _AMVP_SELECT_FORMAT_BY
    {
        AMVP_DO_NOT_CARE,
        AMVP_BEST_BANDWIDTH,
        AMVP_INPUT_SAME_AS_OUTPUT
    } AMVP_SELECT_FORMAT_BY;

    // enum to specify the various mode
    typedef enum _AMVP_MODE
    {   
        AMVP_MODE_WEAVE,
        AMVP_MODE_BOBINTERLEAVED,
        AMVP_MODE_BOBNONINTERLEAVED,
        AMVP_MODE_SKIPEVEN,
        AMVP_MODE_SKIPODD
    } AMVP_MODE;

    // struct to specify the width and height. The context could be anything
    // such as scaling cropping etc.
    typedef struct _AMVPSIZE
    {
        DWORD           dwWidth;                // the width
        DWORD           dwHeight;               // the height
    } AMVPSIZE, *LPAMVPSIZE;

    // struct to specify the dimensional characteristics of the input stream
    typedef struct _AMVPDIMINFO
    {
        DWORD           dwFieldWidth;           // Field height of the data
        DWORD           dwFieldHeight;          // Field width of the data
        DWORD           dwVBIWidth;             // Width of the VBI data
        DWORD           dwVBIHeight;            // Height of the VBI data
        RECT            rcValidRegion;          // The vaild rectangle, used for cropping
    } AMVPDIMINFO, *LPAMVPDIMINFO;

    // struct to specify the various data specific characteristics of the input stream
    typedef struct _AMVPDATAINFO
    {
        DWORD           dwSize;                 // Size of the struct
        DWORD           dwMicrosecondsPerField; // Time taken by each field
        AMVPDIMINFO     amvpDimInfo;            // Dimensional Information 
        DWORD           dwPictAspectRatioX;     // X dimension of Picture Aspect Ratio
        DWORD           dwPictAspectRatioY;     // Y dimension of Picture Aspect Ratio
        BOOL            bEnableDoubleClock;     // Videoport should enable double clocking
        BOOL            bEnableVACT;            // Videoport should use an external VACT signal
        BOOL            bDataIsInterlaced;      // Indicates that the signal is interlaced
        LONG            lHalfLinesOdd;          // number of halflines in the odd field
        BOOL            bFieldPolarityInverted; // Device inverts the polarity by default
        DWORD           dwNumLinesInVREF;       // Number of lines of data in VREF 
        LONG            lHalfLinesEven;         // number of halflines in the even field
        DWORD           dwReserved1;            // Reserved for future use
    } AMVPDATAINFO, *LPAMVPDATAINFO; 


#ifdef __cplusplus
}
#endif

#endif // __IVPType__