00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _AP4_OHDR_ATOM_H_
00030 #define _AP4_OHDR_ATOM_H_
00031
00032
00033
00034
00035 #include "Ap4Types.h"
00036 #include "Ap4Atom.h"
00037 #include "Ap4ContainerAtom.h"
00038 #include "Ap4String.h"
00039
00040
00041
00042
00043 const AP4_UI08 AP4_OMA_DCF_ENCRYPTION_METHOD_NULL = 0;
00044 const AP4_UI08 AP4_OMA_DCF_ENCRYPTION_METHOD_AES_CBC = 1;
00045 const AP4_UI08 AP4_OMA_DCF_ENCRYPTION_METHOD_AES_CTR = 2;
00046
00047 const AP4_UI08 AP4_OMA_DCF_PADDING_SCHEME_NONE = 0;
00048 const AP4_UI08 AP4_OMA_DCF_PADDING_SCHEME_RFC_2630 = 1;
00049
00050
00051
00052
00053 class AP4_OhdrAtom : public AP4_ContainerAtom
00054 {
00055 public:
00056
00057 static AP4_OhdrAtom* Create(AP4_Size size,
00058 AP4_ByteStream& stream,
00059 AP4_AtomFactory& atom_factory);
00060
00061
00062 AP4_OhdrAtom(AP4_UI08 encryption_method,
00063 AP4_UI08 padding_scheme,
00064 AP4_UI64 plaintext_length,
00065 const char* content_id,
00066 const char* rights_issuer_url,
00067 const char* textual_headers);
00068
00069
00070 virtual AP4_Result InspectFields(AP4_AtomInspector& inspector);
00071 virtual AP4_Result WriteFields(AP4_ByteStream& stream);
00072 virtual AP4_Atom* Clone();
00073
00074
00075 AP4_UI08 GetEncryptionMethod() const { return m_EncryptionMethod; }
00076 void SetEncryptionMethod(AP4_UI08 encryption_method) { m_EncryptionMethod = encryption_method; }
00077 AP4_UI08 GetPaddingScheme() const { return m_PaddingScheme; }
00078 void SetPaddingScheme(AP4_UI08 padding_scheme) { m_PaddingScheme = padding_scheme; }
00079 AP4_UI64 GetPlaintextLength() const { return m_PlaintextLength; }
00080 const AP4_String& GetContentId() const { return m_ContentId; }
00081 const AP4_String& GetRightsIssuerUrl() const { return m_RightsIssuerUrl; }
00082 const AP4_String& GetTextualHeaders() const { return m_TextualHeaders; }
00083
00084 private:
00085
00086 AP4_OhdrAtom(AP4_UI32 size,
00087 AP4_UI32 version,
00088 AP4_UI32 flags,
00089 AP4_ByteStream& stream,
00090 AP4_AtomFactory& atom_factory);
00091
00092
00093 AP4_UI08 m_EncryptionMethod;
00094 AP4_UI08 m_PaddingScheme;
00095 AP4_UI64 m_PlaintextLength;
00096 AP4_String m_ContentId;
00097 AP4_String m_RightsIssuerUrl;
00098 AP4_String m_TextualHeaders;
00099 };
00100
00101 #endif // _AP4_OHDR_ATOM_H_