summaryrefslogtreecommitdiff
path: root/avstream/avscamera/sys/ExtendedPhotoMode.h
blob: daa7c1271f0b0cb22dafd1affad48cfd9b47d067 (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
/**************************************************************************

    A/V Stream Camera Sample

    Copyright (c) 2014, Microsoft Corporation.

    File:

        ExtendedPhotoMode.h

    Abstract:

        This file contains the helper class CExtendedPhotoMode.
        The class is provides initialization and accessor functions for
        KSCAMERA_EXTENDEDPROP_PHOTOMODE. 

    History:

        created 11/20/2014

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

//
//  Helper class for Extended Photo Mode.
//
class CExtendedPhotoMode
    : public CExtendedHeader
{
public:
    KSCAMERA_EXTENDEDPROP_PHOTOMODE m_PhotoMode;

public:
    //  Standardized ctors to help ensure a consistant definition.
    CExtendedPhotoMode( ULONGLONG flags=0, ULONG result=STATUS_SUCCESS )
        : CExtendedHeader( flags, result )
    {
        Size = sizeof(*this);
        RtlZeroMemory( &m_PhotoMode, sizeof(m_PhotoMode) );
    }

    CExtendedPhotoMode( KSCAMERA_EXTENDEDPROP_HEADER &hdr )
        : CExtendedHeader(hdr)
    {
        Size = sizeof(*this);
        RtlZeroMemory( &m_PhotoMode, sizeof(m_PhotoMode) );
    }

    //  Access functions let you more easily fetch the embedded field.
    ULONG &
    RequestedHistoryFrames()
    {
        return m_PhotoMode.RequestedHistoryFrames;
    }

    ULONG &
    MaxHistoryFrames()
    {
        return m_PhotoMode.MaxHistoryFrames;
    }

    ULONG &
    SubMode()
    {
        return m_PhotoMode.SubMode;
    }

    bool isValid()
    {
        return CExtendedHeader::isValid() &&
               (Size    >= sizeof(*this)) ;
    }
};