193 lines
3.9 KiB
C++
193 lines
3.9 KiB
C++
/*
|
|
* Copyright (C) 2007 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef __DCF_COMM_H__
|
|
#define __DCF_COMM_H__
|
|
|
|
#include <Drm2CommonTypes.h>
|
|
#include <arpa/inet.h>
|
|
#include <mistream.h>
|
|
#include <ustring.h>
|
|
|
|
using namespace ustl;
|
|
|
|
////DCF box type list
|
|
const uint32_t DCF_CONTAINER_BOX = uint32_t('m' << 24 | 'r' << 16 | 'd' << 8 | 'o');
|
|
const uint32_t DCF_USER_TYPE = uint32_t('d' << 24 | 'i' << 16 | 'u' << 8 | 'u');
|
|
const uint32_t DCF_FILE_TYPE = uint32_t('p' << 24 | 'y' << 16 | 't' << 8 | 'f');
|
|
const uint32_t DCF_FILE_BRAND = uint32_t('f' << 24 | 'c' << 16 | 'd' << 8 | 'o');
|
|
|
|
|
|
/**
|
|
* The basic box class.
|
|
*/
|
|
class Box
|
|
{
|
|
public:
|
|
/**
|
|
* constructor for Box, used to parse Box
|
|
* \param box Box data
|
|
*/
|
|
Box(const uint8_t* box);
|
|
|
|
/**
|
|
* copy constructor for Box
|
|
* \param dcfBox Box object used to init a new Box object
|
|
*/
|
|
Box(const Box& dcfBox);
|
|
|
|
/**
|
|
* assignment operator for Box
|
|
* \param other Box object used to assign to a exist Box object
|
|
*/
|
|
Box& operator=(const Box& other);
|
|
|
|
/** Destructor for Box */
|
|
virtual ~Box();
|
|
|
|
/**
|
|
* get the size of Box
|
|
* \param none
|
|
* \return
|
|
* the size
|
|
*/
|
|
uint64_t getSize(void) const;
|
|
|
|
/**
|
|
* get the type of Box
|
|
* \param none
|
|
* \return
|
|
* the type
|
|
*/
|
|
uint32_t getType(void) const;
|
|
|
|
/**
|
|
* get the user type of Box
|
|
* \param none
|
|
* \return
|
|
* the user type
|
|
*/
|
|
const uint8_t* getUsertype(void) const;
|
|
|
|
/**
|
|
* get the length of Box
|
|
* \param none
|
|
* \return
|
|
* the length
|
|
*/
|
|
virtual uint32_t getLen(void) const;
|
|
PRIVATE:
|
|
static const uint32_t USER_TYPE_LEN = 16;
|
|
|
|
uint32_t mSize;
|
|
uint32_t mType;
|
|
uint64_t mLargeSize;
|
|
uint8_t* mUserType;
|
|
uint32_t mBoxLength;
|
|
};
|
|
|
|
/**
|
|
* The fullBox class.
|
|
*/
|
|
class FullBox : public Box
|
|
{
|
|
public:
|
|
/**
|
|
* constructor for FullBox, used to parse FullBox
|
|
* \param fullBox FullBox data
|
|
*/
|
|
FullBox(const uint8_t* fullBox);
|
|
|
|
/** Destructor for FullBox */
|
|
virtual ~FullBox(){}
|
|
|
|
/**
|
|
* get the version of FullBox
|
|
* \param none
|
|
* \return
|
|
* the version
|
|
*/
|
|
uint8_t getVersion(void) const;
|
|
|
|
/**
|
|
* get the flag of FullBox
|
|
* \param none
|
|
* \return
|
|
* the flag
|
|
*/
|
|
const uint8_t* getFlag(void) const;
|
|
|
|
/**
|
|
* get the length of FullBox
|
|
* \param none
|
|
* \return
|
|
* the length
|
|
*/
|
|
virtual uint32_t getLen(void) const;
|
|
PRIVATE:
|
|
static const uint32_t FLAG_LEN = 3;
|
|
|
|
uint8_t mVersion;
|
|
uint8_t mFlag[FLAG_LEN];
|
|
uint32_t mFullBoxLength;
|
|
};
|
|
|
|
////// textal header class
|
|
class TextualHeader
|
|
{
|
|
public:
|
|
/** default constructor of DrmInStream */
|
|
TextualHeader(){};
|
|
|
|
/**
|
|
* constructor for TextualHeader, used to parse textal header
|
|
* \param inData textal header data
|
|
*/
|
|
TextualHeader(const string& inData);
|
|
|
|
/**
|
|
* get the name of textal header
|
|
* \param none
|
|
* \return
|
|
* the name
|
|
*/
|
|
string getName() const;
|
|
|
|
/**
|
|
* get the value of textal header
|
|
* \param none
|
|
* \return
|
|
* the value
|
|
*/
|
|
string getValue() const;
|
|
|
|
/**
|
|
* get the parameter of textal header
|
|
* \param none
|
|
* \return
|
|
* the parameter
|
|
*/
|
|
string getParam() const;
|
|
PRIVATE:
|
|
string name;
|
|
string value;
|
|
string param;
|
|
};
|
|
|
|
extern int64_t ntoh_int64(int64_t in);
|
|
|
|
#endif
|