mmplugins/lib3gp/impl/inc/mp4atom.h
changeset 33 0267baa9dea9
parent 0 40261b775718
equal deleted inserted replaced
24:2672ba96448e 33:0267baa9dea9
    64 #define ATOMTYPE_ESD  0x65736473 /* 'esds' */
    64 #define ATOMTYPE_ESD  0x65736473 /* 'esds' */
    65 #define ATOMTYPE_URL  0x75726c20 /* 'url ' */
    65 #define ATOMTYPE_URL  0x75726c20 /* 'url ' */
    66 #define ATOMTYPE_URN  0x75726e20 /* 'urn ' */
    66 #define ATOMTYPE_URN  0x75726e20 /* 'urn ' */
    67 #define ATOMTYPE_UUID 0x75756964 /* 'uuid' */
    67 #define ATOMTYPE_UUID 0x75756964 /* 'uuid' */
    68 #define ATOMTYPE_EDTS 0x65647473 /* 'edts' */
    68 #define ATOMTYPE_EDTS 0x65647473 /* 'edts' */
       
    69 #define ATOMTYPE_META 0x6d657461 /* 'meta' */
    69 /* AVC Additions */
    70 /* AVC Additions */
    70 #define ATOMTYPE_AVCC 0x61766343 /* 'avcC' */
    71 #define ATOMTYPE_AVCC 0x61766343 /* 'avcC' */
    71 #define ATOMTYPE_BTRT 0x62747274 /* 'btrt' */
    72 #define ATOMTYPE_BTRT 0x62747274 /* 'btrt' */
    72 #define ATOMTYPE_AVC1 0x61766331 /* 'avc1' */
    73 #define ATOMTYPE_AVC1 0x61766331 /* 'avc1' */
    73 #define ATOMTYPE_M4DS 0x6d346473 /* 'm4ds' */
    74 #define ATOMTYPE_M4DS 0x6d346473 /* 'm4ds' */
    74 #define ATOMTYPE_SDTP 0x73647470 /* 'sdtp' */
    75 #define ATOMTYPE_SDTP 0x73647470 /* 'sdtp' */
    75 #define ATOMTYPE_AVCP 0x61766370 /* 'avcp' */
    76 #define ATOMTYPE_AVCP 0x61766370 /* 'avcp' */
    76 /* QCELP 13K Additions */
    77 /* QCELP 13K Additions */
    77 #define ATOMTYPE_SQCP 0x73716370 /* 'sqcp' */
    78 #define ATOMTYPE_SQCP 0x73716370 /* 'sqcp' */
    78 #define ATOMTYPE_DQCP 0x64716370 /* 'dqcp' */
    79 #define ATOMTYPE_DQCP 0x64716370 /* 'dqcp' */
    79 
    80 /* inline Addition */
       
    81 #define ATOMTYPE_ID32 0x49443332 /* 'ID32' */
    80 
    82 
    81 #define HANDLERTYPE_ODSM 0x6f64736d /* 'odsm' */
    83 #define HANDLERTYPE_ODSM 0x6f64736d /* 'odsm' */
    82 #define HANDLERTYPE_VIDE 0x76696465 /* 'vide' */
    84 #define HANDLERTYPE_VIDE 0x76696465 /* 'vide' */
    83 #define HANDLERTYPE_SOUN 0x736f756e /* 'soun' */
    85 #define HANDLERTYPE_SOUN 0x736f756e /* 'soun' */
    84 
    86 
   558   editListContainerAtom  *edts;
   560   editListContainerAtom  *edts;
   559   mediaAtom              *mdia;
   561   mediaAtom              *mdia;
   560   userDataAtom           *udta;
   562   userDataAtom           *udta;
   561 } trackAtom;
   563 } trackAtom;
   562 
   564 
       
   565 typedef struct ID32Atom
       
   566 {
       
   567   atomHeader *atomhdr;
       
   568   mp4_u64    atomcontentloc;
       
   569   mp4_u16    language; // top bit is padding, remaining 15 bits is Packed ISO-639-2/T language code 
       
   570 } ID32Atom;
       
   571 
       
   572 typedef struct metaAtom
       
   573 {
       
   574   atomHeader  *atomhdr;
       
   575   handlerAtom *hdlr;
       
   576   ID32Atom    *ID32;
       
   577 } metaAtom;
       
   578 
   563 typedef struct movieAtom
   579 typedef struct movieAtom
   564 {
   580 {
   565   atomHeader            *atomhdr;
   581   atomHeader            *atomhdr;
   566   movieHeaderAtom       *mvhd;
   582   movieHeaderAtom       *mvhd;
   567   trackAtom             *trakAudio; // audio
   583   trackAtom             *trakAudio; // audio
   568   trackAtom             *trakVideo; // video
   584   trackAtom             *trakVideo; // video
   569   objectDescriptorAtom  *iods;
   585   objectDescriptorAtom  *iods;
   570   userDataAtom          *udta;
   586   userDataAtom          *udta;
       
   587   metaAtom              *meta;
   571 } movieAtom;
   588 } movieAtom;
   572 
   589 
   573 
   590 
   574 typedef struct mediaDataAtom
   591 typedef struct mediaDataAtom
   575 {
   592 {
   775 mp4_i32 readSAWB(MP4HandleImp handle, amrSampleEntry *sawb);
   792 mp4_i32 readSAWB(MP4HandleImp handle, amrSampleEntry *sawb);
   776 mp4_i32 readESD(MP4HandleImp handle, ESDAtom *esd);
   793 mp4_i32 readESD(MP4HandleImp handle, ESDAtom *esd);
   777 mp4_i32 readD263(MP4HandleImp handle, h263SpecificAtom *d263);
   794 mp4_i32 readD263(MP4HandleImp handle, h263SpecificAtom *d263);
   778 mp4_i32 readBITR(MP4HandleImp handle, bitrateAtom *bitr);
   795 mp4_i32 readBITR(MP4HandleImp handle, bitrateAtom *bitr);
   779 mp4_i32 readDAMR(MP4HandleImp handle, amrDecSpecStruc *damr);
   796 mp4_i32 readDAMR(MP4HandleImp handle, amrDecSpecStruc *damr);
       
   797 mp4_i32 readMeta(MP4HandleImp handle, metaAtom *meta);
   780 /* avc inclusions*/
   798 /* avc inclusions*/
   781 mp4_i32 readAVC1(MP4HandleImp handle, avcSampleEntry *avc1);
   799 mp4_i32 readAVC1(MP4HandleImp handle, avcSampleEntry *avc1);
   782 mp4_i32 readSDTP(MP4HandleImp handle, sampleDependencyAtom *sdtp,  mp4_i32 sample_count);
   800 mp4_i32 readSDTP(MP4HandleImp handle, sampleDependencyAtom *sdtp,  mp4_i32 sample_count);
   783 /* QCELP 13k inclusions */
   801 /* QCELP 13k inclusions */
   784 mp4_i32 readSQCP(MP4HandleImp handle, qcelpSampleEntry *sqcp);
   802 mp4_i32 readSQCP(MP4HandleImp handle, qcelpSampleEntry *sqcp);
   785 mp4_i32 readDQCP(MP4HandleImp handle, qcelpDecSpecStruc *dqcp);
   803 mp4_i32 readDQCP(MP4HandleImp handle, qcelpDecSpecStruc *dqcp);
       
   804 /* inline related */
       
   805 mp4_i32 readID32(MP4HandleImp handle, ID32Atom *ID32);
   786 
   806 
   787 mp4_i32 freeFTYP(fileTypeAtom *ftyp);
   807 mp4_i32 freeFTYP(fileTypeAtom *ftyp);
   788 mp4_i32 freeMOOV(movieAtom *moov);
   808 mp4_i32 freeMOOV(movieAtom *moov);
   789 mp4_i32 freeAtomHeader(atomHeader *atomhdr);
   809 mp4_i32 freeAtomHeader(atomHeader *atomhdr);
   790 mp4_i32 freeMVHD(movieHeaderAtom *mvhd);
   810 mp4_i32 freeMVHD(movieHeaderAtom *mvhd);
   824 mp4_i32 freeSTSH(shadowSyncSampleAtom *stsh);
   844 mp4_i32 freeSTSH(shadowSyncSampleAtom *stsh);
   825 mp4_i32 freeIODS(objectDescriptorAtom *iods);
   845 mp4_i32 freeIODS(objectDescriptorAtom *iods);
   826 mp4_i32 readUDTA(MP4HandleImp handle, userDataAtom *udta);
   846 mp4_i32 readUDTA(MP4HandleImp handle, userDataAtom *udta);
   827 mp4_i32 freeUDTA(userDataAtom *udta);
   847 mp4_i32 freeUDTA(userDataAtom *udta);
   828 mp4_i32 freeSDTP(sampleDependencyAtom* sdtp);
   848 mp4_i32 freeSDTP(sampleDependencyAtom* sdtp);
       
   849 mp4_i32 freeMETA(metaAtom *meta);
   829 /* The following and AVC related */
   850 /* The following and AVC related */
   830 mp4_i32 freeAVC1(avcSampleEntry *avc1);
   851 mp4_i32 freeAVC1(avcSampleEntry *avc1);
   831 mp4_i32 freeM4DS(mpeg4ExtensionDescriptorsAtom *m4ds);
   852 mp4_i32 freeM4DS(mpeg4ExtensionDescriptorsAtom *m4ds);
   832 mp4_i32 freeBTRT(mpeg4BitrateAtom *btrt);
   853 mp4_i32 freeBTRT(mpeg4BitrateAtom *btrt);
   833 mp4_i32 freeAVCC(avcConfigurationAtom *avcc);
   854 mp4_i32 freeAVCC(avcConfigurationAtom *avcc);
   834 /* QCELP 13K related */
   855 /* QCELP 13K related */
   835 mp4_i32 freeSQCP(qcelpSampleEntry *sqcp);
   856 mp4_i32 freeSQCP(qcelpSampleEntry *sqcp);
   836 mp4_i32 freeDQCP(qcelpDecSpecStruc *dqcp);
   857 mp4_i32 freeDQCP(qcelpDecSpecStruc *dqcp);
       
   858 /* inline related */
       
   859 mp4_i32 freeID32(ID32Atom *ID32);
   837 
   860 
   838 mp4_i32 determineVideoLength(MP4HandleImp handle, mp4_u32 *videolength);
   861 mp4_i32 determineVideoLength(MP4HandleImp handle, mp4_u32 *videolength);
   839 mp4_i32 determineFrameRate(MP4HandleImp handle, mp4_double *framerate);
   862 mp4_i32 determineFrameRate(MP4HandleImp handle, mp4_double *framerate);
   840 mp4_i32 determineVideoType(MP4HandleImp handle, mp4_u32 *videotype);
   863 mp4_i32 determineVideoType(MP4HandleImp handle, mp4_u32 *videotype);
   841 mp4_i32 determineVideoResolution(MP4HandleImp handle, mp4_u32 *videowidth, mp4_u32 *videoheight);
   864 mp4_i32 determineVideoResolution(MP4HandleImp handle, mp4_u32 *videowidth, mp4_u32 *videoheight);