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

    A/V Stream Camera Sample

    Copyright (c) 2014, Microsoft Corporation.

    File:

        ExtendedCameraAngleOffset.h

    Abstract:

        This file contains the helper class CExtendedCameraAngleOffset.
        The class is provides initialization and accessor functions for
        KSCAMERA_EXTENDEDPROP_CAMERAOFFSET. 

    History:

        created 11/26/2014

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

//
//  Helper class for Extended Camera Angle Offset.
//
class CExtendedCameraAngleOffset
    : public CExtendedHeader
{
public:
    KSCAMERA_EXTENDEDPROP_CAMERAOFFSET  m_Params;

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

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

    //  Access functions let you more easily fetch the embedded field.
    LONG &
    PitchAngle()
    {
        return m_Params.PitchAngle;
    }

    LONG &
    YawAngle()
    {
        return m_Params.YawAngle;
    }

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