summaryrefslogtreecommitdiff
path: root/avstream/avscamera/sys/formats.h
blob: e967e52b624c4869e9fd5d6b9ce0526dcc4163c6 (plain)
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/**************************************************************************

    A/V Stream Camera Sample

    Copyright (c) 2001, Microsoft Corporation.

    File:

        Formats.h

    Abstract:

        A list of available Image and Video formats.

    History:

        created 2/12/2016

**************************************************************************/

#pragma once

#include "capture.h"

#define DEFINE_DATARANGE_VIDEO(_RANGE_NAME_, _Subtype_, _X_, _Y_, _Rate_, _Planes_, _BitCount_, _Compression_) \
const                                                                                           \
KS_DATARANGE_VIDEO                                                                              \
_RANGE_NAME_ =                                                                                  \
{                                                                                               \
                                                                                                \
    /*                                                                                          \
    // KSDATARANGE                                                                              \
    */                                                                                          \
    {                                                                                           \
        sizeof( KS_DATARANGE_VIDEO ),               /* FormatSize                      */       \
        0,                                          /* Flags                           */       \
        ULONG((ULONGLONG(_X_) *_Y_ * _BitCount_)/8),/* SampleSize                      */       \
        0,                                          /* Reserved                        */       \
                                                                                                \
        STATICGUIDOF( KSDATAFORMAT_TYPE_VIDEO ),    /* aka. MEDIATYPE_Video            */       \
        _Subtype_,                                  /* aka. MEDIASUBTYPE_RGB24,        */       \
        STATICGUIDOF( KSDATAFORMAT_SPECIFIER_VIDEOINFO ) /* aka. FORMAT_VideoInfo      */       \
    },                                                                                          \
                                                                                                \
    TRUE,               /* BOOL,  bFixedSizeSamples (all samples same size?)           */       \
    FALSE,              /* BOOL,  bTemporalCompression (all I frames?)                 */       \
    0,                  /* Reserved (was StreamDescriptionFlags)                       */       \
    0,                  /* Reserved (was MemoryAllocationFlags                         */       \
                        /*           (KS_VIDEO_ALLOC_*))                               */       \
                        /*                                                             */       \
                        /* _KS_VIDEO_STREAM_CONFIG_CAPS                                */       \
                        /*                                                             */       \
    {                                                                                           \
        STATICGUIDOF( KSDATAFORMAT_SPECIFIER_VIDEOINFO ), /* GUID                      */       \
        KS_AnalogVideo_None,                            /* AnalogVideoStandard         */       \
        _X_,_Y_,        /* InputSize, (the inherent size of the incoming signal        */       \
                        /*             with every digitized pixel unique)              */       \
        _X_,_Y_,        /* MinCroppingSize, smallest rcSrc cropping rect allowed       */       \
        _X_,_Y_,        /* MaxCroppingSize, largest  rcSrc cropping rect allowed       */       \
        8,              /* CropGranularityX, granularity of cropping size              */       \
        1,              /* CropGranularityY                                            */       \
        8,              /* CropAlignX, alignment of cropping rect                      */       \
        1,              /* CropAlignY;                                                 */       \
        _X_, _Y_,       /* MinOutputSize, smallest bitmap stream can produce           */       \
        _X_, _Y_,       /* MaxOutputSize, largest  bitmap stream can produce           */       \
        8,              /* OutputGranularityX, granularity of output bitmap size       */       \
        1,              /* OutputGranularityY;                                         */       \
        0,              /* StretchTapsX  (0 no stretch, 1 pix dup, 2 interp...)        */       \
        0,              /* StretchTapsY                                                */       \
        0,              /* ShrinkTapsX                                                 */       \
        0,              /* ShrinkTapsY                                                 */       \
        (ONESECOND / _Rate_),         /* MinFrameInterval, 100 nS units                */       \
        640000000,      /* MaxFrameInterval, 100 nS units                              */       \
        ULONG(min(ULONG_MAX,(ULONGLONG(_X_) *_Y_ * _BitCount_)*_Rate_)),/* MinBitsPerSecond;*/  \
        ULONG(min(ULONG_MAX,(ULONGLONG(_X_) *_Y_ * _BitCount_)*_Rate_)) /* MaxBitsPerSecond;*/  \
    },                                                                                          \
                                                                                                \
    /*                                                                                          \
    // KS_VIDEOINFOHEADER (default format)                                                      \
    */                                                                                          \
    {                                                                                           \
        0,0,0,0,                            /* RECT  rcSource;                        */        \
        0,0,0,0,                            /* RECT  rcTarget;                        */        \
        ULONG(min(ULONG_MAX,(ULONGLONG(_X_) *_Y_ * _BitCount_)*_Rate_)),/* DWORD dwBitRate;*/   \
        0L,                                 /* DWORD dwBitErrorRate;                  */        \
        (ONESECOND / _Rate_),               /* REFERENCE_TIME  AvgTimePerFrame;       */        \
        sizeof( KS_BITMAPINFOHEADER ),      /* DWORD biSize;                          */        \
        _X_,                                /* LONG  biWidth;                         */        \
        _Y_,                                /* LONG  biHeight;                        */        \
        _Planes_,                           /* WORD  biPlanes;                        */        \
        _BitCount_,                         /* WORD  biBitCount;                      */        \
        _Compression_,                      /* DWORD biCompression;                   */        \
        ULONG((ULONGLONG(_X_) *_Y_ * _BitCount_)/8),/* DWORD biSizeImage;             */        \
        0,                                  /* LONG  biXPelsPerMeter;                 */        \
        0,                                  /* LONG  biYPelsPerMeter;                 */        \
        0,                                  /* DWORD biClrUsed;                       */        \
        0                                   /* DWORD biClrImportant;                  */        \
    }                                                                                           \
};                                                                                              \


extern const KS_DATARANGE_VIDEO FormatYUY2Image_Capture;
extern const KS_DATARANGE_VIDEO FormatNV12Image_Capture;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureQVGA;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureQVGAOverscan;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureVGA;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureVGAOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureQVGA;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureQVGAOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureVGA;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureVGAOverscan;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureVGA_60fps;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureVGA_60fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureVGA_60fps;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureVGA_60fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureVGA_90fps;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureVGA_90fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureVGA_90fps;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureVGA_90fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureVGA_120fps;
extern const KS_DATARANGE_VIDEO FormatYUY2_CaptureVGA_120fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureVGA_120fps;
extern const KS_DATARANGE_VIDEO FormatRGB24Bpp_CaptureVGA_120fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureVGA;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureVGAOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureVGA_60fps;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureVGA_60fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureVGA_90fps;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureVGA_90fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureVGA_120fps;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureVGA_120fpsOverscan;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureQVGA;
extern const KS_DATARANGE_VIDEO FormatRGB32Bpp_CaptureQVGAOverscan;

extern const PKSDATARANGE VideoCapturePinDataRanges[VIDEO_CAPTURE_PIN_DATA_RANGE_COUNT];
extern const PKSDATARANGE VideoPreviewPinDataRanges[VIDEO_PREVIEW_PIN_DATA_RANGE_COUNT];
extern const PKSDATARANGE ImageCapturePinDataRanges[IMAGE_CAPTURE_PIN_DATA_RANGE_COUNT];