blob: 66efa92692fbfe05bc2eeaa10910ab5a0f9a0ba9 [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 1998-2009 PacketVideo
*
* 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 OMA2BOXES_H_INCLUDED
#define OMA2BOXES_H_INCLUDED
#ifndef FULLATOM_H_INCLUDED
#include "fullatom.h"
#endif
#ifndef ATOMUTILS_H_INCLUDED
#include "atomutils.h"
#endif
#ifndef ATOMDEFS_H_INCLUDED
#include "atomdefs.h"
#endif
#ifndef SAMPLEENTRY_H_INCLUDED
#include "sampleentry.h"
#endif
#ifndef ESDATOM_H_INCLUDED
#include "esdatom.h"
#endif
#ifndef GPP_AMRDECODERSPECIFICINFO_H_INCLUDED
#include "3gpp_amrdecoderspecificinfo.h"
#endif
#ifndef GPP_H263DECODERSPECIFICINFO_H_INCLUDED
#include "3gpp_h263decoderspecificinfo.h"
#endif
#ifndef H263DECODERSPECIFICINFO_H_INCLUDED
#include "h263decoderspecificinfo.h"
#endif
#ifndef AVCCONFIGURATIONBOX_H_INCLUDED
#include "avcconfigurationbox.h"
#endif
#ifndef MPEG4SAMPLEENTRYEXTENSIONS_H_INCLUDED
#include "mpeg4sampleentryextensions.h"
#endif
#ifndef DECODERSPECIFICINFO_H_INCLUDED
#include "decoderspecificinfo.h"
#endif
class OMADRMKMSBox : public FullAtom
{
public:
OMADRMKMSBox(MP4_FF_FILE *fp,
uint32 size,
uint32 type); // Default constructor
virtual ~OMADRMKMSBox() ;
uint8* getODKMData()
{
return _pODKMData;
}
uint32 getODKMDataSize()
{
return _size;
}
private:
uint8* _pODKMData;
};
class MutableDRMInformationBox : public Atom
{
public:
MutableDRMInformationBox(MP4_FF_FILE *fp,
uint32 size,
uint32 type); // Default constructor
virtual ~MutableDRMInformationBox() {};
private:
};
class SchemeInformationBox : public Atom
{
public:
SchemeInformationBox(MP4_FF_FILE *fp,
uint32 size,
uint32 type); // Default constructor
virtual ~SchemeInformationBox(); // Destructor
uint32 getTrackLevelOMA2DRMInfoSize()
{
if (_pOMADRMKMSBox != NULL)
{
return (_pOMADRMKMSBox->getODKMDataSize());
}
return 0;
}
uint8* getTrackLevelOMA2DRMInfo()
{
if (_pOMADRMKMSBox != NULL)
{
return (_pOMADRMKMSBox->getODKMData());
}
return NULL;
}
private:
OMADRMKMSBox* _pOMADRMKMSBox;
};
class OriginalFormatbox : public Atom
{
public:
OriginalFormatbox(MP4_FF_FILE *fp,
uint32 size,
uint32 type); // Default constructor
virtual ~OriginalFormatbox(); // Destructor
private:
uint32 _data_format;
};
class ProtectionSchemeInformationBox : public Atom
{
public:
ProtectionSchemeInformationBox(MP4_FF_FILE *fp,
uint32 size,
uint32 type); // Default constructor
virtual ~ProtectionSchemeInformationBox(); // Destructor
uint32 getTrackLevelOMA2DRMInfoSize()
{
if (_pSchemeInformationBox != NULL)
{
return (_pSchemeInformationBox->getTrackLevelOMA2DRMInfoSize());
}
return 0;
}
uint8* getTrackLevelOMA2DRMInfo()
{
if (_pSchemeInformationBox != NULL)
{
return (_pSchemeInformationBox->getTrackLevelOMA2DRMInfo());
}
return NULL;
}
private:
SchemeInformationBox* _pSchemeInformationBox;
OriginalFormatbox* _pOriginalFormatBox;
};
class EcnaBox : public SampleEntry
{
public:
EcnaBox(MP4_FF_FILE *fp, uint32 size, uint32 type);
virtual ~EcnaBox();
// Member gets and sets
const ESDAtom &getESDAtom() const
{
return *_pes;
}
uint16 getTimeScale()
{
return _timeScale;
}
virtual uint32 getESID() const;
virtual const ESDescriptor *getESDescriptor() const;
virtual uint8 getObjectTypeIndication() const;
virtual DecoderSpecificInfo *getDecoderSpecificInfo() const;
uint32 getAverageBitrate() const;
uint32 getMaxBitrate() const;
// Get the max size buffer needed to retrieve the media samples
uint32 getMaxBufferSizeDB() const;
ProtectionSchemeInformationBox *_pProtectionSchemeInformationBox;
private:
// Reserved constants
uint32 _reserved1[2]; // = { 0, 0 };
uint16 _reserved2; // = 2;
uint16 _reserved3; // = 16;
uint32 _reserved4; // = 0;
uint16 _reserved5; // = 0;
uint16 _timeScale;
ESDAtom *_pes;
AMRSpecificAtom *_pAMRSpecificAtom;
AMRSpecificAtom *_pAMRWBSpecificAtom;
Oscl_Vector<DecoderSpecificInfo *, OsclMemAllocator> *_pAMRDecSpecInfoArray;
Oscl_Vector<DecoderSpecificInfo *, OsclMemAllocator> *_pAMRWBDecSpecInfoArray;
};
class EcnvBox : public SampleEntry
{
public:
EcnvBox(MP4_FF_FILE *fp, uint32 size, uint32 type);
virtual ~EcnvBox();
// Member gets and sets
const ESDAtom &getESDAtom() const
{
return *_pes;
}
virtual uint32 getESID() const;
virtual const ESDescriptor *getESDescriptor() const;
// Getting and setting the Mpeg4 VOL header
DecoderSpecificInfo *getDecoderSpecificInfo() const;
uint8 getObjectTypeIndication() const;
// Get the max size buffer needed to retrieve the media samples
uint32 getMaxBufferSizeDB() const;
uint32 getAverageBitrate() const;
uint32 getMaxBitrate() const;
uint16 getWidth() const;
uint16 getHeight() const;
ProtectionSchemeInformationBox *_pProtectionSchemeInformationBox;
private:
// Reserved constants
uint32 _reserved1[4]; // = { 0, 0, 0, 0 };
uint32 _reserved2; // = 0x014000f0;
uint32 _reserved3; // = 0x00480000;
uint32 _reserved4; // = 0x00480000;
uint32 _reserved5; // = 0;
uint16 _reserved6; // = 1;
uint8 _reserved7[32]; // = 0;
uint16 _reserved8; // = 24;
uint16 _reserved9; // = -1; // (16) SIGNED!
bool createAVCDecoderSpecificInfo(MP4_FF_FILE *fp);
ESDAtom *_pes;
H263SpecficAtom *_pH263SpecificAtom;
H263DecoderSpecificInfo *_pH263decSpecificInfo;
DecoderSpecificInfo* _decoderSpecificInfo;
AVCConfigurationBox *_pAVCConfigurationBox;
MPEG4BitRateBox *_pMPEG4BitRateBox;
};
class BoxRecord;
class FontRecord;
class StyleRecord;
class FontTableAtom;
class EnctBox : public SampleEntry
{
public:
OSCL_IMPORT_REF EnctBox(MP4_FF_FILE *fp, uint32 size, uint32 type);
OSCL_IMPORT_REF virtual ~EnctBox(); // Destructor
uint32 getDisplayFlags()
{
return _displayFlags;
}
int8 getHorzJustification()
{
return _horzJustification;
}
int8 getVertJustification()
{
return _vertJustification;
}
uint8 *getBackgroundColourRGBA()
{
return _pBackgroundRGBA;
}
OSCL_IMPORT_REF int16 getBoxTop();
OSCL_IMPORT_REF int16 getBoxLeft();
OSCL_IMPORT_REF int16 getBoxBottom();
OSCL_IMPORT_REF int16 getBoxRight();
OSCL_IMPORT_REF uint16 getStartChar() ;
OSCL_IMPORT_REF uint16 getEndChar() ;
OSCL_IMPORT_REF uint16 getFontID();
OSCL_IMPORT_REF uint8 getFontStyleFlags() ;
OSCL_IMPORT_REF uint8 getfontSize();
OSCL_IMPORT_REF uint8 *getTextColourRGBA();
OSCL_IMPORT_REF uint16 getFontListSize();
OSCL_IMPORT_REF FontRecord *getFontRecordAt(uint16 index) ;
ProtectionSchemeInformationBox *_pProtectionSchemeInformationBox;
private:
uint32 _displayFlags;
int8 _horzJustification;
int8 _vertJustification;
uint8 *_pBackgroundRGBA;
BoxRecord *_pBoxRecord;
StyleRecord *_pStyleRecord;
FontTableAtom *_pFontTableAtom;
};
#endif // OMA2BOXES_H_INCLUDED