blob: ecebab4c3eef454bd7a9f971ff70306720d8a091 [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.
* -------------------------------------------------------------------
*/
/*********************************************************************************/
/* ------------------------------------------------------------------- */
/* MPEG-4 TextSampleEntry Class */
/* ------------------------------------------------------------------- */
/*********************************************************************************/
/*
This TextSampleEntry Class is used for text streams.
*/
#define IMPLEMENT_TextSampleEntry
#include "boxrecord.h"
#include "fontrecord.h"
#include "stylerecord.h"
#include "fonttableatom.h"
#include "textsampleentry.h"
#include "atomutils.h"
#include "atomdefs.h"
OSCL_EXPORT_REF TextSampleEntry:: TextSampleEntry(MP4_FF_FILE *fp, uint32 size, uint32 type)
: SampleEntry(fp, size, type)
{
_pparent = NULL;
_pBackgroundRGBA = NULL;
_pBoxRecord = NULL;
_pStyleRecord = NULL;
_pFontTableAtom = NULL;
if (_success)
{
AtomUtils::read32(fp, _displayFlags);
uint8 horz = 0;
AtomUtils::read8(fp, horz);
_horzJustification = (int8)horz;
uint8 vert = 0;
AtomUtils::read8(fp, vert);
_vertJustification = (int8)vert;
PV_MP4_FF_ARRAY_NEW(NULL, uint8, (4), _pBackgroundRGBA);
AtomUtils::readByteData(fp, 4, _pBackgroundRGBA);
PV_MP4_FF_NEW(fp->auditCB, BoxRecord, (fp), _pBoxRecord);
if (!_pBoxRecord->MP4Success())
{
_success = false;
_mp4ErrorCode = _pBoxRecord->GetMP4Error();
return;
}
PV_MP4_FF_NEW(fp->auditCB, StyleRecord, (fp), _pStyleRecord);
if (!_pStyleRecord->MP4Success())
{
_success = false;
_mp4ErrorCode = _pStyleRecord->GetMP4Error();
return;
}
PV_MP4_FF_NEW(fp->auditCB, FontTableAtom, (fp), _pFontTableAtom);
if (!_pFontTableAtom->MP4Success())
{
_success = false;
_mp4ErrorCode = _pFontTableAtom->GetMP4Error();
return;
}
}
}
// Destructor
OSCL_EXPORT_REF TextSampleEntry::~TextSampleEntry()
{
if (_pBackgroundRGBA != NULL)
{
PV_MP4_ARRAY_DELETE(NULL, _pBackgroundRGBA);
}
if (_pBoxRecord != NULL)
{
PV_MP4_FF_DELETE(NULL, BoxRecord, _pBoxRecord);
}
if (_pStyleRecord != NULL)
{
PV_MP4_FF_DELETE(NULL, StyleRecord, _pStyleRecord);
}
if (_pFontTableAtom != NULL)
{
PV_MP4_FF_DELETE(NULL, FontTableAtom, _pFontTableAtom);
}
}
OSCL_EXPORT_REF int16 TextSampleEntry::getBoxTop()
{
if (_pBoxRecord != NULL)
{
return (_pBoxRecord->getBoxTop());
}
else
{
return -1;
}
}
OSCL_EXPORT_REF int16 TextSampleEntry::getBoxLeft()
{
if (_pBoxRecord != NULL)
{
return (_pBoxRecord->getBoxLeft());
}
else
{
return -1;
}
}
OSCL_EXPORT_REF int16 TextSampleEntry::getBoxBottom()
{
if (_pBoxRecord != NULL)
{
return (_pBoxRecord->getBoxBottom());
}
else
{
return -1;
}
}
OSCL_EXPORT_REF int16 TextSampleEntry::getBoxRight()
{
if (_pBoxRecord != NULL)
{
return (_pBoxRecord->getBoxRight());
}
else
{
return -1;
}
}
OSCL_EXPORT_REF uint16 TextSampleEntry::getFontID()
{
if (_pStyleRecord != NULL)
{
return _pStyleRecord-> getFontID();
}
else
{
return 0;
}
}
OSCL_EXPORT_REF uint16 TextSampleEntry::getStartChar()
{
if (_pStyleRecord != NULL)
{
return _pStyleRecord-> getStartChar();
}
else
{
return 0;
}
}
OSCL_EXPORT_REF uint16 TextSampleEntry::getEndChar()
{
if (_pStyleRecord != NULL)
{
return _pStyleRecord-> getEndChar();
}
else
{
return 0;
}
}
OSCL_EXPORT_REF uint8 TextSampleEntry::getFontStyleFlags()
{
if (_pStyleRecord != NULL)
{
return _pStyleRecord-> getFontStyleFlags();
}
else
{
return 0;
}
}
OSCL_EXPORT_REF uint8 TextSampleEntry::getfontSize()
{
if (_pStyleRecord != NULL)
{
return _pStyleRecord->getfontSize();
}
else
{
return 0;
}
}
OSCL_EXPORT_REF uint8* TextSampleEntry::getTextColourRGBA()
{
if (_pStyleRecord != NULL)
{
return _pStyleRecord-> getTextColourRGBA();
}
else
{
return NULL;
}
}
OSCL_EXPORT_REF uint16 TextSampleEntry:: getFontListSize()
{
if (_pFontTableAtom != NULL)
{
return _pFontTableAtom-> getFontListSize();
}
else
{
return 0;
}
}
OSCL_EXPORT_REF FontRecord* TextSampleEntry::getFontRecordAt(uint16 index)
{
if (_pFontTableAtom != NULL)
{
return _pFontTableAtom->getFontRecordAt(index);
}
else
{
return NULL;
}
}
uint8 TextSampleEntry::getObjectTypeIndication() const
{
return TIMED_TEXT;
}