blob: bc8befc24d5853164db35c5324446daedeacf8ca [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 2008 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 UserDataAtom Class */
/* ------------------------------------------------------------------- */
/*********************************************************************************/
/*
This UserDataAtom Class is a container atom for informative user-data.
*/
#define __IMPLEMENT_UserDataAtom__
#include "userdataatom.h"
#include "atomdefs.h"
Atom *UserDataAtom::getAtomOfType(uint32 type)
{
if (type == PVUSER_DATA_ATOM)
return _pPVUserDataAtom;
else if (type == META_DATA_ATOM)
return _pMetaDataAtom;
else if (type == PV_CONTENT_TYPE_ATOM)
return _pPVContentTypeAtom;
else
return NULL;
}
typedef Oscl_Vector<AssetInfoTitleAtom*, OsclMemAllocator> assetInfoTitleAtomVecType;
typedef Oscl_Vector<AssetInfoDescAtom*, OsclMemAllocator> assetInfoDescAtomVecType;
typedef Oscl_Vector<CopyRightAtom*, OsclMemAllocator> copyRightAtomVecType;
typedef Oscl_Vector<AssetInfoPerformerAtom*, OsclMemAllocator> assetInfoPerformerAtomVecType;
typedef Oscl_Vector<AssetInfoAuthorAtom*, OsclMemAllocator> assetInfoAuthorAtomVecType;
typedef Oscl_Vector<AssetInfoGenreAtom*, OsclMemAllocator> assetInfoGenreAtomVecType;
typedef Oscl_Vector<AssetInfoRatingAtom*, OsclMemAllocator> assetInfoRatingAtomVecType;
typedef Oscl_Vector<AssetInfoClassificationAtom*, OsclMemAllocator> assetInfoClassificationAtomVecType;
typedef Oscl_Vector<AssetInfoKeyWordAtom*, OsclMemAllocator> assetInfoKeyWordAtomVecType;
typedef Oscl_Vector<AssetInfoLocationAtom*, OsclMemAllocator> assetInfoLocationAtomVecType;
typedef Oscl_Vector<AssetInfoAlbumAtom*, OsclMemAllocator> assetInfoAlbumAtomVecType;
typedef Oscl_Vector<AssetInfoRecordingYearAtom*, OsclMemAllocator> assetInfoRecordingYearAtomVecType;
// Stream-in Constructor
UserDataAtom::UserDataAtom(MP4_FF_FILE *fp, uint32 size, uint32 type)
: Atom(fp, size, type)
{
_pPVUserDataAtom = NULL;
_pMetaDataAtom = NULL;
_pPVContentTypeAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, assetInfoTitleAtomVecType, (), _pAssetInfoTitleAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoDescAtomVecType, (), _pAssetInfoDescAtomArray);
PV_MP4_FF_NEW(fp->auditCB, copyRightAtomVecType, (), _pCopyRightAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoPerformerAtomVecType, (), _pAssetInfoPerformerAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoAuthorAtomVecType, (), _pAssetInfoAuthorAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoGenreAtomVecType, (), _pAssetInfoGenreAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoRatingAtomVecType, (), _pAssetInfoRatingAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoClassificationAtomVecType, (), _pAssetInfoClassificationAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoKeyWordAtomVecType, (), _pAssetInfoKeyWordAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoLocationAtomVecType, (), _pAssetInfoLocationAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoAlbumAtomVecType, (), _pAssetInfoAlbumAtomArray);
PV_MP4_FF_NEW(fp->auditCB, assetInfoRecordingYearAtomVecType, (), _pAssetInfoRecordingYearArray);
uint32 count = _size - DEFAULT_ATOM_SIZE;
if (_success)
{
while (count > 0)
{
uint32 atomType = UNKNOWN_ATOM;
uint32 atomSize = 0;
uint32 currPtr = 0;
currPtr = AtomUtils::getCurrentFilePosition(fp);
AtomUtils::getNextAtomType(fp, atomSize, atomType);
if (atomSize > count)
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, count);
count = 0;
return;
}
if (atomType == COPYRIGHT_ATOM)
{
CopyRightAtom *pCopyRightAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, CopyRightAtom, (fp, atomSize, atomType), pCopyRightAtom);
if (!pCopyRightAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, CopyRightAtom, pCopyRightAtom);
pCopyRightAtom = NULL;
count -= atomSize;
}
else
{
(*_pCopyRightAtomArray).push_back(pCopyRightAtom);
pCopyRightAtom->setParent(this);
count -= pCopyRightAtom->getSize();
}
}
else if (atomType == PVUSER_DATA_ATOM)
{
PV_MP4_FF_NEW(fp->auditCB, PVUserDataAtom, (fp, atomSize, atomType), _pPVUserDataAtom);
if (!_pPVUserDataAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, PVUserDataAtom, _pPVUserDataAtom);
_pPVUserDataAtom = NULL;
count -= atomSize;
}
else
count -= _pPVUserDataAtom->getSize();
}
else if (atomType == PV_CONTENT_TYPE_ATOM)
{
PV_MP4_FF_NEW(fp->auditCB, PVContentTypeAtom, (fp, atomSize, atomType), _pPVContentTypeAtom);
if (!_pPVContentTypeAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, PVContentTypeAtom, _pPVContentTypeAtom);
_pPVContentTypeAtom = NULL;
count -= atomSize;
}
else
count -= _pPVContentTypeAtom->getSize();
}
else if (atomType == ASSET_INFO_TITLE_ATOM)
{
AssetInfoTitleAtom *pAssetInfoTitleAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoTitleAtom, (fp, atomSize, atomType), pAssetInfoTitleAtom);
if (!pAssetInfoTitleAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoTitleAtom, pAssetInfoTitleAtom);
pAssetInfoTitleAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoTitleAtomArray).push_back(pAssetInfoTitleAtom);
pAssetInfoTitleAtom->setParent(this);
count -= pAssetInfoTitleAtom->getSize();
}
}
else if (atomType == ASSET_INFO_DESCP_ATOM)
{
AssetInfoDescAtom *pAssetInfoDescAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoDescAtom, (fp, atomSize, atomType), pAssetInfoDescAtom);
if (!pAssetInfoDescAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoDescAtom, pAssetInfoDescAtom);
pAssetInfoDescAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoDescAtomArray).push_back(pAssetInfoDescAtom);
pAssetInfoDescAtom->setParent(this);
count -= pAssetInfoDescAtom->getSize();
}
}
else if (atomType == ASSET_INFO_PERF_ATOM)
{
AssetInfoPerformerAtom * pAssetInfoPerformerAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoPerformerAtom, (fp, atomSize, atomType), pAssetInfoPerformerAtom);
if (!pAssetInfoPerformerAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoPerformerAtom, pAssetInfoPerformerAtom);
pAssetInfoPerformerAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoPerformerAtomArray).push_back(pAssetInfoPerformerAtom);
pAssetInfoPerformerAtom->setParent(this);
count -= pAssetInfoPerformerAtom->getSize();
}
}
else if (atomType == ASSET_INFO_AUTHOR_ATOM)
{
AssetInfoAuthorAtom * pAssetInfoAuthorAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoAuthorAtom, (fp, atomSize, atomType), pAssetInfoAuthorAtom);
if (!pAssetInfoAuthorAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoAuthorAtom, pAssetInfoAuthorAtom);
pAssetInfoAuthorAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoAuthorAtomArray).push_back(pAssetInfoAuthorAtom);
pAssetInfoAuthorAtom->setParent(this);
count -= pAssetInfoAuthorAtom->getSize();
}
}
else if (atomType == ASSET_INFO_GENRE_ATOM)
{
AssetInfoGenreAtom * pAssetInfoGenreAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoGenreAtom, (fp, atomSize, atomType), pAssetInfoGenreAtom);
if (!pAssetInfoGenreAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoGenreAtom, pAssetInfoGenreAtom);
pAssetInfoGenreAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoGenreAtomArray).push_back(pAssetInfoGenreAtom);
pAssetInfoGenreAtom->setParent(this);
count -= pAssetInfoGenreAtom->getSize();
}
}
else if (atomType == ASSET_INFO_RATING_ATOM)
{
AssetInfoRatingAtom * pAssetInfoRatingAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoRatingAtom, (fp, atomSize, atomType), pAssetInfoRatingAtom);
if (!pAssetInfoRatingAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoRatingAtom, pAssetInfoRatingAtom);
pAssetInfoRatingAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoRatingAtomArray).push_back(pAssetInfoRatingAtom);
pAssetInfoRatingAtom->setParent(this);
count -= pAssetInfoRatingAtom->getSize();
}
}
else if (atomType == ASSET_INFO_CLSF_ATOM)
{
AssetInfoClassificationAtom * pAssetInfoClassificationAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoClassificationAtom, (fp, atomSize, atomType), pAssetInfoClassificationAtom);
if (!pAssetInfoClassificationAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoClassificationAtom, pAssetInfoClassificationAtom);
pAssetInfoClassificationAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoClassificationAtomArray).push_back(pAssetInfoClassificationAtom);
pAssetInfoClassificationAtom->setParent(this);
count -= pAssetInfoClassificationAtom->getSize();
}
}
else if (atomType == ASSET_INFO_KEYWORD_ATOM)
{
AssetInfoKeyWordAtom * pAssetInfoKeyWordAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoKeyWordAtom, (fp, atomSize, atomType), pAssetInfoKeyWordAtom);
if (!pAssetInfoKeyWordAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoKeyWordAtom, pAssetInfoKeyWordAtom);
pAssetInfoKeyWordAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoKeyWordAtomArray).push_back(pAssetInfoKeyWordAtom);
pAssetInfoKeyWordAtom->setParent(this);
count -= pAssetInfoKeyWordAtom->getSize();
}
}
else if (atomType == ASSET_INFO_LOCATION_ATOM)
{
AssetInfoLocationAtom * pAssetInfoLocationAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoLocationAtom, (fp, atomSize, atomType), pAssetInfoLocationAtom);
if (!pAssetInfoLocationAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoLocationAtom, pAssetInfoLocationAtom);
pAssetInfoLocationAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoLocationAtomArray).push_back(pAssetInfoLocationAtom);
pAssetInfoLocationAtom->setParent(this);
count -= pAssetInfoLocationAtom->getSize();
}
}
else if (atomType == ASSET_INFO_ALBUM_ATOM)
{
AssetInfoAlbumAtom * pAssetInfoAlbumAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoAlbumAtom, (fp, atomSize, atomType), pAssetInfoAlbumAtom);
if (!pAssetInfoAlbumAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoAlbumAtom, pAssetInfoAlbumAtom);
pAssetInfoAlbumAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoAlbumAtomArray).push_back(pAssetInfoAlbumAtom);
pAssetInfoAlbumAtom->setParent(this);
count -= pAssetInfoAlbumAtom->getSize();
}
}
else if (atomType == ASSET_INFO_YRRC_ATOM)
{
AssetInfoRecordingYearAtom * pAssetInfoRecordingYearAtom = NULL;
PV_MP4_FF_NEW(fp->auditCB, AssetInfoRecordingYearAtom, (fp, atomSize, atomType), pAssetInfoRecordingYearAtom);
if (!pAssetInfoRecordingYearAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, AssetInfoRecordingYearAtom, pAssetInfoRecordingYearAtom);
pAssetInfoRecordingYearAtom = NULL;
count -= atomSize;
}
else
{
(*_pAssetInfoRecordingYearArray).push_back(pAssetInfoRecordingYearAtom);
pAssetInfoRecordingYearAtom->setParent(this);
count -= pAssetInfoRecordingYearAtom->getSize();
}
}
else if (atomType == META_DATA_ATOM)
{
if (_pMetaDataAtom == NULL)
{
PV_MP4_FF_NEW(fp->auditCB, MetaDataAtom, (fp, atomSize, atomType), _pMetaDataAtom);
if (!_pMetaDataAtom->MP4Success())
{
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, atomSize);
PV_MP4_FF_DELETE(NULL, MetaDataAtom, _pMetaDataAtom);
_pMetaDataAtom = NULL;
count -= atomSize;
}
else
count -= _pMetaDataAtom->getSize();
}
else
{
count -= atomSize;
atomSize -= DEFAULT_ATOM_SIZE;
AtomUtils::seekFromCurrPos(fp, atomSize);
}
}
else
{
// skip unknown atom
if (atomSize < DEFAULT_ATOM_SIZE)
{
//lost sync
AtomUtils::seekFromStart(fp, currPtr);
AtomUtils::seekFromCurrPos(fp, count);
count = 0;
return;
}
count -= atomSize;
atomSize -= DEFAULT_ATOM_SIZE;
AtomUtils::seekFromCurrPos(fp, atomSize);
}
}
}
else
{
_mp4ErrorCode = READ_USER_DATA_ATOM_FAILED;
}
}
// Destructor
UserDataAtom::~UserDataAtom()
{
if (_pPVUserDataAtom != NULL)
{
PV_MP4_FF_DELETE(NULL, PVUserDataAtom, _pPVUserDataAtom);
}
if (_pPVContentTypeAtom != NULL)
{
PV_MP4_FF_DELETE(NULL, PVContentTypeAtom, _pPVContentTypeAtom);
}
if (_pMetaDataAtom != NULL)
{
PV_MP4_FF_DELETE(NULL, MetaDataAtom, _pMetaDataAtom);
}
if (_pCopyRightAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pCopyRightAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, CopyRightAtom, (*_pCopyRightAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, copyRightAtomVecType, Oscl_Vector, _pCopyRightAtomArray);
}
if (_pAssetInfoTitleAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoTitleAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoTitleAtom, (*_pAssetInfoTitleAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoTitleAtomVecType, Oscl_Vector, _pAssetInfoTitleAtomArray);
}
if (_pAssetInfoDescAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoDescAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoDescAtom, (*_pAssetInfoDescAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoDescAtomVecType, Oscl_Vector, _pAssetInfoDescAtomArray);
}
if (_pAssetInfoPerformerAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoPerformerAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoPerformerAtom, (*_pAssetInfoPerformerAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoPerformerAtomVecType, Oscl_Vector, _pAssetInfoPerformerAtomArray);
}
if (_pAssetInfoAuthorAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoAuthorAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoAuthorAtom, (*_pAssetInfoAuthorAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoAuthorAtomVecType, Oscl_Vector, _pAssetInfoAuthorAtomArray);
}
if (_pAssetInfoGenreAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoGenreAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoGenreAtom, (*_pAssetInfoGenreAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoGenreAtomVecType, Oscl_Vector, _pAssetInfoGenreAtomArray);
}
if (_pAssetInfoRatingAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoRatingAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoRatingAtom, (*_pAssetInfoRatingAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoRatingAtomVecType, Oscl_Vector, _pAssetInfoRatingAtomArray);
}
if (_pAssetInfoClassificationAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoClassificationAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoClassificationAtom, (*_pAssetInfoClassificationAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoClassificationAtomVecType, Oscl_Vector, _pAssetInfoClassificationAtomArray);
}
if (_pAssetInfoKeyWordAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoKeyWordAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoKeyWordAtom, (*_pAssetInfoKeyWordAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoKeyWordAtomVecType, Oscl_Vector, _pAssetInfoKeyWordAtomArray);
}
if (_pAssetInfoLocationAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoLocationAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoLocationAtom, (*_pAssetInfoLocationAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoLocationAtomVecType, Oscl_Vector, _pAssetInfoLocationAtomArray);
}
if (_pAssetInfoAlbumAtomArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoAlbumAtomArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoAlbumAtom, (*_pAssetInfoAlbumAtomArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoLocationAtomVecType, Oscl_Vector, _pAssetInfoAlbumAtomArray);
}
if (_pAssetInfoRecordingYearArray != NULL)
{
// CLEAN UP VECTOR!!
for (uint32 i = 0; i < _pAssetInfoRecordingYearArray->size(); i++)
{
PV_MP4_FF_DELETE(NULL, AssetInfoRecordingYearAtom, (*_pAssetInfoRecordingYearArray)[i]);
}
PV_MP4_FF_TEMPLATED_DELETE(NULL, assetInfoLocationAtomVecType, Oscl_Vector, _pAssetInfoRecordingYearArray);
}
}
CopyRightAtom *
UserDataAtom::getCopyRightAtomAt(int32 index)
{
if ((_pCopyRightAtomArray->size() == 0) ||
((uint32)index >= (_pCopyRightAtomArray->size())))
{
return NULL;
}
else
{
return (*_pCopyRightAtomArray)[index];
}
}
AssetInfoTitleAtom *
UserDataAtom::getAssetInfoTitleAtomAt(int32 index)
{
if ((_pAssetInfoTitleAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoTitleAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoTitleAtomArray)[index];
}
}
AssetInfoDescAtom *
UserDataAtom::getAssetInfoDescAtomAt(int32 index)
{
if ((_pAssetInfoDescAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoDescAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoDescAtomArray)[index];
}
}
AssetInfoPerformerAtom *
UserDataAtom::getAssetInfoPerformerAtomAt(int32 index)
{
if ((_pAssetInfoPerformerAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoPerformerAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoPerformerAtomArray)[index];
}
}
AssetInfoAuthorAtom *
UserDataAtom::getAssetInfoAuthorAtomAt(int32 index)
{
if ((_pAssetInfoAuthorAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoAuthorAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoAuthorAtomArray)[index];
}
}
AssetInfoGenreAtom *
UserDataAtom::getAssetInfoGenreAtomAt(int32 index)
{
if ((_pAssetInfoGenreAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoGenreAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoGenreAtomArray)[index];
}
}
AssetInfoRatingAtom *
UserDataAtom::getAssetInfoRatingAtomAt(int32 index)
{
if ((_pAssetInfoRatingAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoRatingAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoRatingAtomArray)[index];
}
}
AssetInfoClassificationAtom *
UserDataAtom::getAssetInfoClassificationAtomAt(int32 index)
{
if ((_pAssetInfoClassificationAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoClassificationAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoClassificationAtomArray)[index];
}
}
AssetInfoKeyWordAtom *
UserDataAtom::getAssetInfoKeyWordAtomAt(int32 index)
{
if ((_pAssetInfoKeyWordAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoKeyWordAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoKeyWordAtomArray)[index];
}
}
AssetInfoLocationAtom *
UserDataAtom::getAssetInfoLocationAtomAt(int32 index)
{
if ((_pAssetInfoLocationAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoLocationAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoLocationAtomArray)[index];
}
}
AssetInfoAlbumAtom *
UserDataAtom::getAssetInfoAlbumAtomAt(int32 index)
{
if ((_pAssetInfoAlbumAtomArray->size() == 0) ||
((uint32)index >= (_pAssetInfoAlbumAtomArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoAlbumAtomArray)[index];
}
}
AssetInfoRecordingYearAtom *
UserDataAtom::getAssetInfoRecordingYearAtomAt(int32 index)
{
if ((_pAssetInfoRecordingYearArray->size() == 0) ||
((uint32)index >= (_pAssetInfoRecordingYearArray->size())))
{
return NULL;
}
else
{
return (*_pAssetInfoRecordingYearArray)[index];
}
}