@ -18,7 +18,8 @@
# define LOG_TAG "ItemTable"
# include <ItemTable.h>
# include <media/DataSourceBase.h>
# include <media/MediaExtractorPluginApi.h>
# include <media/MediaExtractorPluginHelper.h>
# include <media/stagefright/MetaData.h>
# include <media/stagefright/MediaErrors.h>
# include <media/stagefright/foundation/ABuffer.h>
@ -92,7 +93,7 @@ struct ExifItem {
struct Box {
protected :
Box ( DataSource Base * source , uint32_t type ) :
Box ( DataSource Helper * source , uint32_t type ) :
mDataSource ( source ) , mType ( type ) { }
virtual ~ Box ( ) { }
@ -104,14 +105,14 @@ protected:
inline uint32_t type ( ) const { return mType ; }
inline DataSource Base * source ( ) const { return mDataSource ; }
inline DataSource Helper * source ( ) const { return mDataSource ; }
status_t parseChunk ( off64_t * offset ) ;
status_t parseChunks ( off64_t offset , size_t size ) ;
private :
DataSource Base * mDataSource ;
DataSource Helper * mDataSource ;
uint32_t mType ;
} ;
@ -186,7 +187,7 @@ status_t Box::parseChunks(off64_t offset, size_t size) {
struct FullBox : public Box {
protected :
FullBox ( DataSource Base * source , uint32_t type ) :
FullBox ( DataSource Helper * source , uint32_t type ) :
Box ( source , type ) , mVersion ( 0 ) , mFlags ( 0 ) { }
inline uint8_t version ( ) const { return mVersion ; }
@ -221,7 +222,7 @@ status_t FullBox::parseFullBoxHeader(off64_t *offset, size_t *size) {
//
struct PitmBox : public FullBox {
PitmBox ( DataSource Base * source ) :
PitmBox ( DataSource Helper * source ) :
FullBox ( source , FOURCC ( ' p ' , ' i ' , ' t ' , ' m ' ) ) { }
status_t parse ( off64_t offset , size_t size , uint32_t * primaryItemId ) ;
@ -301,7 +302,7 @@ struct ItemLoc {
} ;
struct IlocBox : public FullBox {
IlocBox ( DataSource Base * source , KeyedVector < uint32_t , ItemLoc > * itemLocs ) :
IlocBox ( DataSource Helper * source , KeyedVector < uint32_t , ItemLoc > * itemLocs ) :
FullBox ( source , FOURCC ( ' i ' , ' l ' , ' o ' , ' c ' ) ) ,
mItemLocs ( itemLocs ) , mHasConstructMethod1 ( false ) { }
@ -471,7 +472,7 @@ status_t IlocBox::parse(off64_t offset, size_t size) {
//
struct ItemReference : public Box , public RefBase {
ItemReference ( DataSource Base * source , uint32_t type , uint32_t itemIdSize ) :
ItemReference ( DataSource Helper * source , uint32_t type , uint32_t itemIdSize ) :
Box ( source , type ) , mItemId ( 0 ) , mRefIdSize ( itemIdSize ) { }
status_t parse ( off64_t offset , size_t size ) ;
@ -626,7 +627,7 @@ status_t ItemReference::parse(off64_t offset, size_t size) {
}
struct IrefBox : public FullBox {
IrefBox ( DataSource Base * source , Vector < sp < ItemReference > > * itemRefs ) :
IrefBox ( DataSource Helper * source , Vector < sp < ItemReference > > * itemRefs ) :
FullBox ( source , FOURCC ( ' i ' , ' r ' , ' e ' , ' f ' ) ) , mRefIdSize ( 0 ) , mItemRefs ( itemRefs ) { }
status_t parse ( off64_t offset , size_t size ) ;
@ -688,7 +689,7 @@ private:
} ;
struct IspeBox : public FullBox , public ItemProperty {
IspeBox ( DataSource Base * source ) :
IspeBox ( DataSource Helper * source ) :
FullBox ( source , FOURCC ( ' i ' , ' s ' , ' p ' , ' e ' ) ) , mWidth ( 0 ) , mHeight ( 0 ) { }
status_t parse ( off64_t offset , size_t size ) override ;
@ -724,7 +725,7 @@ status_t IspeBox::parse(off64_t offset, size_t size) {
}
struct HvccBox : public Box , public ItemProperty {
HvccBox ( DataSource Base * source ) :
HvccBox ( DataSource Helper * source ) :
Box ( source , FOURCC ( ' h ' , ' v ' , ' c ' , ' C ' ) ) { }
status_t parse ( off64_t offset , size_t size ) override ;
@ -757,7 +758,7 @@ status_t HvccBox::parse(off64_t offset, size_t size) {
}
struct IrotBox : public Box , public ItemProperty {
IrotBox ( DataSource Base * source ) :
IrotBox ( DataSource Helper * source ) :
Box ( source , FOURCC ( ' i ' , ' r ' , ' o ' , ' t ' ) ) , mAngle ( 0 ) { }
status_t parse ( off64_t offset , size_t size ) override ;
@ -786,7 +787,7 @@ status_t IrotBox::parse(off64_t offset, size_t size) {
}
struct ColrBox : public Box , public ItemProperty {
ColrBox ( DataSource Base * source ) :
ColrBox ( DataSource Helper * source ) :
Box ( source , FOURCC ( ' c ' , ' o ' , ' l ' , ' r ' ) ) { }
status_t parse ( off64_t offset , size_t size ) override ;
@ -834,7 +835,7 @@ status_t ColrBox::parse(off64_t offset, size_t size) {
}
struct IpmaBox : public FullBox {
IpmaBox ( DataSource Base * source , Vector < AssociationEntry > * associations ) :
IpmaBox ( DataSource Helper * source , Vector < AssociationEntry > * associations ) :
FullBox ( source , FOURCC ( ' i ' , ' p ' , ' m ' , ' a ' ) ) , mAssociations ( associations ) { }
status_t parse ( off64_t offset , size_t size ) ;
@ -908,7 +909,7 @@ status_t IpmaBox::parse(off64_t offset, size_t size) {
}
struct IpcoBox : public Box {
IpcoBox ( DataSource Base * source , Vector < sp < ItemProperty > > * properties ) :
IpcoBox ( DataSource Helper * source , Vector < sp < ItemProperty > > * properties ) :
Box ( source , FOURCC ( ' i ' , ' p ' , ' c ' , ' o ' ) ) , mItemProperties ( properties ) { }
status_t parse ( off64_t offset , size_t size ) ;
@ -965,7 +966,7 @@ status_t IpcoBox::onChunkData(uint32_t type, off64_t offset, size_t size) {
}
struct IprpBox : public Box {
IprpBox ( DataSource Base * source ,
IprpBox ( DataSource Helper * source ,
Vector < sp < ItemProperty > > * properties ,
Vector < AssociationEntry > * associations ) :
Box ( source , FOURCC ( ' i ' , ' p ' , ' r ' , ' p ' ) ) ,
@ -1022,7 +1023,7 @@ struct ItemInfo {
} ;
struct InfeBox : public FullBox {
InfeBox ( DataSource Base * source ) :
InfeBox ( DataSource Helper * source ) :
FullBox ( source , FOURCC ( ' i ' , ' n ' , ' f ' , ' e ' ) ) { }
status_t parse ( off64_t offset , size_t size , ItemInfo * itemInfo ) ;
@ -1127,7 +1128,7 @@ status_t InfeBox::parse(off64_t offset, size_t size, ItemInfo *itemInfo) {
}
struct IinfBox : public FullBox {
IinfBox ( DataSource Base * source , Vector < ItemInfo > * itemInfos ) :
IinfBox ( DataSource Helper * source , Vector < ItemInfo > * itemInfos ) :
FullBox ( source , FOURCC ( ' i ' , ' i ' , ' n ' , ' f ' ) ) ,
mItemInfos ( itemInfos ) , mHasGrids ( false ) { }
@ -1196,7 +1197,7 @@ status_t IinfBox::onChunkData(uint32_t type, off64_t offset, size_t size) {
//////////////////////////////////////////////////////////////////
ItemTable : : ItemTable ( DataSource Base * source )
ItemTable : : ItemTable ( DataSource Helper * source )
: mDataSource ( source ) ,
mPrimaryItemId ( 0 ) ,
mIdatOffset ( 0 ) ,