aboutsummaryrefslogtreecommitdiff
path: root/Src/libvp6/include/DRMInfo.hpp
blob: b933c8b321895d925f9ff6969c26589f82703e23 (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
79
80
81
82
83
84
85
#if !defined(DRMINFO_HPP)
#define DRMINFO_HPP
//______________________________________________________________________________
//
//  DRMInfo.hpp
//  

//______________________________________________________________________________
//  Include Files and Forward Declarations

#include <string>
#include <exception>
#include <iosfwd>
#include "FourCC.hpp"

namespace on2vp
{

//______________________________________________________________________________
//  Macro, Enumeration, and Constant Definitions

//______________________________________________________________________________
//  Type, Struct, and Class Definitions

    //--------------------------------------
    class DRMInfo
    {
        friend std::ostream& operator<<(std::ostream& os, const DRMInfo& drmi);

    public:
        class Exception : public std::exception
        {
        public:
            Exception(const std::string& strText);
            ~Exception() throw();
            const char* what() const throw();            
        private:
            std::string m_strText;
        };
        DRMInfo();
        DRMInfo(const DRMInfo& drmi);
        ~DRMInfo();

        DRMInfo& operator=(const DRMInfo& drmi);

        const FourCC scheme() const;
        long scope() const;
        long amount() const;
        const unsigned char* data() const;
        long dataSize() const;
        const unsigned char* drmx() const;
        long drmxSize() const;

        void scheme(FourCC fccScheme);
        void scope(long lScope);
        void amount(long lAmount);
        void data(const unsigned char* pData, long lDataSize);

        void init(FourCC fccScheme, long lScope, long lAmount, const unsigned char* pData, long lDataSize);
        void drmx(const unsigned char* pDRMX, long lDRMXSize);

    private:
        enum
        {
            DRMXHeaderSize = 16
        };

        FourCC m_fccScheme;
        long m_lScope;
        long m_lAmount;
        unsigned char* m_pData;
        long m_lDataSize;
        mutable unsigned char* m_pDRMX;
        long m_lDRMXSize;
    };

//______________________________________________________________________________
//  Object and Function Declarations

//______________________________________________________________________________
//  Object and Function Definitions

}  //  namespace on2vp

#endif  //  DRMINFO_HPP