| mp4.h | | mp4.h | |
| | | | |
| skipping to change at line 16 | | skipping to change at line 16 | |
| * | | * | |
| * Software distributed under the License is distributed on an "AS | | * Software distributed under the License is distributed on an "AS | |
| * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or | | * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or | |
| * implied. See the License for the specific language governing | | * implied. See the License for the specific language governing | |
| * rights and limitations under the License. | | * rights and limitations under the License. | |
| * | | * | |
| * The Original Code is MPEG4IP. | | * The Original Code is MPEG4IP. | |
| * | | * | |
| * The Initial Developer of the Original Code is Cisco Systems Inc. | | * The Initial Developer of the Original Code is Cisco Systems Inc. | |
| * Portions created by Cisco Systems Inc. are | | * Portions created by Cisco Systems Inc. are | |
|
| * Copyright (C) Cisco Systems Inc. 2001 - 2004. All Rights Reserved. | | * Copyright (C) Cisco Systems Inc. 2001 - 2005. All Rights Reserved. | |
| * | | * | |
| * 3GPP features implementation is based on 3GPP's TS26.234-v5.60, | | * 3GPP features implementation is based on 3GPP's TS26.234-v5.60, | |
| * and was contributed by Ximpo Group Ltd. | | * and was contributed by Ximpo Group Ltd. | |
| * | | * | |
| * Portions created by Ximpo Group Ltd. are | | * Portions created by Ximpo Group Ltd. are | |
| * Copyright (C) Ximpo Group Ltd. 2003, 2004. All Rights Reserved. | | * Copyright (C) Ximpo Group Ltd. 2003, 2004. All Rights Reserved. | |
| * | | * | |
| * Contributor(s): | | * Contributor(s): | |
| * Dave Mackie dmackie@cisco.com | | * Dave Mackie dmackie@cisco.com | |
| * Alix Marchandise-Franquet alix@cisco.com | | * Alix Marchandise-Franquet alix@cisco.com | |
| * Ximpo Group Ltd. mp4v2@ximpo.com | | * Ximpo Group Ltd. mp4v2@ximpo.com | |
|
| | | * Bill May wmay@cisco.com | |
| */ | | */ | |
| | | | |
| #ifndef __MP4_INCLUDED__ | | #ifndef __MP4_INCLUDED__ | |
| #define __MP4_INCLUDED__ | | #define __MP4_INCLUDED__ | |
| | | | |
| /* include system and project specific headers */ | | /* include system and project specific headers */ | |
| #include "mpeg4ip.h" | | #include "mpeg4ip.h" | |
|
| | | | |
| #include <math.h> /* to define float HUGE_VAL and/or NAN */ | | #include <math.h> /* to define float HUGE_VAL and/or NAN */ | |
| #ifndef NAN | | #ifndef NAN | |
| #define NAN HUGE_VAL | | #define NAN HUGE_VAL | |
| #endif | | #endif | |
| | | | |
|
| | | #ifndef DEFAULT | |
| #ifdef __cplusplus | | #ifdef __cplusplus | |
| /* exploit C++ ability of default values for function parameters */ | | /* exploit C++ ability of default values for function parameters */ | |
| #define DEFAULT(x) =x | | #define DEFAULT(x) =x | |
| #else | | #else | |
| #define DEFAULT(x) | | #define DEFAULT(x) | |
| #endif | | #endif | |
|
| | | #endif | |
| | | | |
| /* MP4 API types */ | | /* MP4 API types */ | |
| typedef void* MP4FileHandle; | | typedef void* MP4FileHandle; | |
| typedef u_int32_t MP4TrackId; | | typedef u_int32_t MP4TrackId; | |
| typedef u_int32_t MP4SampleId; | | typedef u_int32_t MP4SampleId; | |
| typedef u_int64_t MP4Timestamp; | | typedef u_int64_t MP4Timestamp; | |
| typedef u_int64_t MP4Duration; | | typedef u_int64_t MP4Duration; | |
| typedef u_int32_t MP4EditId; | | typedef u_int32_t MP4EditId; | |
| | | | |
|
| | | typedef u_int64_t (*VIRTUALIO_GETFILELENGTH)(void *user); // return file le | |
| | | ngth in bytes | |
| | | typedef int (*VIRTUALIO_SETPOSITION)(void *user, u_int64_t position); // re | |
| | | turn 0 on success | |
| | | typedef int (*VIRTUALIO_GETPOSITION)(void *user, u_int64_t *position); // f | |
| | | ill position, return 0 on success | |
| | | typedef size_t (*VIRTUALIO_READ)(void *user, void *buffer, size_t size); // | |
| | | return number of bytes actually read | |
| | | typedef size_t (*VIRTUALIO_WRITE)(void *user, void *buffer, size_t size); / | |
| | | / return number of bytes actually written | |
| | | typedef int (*VIRTUALIO_ENDOFFILE)(void *user); // return 1 if file hit EOF | |
| | | typedef int (*VIRTUALIO_CLOSE)(void *user); // return 0 on success | |
| | | | |
| | | typedef struct Virtual_IO | |
| | | { | |
| | | VIRTUALIO_GETFILELENGTH GetFileLength; | |
| | | VIRTUALIO_SETPOSITION SetPosition; | |
| | | VIRTUALIO_GETPOSITION GetPosition; | |
| | | VIRTUALIO_READ Read; | |
| | | VIRTUALIO_WRITE Write; | |
| | | VIRTUALIO_ENDOFFILE EndOfFile; | |
| | | VIRTUALIO_CLOSE Close; | |
| | | } Virtual_IO_t; | |
| | | | |
| /* Invalid values for API types */ | | /* Invalid values for API types */ | |
| #define MP4_INVALID_FILE_HANDLE ((MP4FileHandle)NULL) | | #define MP4_INVALID_FILE_HANDLE ((MP4FileHandle)NULL) | |
| #define MP4_INVALID_TRACK_ID ((MP4TrackId)0) | | #define MP4_INVALID_TRACK_ID ((MP4TrackId)0) | |
| #define MP4_INVALID_SAMPLE_ID ((MP4SampleId)0) | | #define MP4_INVALID_SAMPLE_ID ((MP4SampleId)0) | |
| #define MP4_INVALID_TIMESTAMP ((MP4Timestamp)-1) | | #define MP4_INVALID_TIMESTAMP ((MP4Timestamp)-1) | |
| #define MP4_INVALID_DURATION ((MP4Duration)-1) | | #define MP4_INVALID_DURATION ((MP4Duration)-1) | |
| #define MP4_INVALID_EDIT_ID ((MP4EditId)0) | | #define MP4_INVALID_EDIT_ID ((MP4EditId)0) | |
| | | | |
| /* Macros to test for API type validity */ | | /* Macros to test for API type validity */ | |
| #define MP4_IS_VALID_FILE_HANDLE(x) ((x) != MP4_INVALID_FILE_HANDLE) | | #define MP4_IS_VALID_FILE_HANDLE(x) ((x) != MP4_INVALID_FILE_HANDLE) | |
| | | | |
| skipping to change at line 101 | | skipping to change at line 122 | |
| * MP4 Known track type names - e.g. MP4GetNumberOfTracks(type) | | * MP4 Known track type names - e.g. MP4GetNumberOfTracks(type) | |
| * | | * | |
| * Note this first group of track types should be created | | * Note this first group of track types should be created | |
| * via the MP4Add<Type>Track() functions, and not MP4AddTrack(type) | | * via the MP4Add<Type>Track() functions, and not MP4AddTrack(type) | |
| */ | | */ | |
| #define MP4_OD_TRACK_TYPE "odsm" | | #define MP4_OD_TRACK_TYPE "odsm" | |
| #define MP4_SCENE_TRACK_TYPE "sdsm" | | #define MP4_SCENE_TRACK_TYPE "sdsm" | |
| #define MP4_AUDIO_TRACK_TYPE "soun" | | #define MP4_AUDIO_TRACK_TYPE "soun" | |
| #define MP4_VIDEO_TRACK_TYPE "vide" | | #define MP4_VIDEO_TRACK_TYPE "vide" | |
| #define MP4_HINT_TRACK_TYPE "hint" | | #define MP4_HINT_TRACK_TYPE "hint" | |
|
| | | #define MP4_CNTL_TRACK_TYPE "cntl" | |
| | | #define MP4_TEXT_TRACK_TYPE "text" | |
| /* | | /* | |
| * This second set of track types should be created | | * This second set of track types should be created | |
| * via MP4AddSystemsTrack(type) | | * via MP4AddSystemsTrack(type) | |
| */ | | */ | |
| #define MP4_CLOCK_TRACK_TYPE "crsm" | | #define MP4_CLOCK_TRACK_TYPE "crsm" | |
| #define MP4_MPEG7_TRACK_TYPE "m7sm" | | #define MP4_MPEG7_TRACK_TYPE "m7sm" | |
| #define MP4_OCI_TRACK_TYPE "ocsm" | | #define MP4_OCI_TRACK_TYPE "ocsm" | |
| #define MP4_IPMP_TRACK_TYPE "ipsm" | | #define MP4_IPMP_TRACK_TYPE "ipsm" | |
| #define MP4_MPEGJ_TRACK_TYPE "mjsm" | | #define MP4_MPEGJ_TRACK_TYPE "mjsm" | |
| | | | |
| #define MP4_IS_VIDEO_TRACK_TYPE(type) \ | | #define MP4_IS_VIDEO_TRACK_TYPE(type) \ | |
| (!strcasecmp(type, MP4_VIDEO_TRACK_TYPE)) | | (!strcasecmp(type, MP4_VIDEO_TRACK_TYPE)) | |
| | | | |
| #define MP4_IS_AUDIO_TRACK_TYPE(type) \ | | #define MP4_IS_AUDIO_TRACK_TYPE(type) \ | |
| (!strcasecmp(type, MP4_AUDIO_TRACK_TYPE)) | | (!strcasecmp(type, MP4_AUDIO_TRACK_TYPE)) | |
| | | | |
|
| | | #define MP4_IS_CNTL_TRACK_TYPE(type) \ | |
| | | (!strcasecmp(type, MP4_CNTL_TRACK_TYPE)) | |
| | | | |
| #define MP4_IS_OD_TRACK_TYPE(type) \ | | #define MP4_IS_OD_TRACK_TYPE(type) \ | |
| (!strcasecmp(type, MP4_OD_TRACK_TYPE)) | | (!strcasecmp(type, MP4_OD_TRACK_TYPE)) | |
| | | | |
| #define MP4_IS_SCENE_TRACK_TYPE(type) \ | | #define MP4_IS_SCENE_TRACK_TYPE(type) \ | |
| (!strcasecmp(type, MP4_SCENE_TRACK_TYPE)) | | (!strcasecmp(type, MP4_SCENE_TRACK_TYPE)) | |
| | | | |
| #define MP4_IS_HINT_TRACK_TYPE(type) \ | | #define MP4_IS_HINT_TRACK_TYPE(type) \ | |
| (!strcasecmp(type, MP4_HINT_TRACK_TYPE)) | | (!strcasecmp(type, MP4_HINT_TRACK_TYPE)) | |
| | | | |
| #define MP4_IS_SYSTEMS_TRACK_TYPE(type) \ | | #define MP4_IS_SYSTEMS_TRACK_TYPE(type) \ | |
| | | | |
| skipping to change at line 158 | | skipping to change at line 184 | |
| #define MP4_ULAW_AUDIO_TYPE 0xE4 /* a private
definition */ | | #define MP4_ULAW_AUDIO_TYPE 0xE4 /* a private
definition */ | |
| #define MP4_G723_AUDIO_TYPE 0xE5 /* a privat
e definition */ | | #define MP4_G723_AUDIO_TYPE 0xE5 /* a privat
e definition */ | |
| #define MP4_PCM16_BIG_ENDIAN_AUDIO_TYPE 0xE6 /* a private definitio
n */ | | #define MP4_PCM16_BIG_ENDIAN_AUDIO_TYPE 0xE6 /* a private definitio
n */ | |
| | | | |
| /* MP4 MPEG-4 Audio types from 14496-3 Table 1.5.1 */ | | /* MP4 MPEG-4 Audio types from 14496-3 Table 1.5.1 */ | |
| #define MP4_MPEG4_INVALID_AUDIO_TYPE 0 | | #define MP4_MPEG4_INVALID_AUDIO_TYPE 0 | |
| #define MP4_MPEG4_AAC_MAIN_AUDIO_TYPE 1 | | #define MP4_MPEG4_AAC_MAIN_AUDIO_TYPE 1 | |
| #define MP4_MPEG4_AAC_LC_AUDIO_TYPE 2 | | #define MP4_MPEG4_AAC_LC_AUDIO_TYPE 2 | |
| #define MP4_MPEG4_AAC_SSR_AUDIO_TYPE 3 | | #define MP4_MPEG4_AAC_SSR_AUDIO_TYPE 3 | |
| #define MP4_MPEG4_AAC_LTP_AUDIO_TYPE 4 | | #define MP4_MPEG4_AAC_LTP_AUDIO_TYPE 4 | |
|
| | | #define MP4_MPEG4_AAC_HE_AUDIO_TYPE 5 | |
| #define MP4_MPEG4_AAC_SCALABLE_AUDIO_TYPE 6 | | #define MP4_MPEG4_AAC_SCALABLE_AUDIO_TYPE 6 | |
| #define MP4_MPEG4_CELP_AUDIO_TYPE 8 | | #define MP4_MPEG4_CELP_AUDIO_TYPE 8 | |
| #define MP4_MPEG4_HVXC_AUDIO_TYPE 9 | | #define MP4_MPEG4_HVXC_AUDIO_TYPE 9 | |
| #define MP4_MPEG4_TTSI_AUDIO_TYPE 12 | | #define MP4_MPEG4_TTSI_AUDIO_TYPE 12 | |
| #define MP4_MPEG4_MAIN_SYNTHETIC_AUDIO_TYPE 13 | | #define MP4_MPEG4_MAIN_SYNTHETIC_AUDIO_TYPE 13 | |
| #define MP4_MPEG4_WAVETABLE_AUDIO_TYPE 14 | | #define MP4_MPEG4_WAVETABLE_AUDIO_TYPE 14 | |
| #define MP4_MPEG4_MIDI_AUDIO_TYPE 15 | | #define MP4_MPEG4_MIDI_AUDIO_TYPE 15 | |
| #define MP4_MPEG4_ALGORITHMIC_FX_AUDIO_TYPE 16 | | #define MP4_MPEG4_ALGORITHMIC_FX_AUDIO_TYPE 16 | |
|
| | | #define MP4_MPEG4_ALS_AUDIO_TYPE 31 | |
| | | #define MP4_MPEG4_LAYER1_AUDIO_TYPE 32 | |
| | | #define MP4_MPEG4_LAYER2_AUDIO_TYPE 33 | |
| | | #define MP4_MPEG4_LAYER3_AUDIO_TYPE 34 | |
| | | #define MP4_MPEG4_SLS_AUDIO_TYPE 35 | |
| | | | |
| /* MP4 Audio type utilities following common usage */ | | /* MP4 Audio type utilities following common usage */ | |
| #define MP4_IS_MP3_AUDIO_TYPE(type) \ | | #define MP4_IS_MP3_AUDIO_TYPE(type) \ | |
| ((type) == MP4_MPEG1_AUDIO_TYPE || (type) == MP4_MPEG2_AUDIO_TYPE) | | ((type) == MP4_MPEG1_AUDIO_TYPE || (type) == MP4_MPEG2_AUDIO_TYPE) | |
| | | | |
| #define MP4_IS_MPEG2_AAC_AUDIO_TYPE(type) \ | | #define MP4_IS_MPEG2_AAC_AUDIO_TYPE(type) \ | |
| (((type) >= MP4_MPEG2_AAC_MAIN_AUDIO_TYPE \ | | (((type) >= MP4_MPEG2_AAC_MAIN_AUDIO_TYPE \ | |
| && (type) <= MP4_MPEG2_AAC_SSR_AUDIO_TYPE)) | | && (type) <= MP4_MPEG2_AAC_SSR_AUDIO_TYPE)) | |
| | | | |
| #define MP4_IS_MPEG4_AAC_AUDIO_TYPE(mpeg4Type) \ | | #define MP4_IS_MPEG4_AAC_AUDIO_TYPE(mpeg4Type) \ | |
| (((mpeg4Type) >= MP4_MPEG4_AAC_MAIN_AUDIO_TYPE \ | | (((mpeg4Type) >= MP4_MPEG4_AAC_MAIN_AUDIO_TYPE \ | |
|
| && (mpeg4Type) <= MP4_MPEG4_AAC_LTP_AUDIO_TYPE) \ | | && (mpeg4Type) <= MP4_MPEG4_AAC_HE_AUDIO_TYPE) \ | |
| || (mpeg4Type) == MP4_MPEG4_AAC_SCALABLE_AUDIO_TYPE \ | | || (mpeg4Type) == MP4_MPEG4_AAC_SCALABLE_AUDIO_TYPE \ | |
| || (mpeg4Type) == 17) | | || (mpeg4Type) == 17) | |
| | | | |
| #define MP4_IS_AAC_AUDIO_TYPE(type) \ | | #define MP4_IS_AAC_AUDIO_TYPE(type) \ | |
| (MP4_IS_MPEG2_AAC_AUDIO_TYPE(type) \ | | (MP4_IS_MPEG2_AAC_AUDIO_TYPE(type) \ | |
| || (type) == MP4_MPEG4_AUDIO_TYPE) | | || (type) == MP4_MPEG4_AUDIO_TYPE) | |
| | | | |
| /* MP4 Video track types - see MP4AddVideoTrack() */ | | /* MP4 Video track types - see MP4AddVideoTrack() */ | |
| #define MP4_INVALID_VIDEO_TYPE 0x00 | | #define MP4_INVALID_VIDEO_TYPE 0x00 | |
| #define MP4_MPEG1_VIDEO_TYPE 0x6A | | #define MP4_MPEG1_VIDEO_TYPE 0x6A | |
| | | | |
| skipping to change at line 199 | | skipping to change at line 231 | |
| #define MP4_MPEG2_MAIN_VIDEO_TYPE 0x61 | | #define MP4_MPEG2_MAIN_VIDEO_TYPE 0x61 | |
| #define MP4_MPEG2_SNR_VIDEO_TYPE 0x62 | | #define MP4_MPEG2_SNR_VIDEO_TYPE 0x62 | |
| #define MP4_MPEG2_SPATIAL_VIDEO_TYPE 0x63 | | #define MP4_MPEG2_SPATIAL_VIDEO_TYPE 0x63 | |
| #define MP4_MPEG2_HIGH_VIDEO_TYPE 0x64 | | #define MP4_MPEG2_HIGH_VIDEO_TYPE 0x64 | |
| #define MP4_MPEG2_442_VIDEO_TYPE 0x65 | | #define MP4_MPEG2_442_VIDEO_TYPE 0x65 | |
| #define MP4_MPEG2_VIDEO_TYPE MP4_MPEG2_MAIN_VIDEO_TYPE | | #define MP4_MPEG2_VIDEO_TYPE MP4_MPEG2_MAIN_VIDEO_TYPE | |
| #define MP4_MPEG4_VIDEO_TYPE 0x20 | | #define MP4_MPEG4_VIDEO_TYPE 0x20 | |
| #define MP4_JPEG_VIDEO_TYPE 0x6C | | #define MP4_JPEG_VIDEO_TYPE 0x6C | |
| #define MP4_PRIVATE_VIDEO_TYPE 0xD0 | | #define MP4_PRIVATE_VIDEO_TYPE 0xD0 | |
| #define MP4_YUV12_VIDEO_TYPE 0xF0 /* a private definit
ion */ | | #define MP4_YUV12_VIDEO_TYPE 0xF0 /* a private definit
ion */ | |
|
| #define MP4_H264_VIDEO_TYPE 0xF1 /* a private
definition */ | | | |
| #define MP4_H263_VIDEO_TYPE 0xF2 /* a private
definition */ | | #define MP4_H263_VIDEO_TYPE 0xF2 /* a private
definition */ | |
| #define MP4_H261_VIDEO_TYPE 0xF3 /* a private
definition */ | | #define MP4_H261_VIDEO_TYPE 0xF3 /* a private
definition */ | |
| | | | |
| /* MP4 Video type utilities */ | | /* MP4 Video type utilities */ | |
| #define MP4_IS_MPEG1_VIDEO_TYPE(type) \ | | #define MP4_IS_MPEG1_VIDEO_TYPE(type) \ | |
| ((type) == MP4_MPEG1_VIDEO_TYPE) | | ((type) == MP4_MPEG1_VIDEO_TYPE) | |
| | | | |
| #define MP4_IS_MPEG2_VIDEO_TYPE(type) \ | | #define MP4_IS_MPEG2_VIDEO_TYPE(type) \ | |
| (((type) >= MP4_MPEG2_SIMPLE_VIDEO_TYPE \ | | (((type) >= MP4_MPEG2_SIMPLE_VIDEO_TYPE \ | |
| && (type) <= MP4_MPEG2_442_VIDEO_TYPE) \ | | && (type) <= MP4_MPEG2_442_VIDEO_TYPE) \ | |
| | | | |
| skipping to change at line 291 | | skipping to change at line 322 | |
| /* file operations */ | | /* file operations */ | |
| #define MP4_CREATE_64BIT_DATA (0x01) | | #define MP4_CREATE_64BIT_DATA (0x01) | |
| #define MP4_CREATE_64BIT_TIME (0x02) // Quicktime is not compatible with th
is | | #define MP4_CREATE_64BIT_TIME (0x02) // Quicktime is not compatible with th
is | |
| #define MP4_CREATE_64BIT (MP4_CREATE_64BIT_DATA | MP4_CREATE_64BIT_TIME) | | #define MP4_CREATE_64BIT (MP4_CREATE_64BIT_DATA | MP4_CREATE_64BIT_TIME) | |
| #define MP4_CREATE_EXTENSIBLE_FORMAT (0x04) | | #define MP4_CREATE_EXTENSIBLE_FORMAT (0x04) | |
| | | | |
| MP4FileHandle MP4Create( | | MP4FileHandle MP4Create( | |
| const char* fileName, | | const char* fileName, | |
| u_int32_t verbosity DEFAULT(0), | | u_int32_t verbosity DEFAULT(0), | |
| u_int32_t flags DEFAULT(0)); | | u_int32_t flags DEFAULT(0)); | |
|
| | | | |
| MP4FileHandle MP4CreateEx( | | MP4FileHandle MP4CreateEx( | |
|
| const char* fileName, | | const char *fileName, | |
| u_int32_t verbosity DEFAULT(0), | | u_int32_t verbosity DEFAULT(0), | |
| u_int32_t flags DEFAULT(0), | | u_int32_t flags DEFAULT(0), | |
| char* majorBrand DEFAULT(0), | | int add_ftyp DEFAULT(1), | |
| u_int32_t minorVersion DEFAULT(0), | | int add_iods DEFAULT(1), | |
| char** supportedBrands DEFAULT(0), | | char* majorBrand DEFAULT(0), | |
| u_int32_t supportedBrandsCount DEFAULT(0)); | | u_int32_t minorVersion DEFAULT(0), | |
| | | char** supportedBrands DEFAULT(0), | |
| | | u_int32_t supportedBrandsCount DEFAULT(0)); | |
| | | | |
| MP4FileHandle MP4Modify( | | MP4FileHandle MP4Modify( | |
| const char* fileName, | | const char* fileName, | |
| u_int32_t verbosity DEFAULT(0), | | u_int32_t verbosity DEFAULT(0), | |
| u_int32_t flags DEFAULT(0)); | | u_int32_t flags DEFAULT(0)); | |
| | | | |
| MP4FileHandle MP4Read( | | MP4FileHandle MP4Read( | |
| const char* fileName, | | const char* fileName, | |
| u_int32_t verbosity DEFAULT(0)); | | u_int32_t verbosity DEFAULT(0)); | |
| | | | |
|
| bool MP4Close( | | // benski> | |
| | | MP4FileHandle MP4ReadEx(const char* fileName, | |
| | | void *user, | |
| | | Virtual_IO_t *virtual_IO, | |
| | | u_int32_t verbosity DEFAULT(0)); | |
| | | | |
| | | void MP4Close( | |
| MP4FileHandle hFile); | | MP4FileHandle hFile); | |
| | | | |
| bool MP4Optimize( | | bool MP4Optimize( | |
| const char* existingFileName, | | const char* existingFileName, | |
| const char* newFileName DEFAULT(NULL), | | const char* newFileName DEFAULT(NULL), | |
| u_int32_t verbosity DEFAULT(0)); | | u_int32_t verbosity DEFAULT(0)); | |
| | | | |
| bool MP4Dump( | | bool MP4Dump( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| FILE* pDumpFile DEFAULT(NULL), | | FILE* pDumpFile DEFAULT(NULL), | |
| | | | |
| skipping to change at line 337 | | skipping to change at line 375 | |
| char* MP4FileInfo( | | char* MP4FileInfo( | |
| const char* fileName, | | const char* fileName, | |
| MP4TrackId trackId DEFAULT(MP4_INVALID_TRACK_ID)); | | MP4TrackId trackId DEFAULT(MP4_INVALID_TRACK_ID)); | |
| | | | |
| /* file properties */ | | /* file properties */ | |
| | | | |
| /* specific file properties */ | | /* specific file properties */ | |
| | | | |
| u_int32_t MP4GetVerbosity(MP4FileHandle hFile); | | u_int32_t MP4GetVerbosity(MP4FileHandle hFile); | |
| | | | |
|
| bool MP4SetVerbosity(MP4FileHandle hFile, u_int32_t verbosity); | | void MP4SetVerbosity(MP4FileHandle hFile, u_int32_t verbosity); | |
| | | | |
| MP4Duration MP4GetDuration(MP4FileHandle hFile); | | MP4Duration MP4GetDuration(MP4FileHandle hFile); | |
| | | | |
| u_int32_t MP4GetTimeScale(MP4FileHandle hFile); | | u_int32_t MP4GetTimeScale(MP4FileHandle hFile); | |
| | | | |
| bool MP4SetTimeScale(MP4FileHandle hFile, u_int32_t value); | | bool MP4SetTimeScale(MP4FileHandle hFile, u_int32_t value); | |
| | | | |
| u_int8_t MP4GetODProfileLevel(MP4FileHandle hFile); | | u_int8_t MP4GetODProfileLevel(MP4FileHandle hFile); | |
| | | | |
| bool MP4SetODProfileLevel(MP4FileHandle hFile, u_int8_t value); | | bool MP4SetODProfileLevel(MP4FileHandle hFile, u_int8_t value); | |
| | | | |
| u_int8_t MP4GetSceneProfileLevel(MP4FileHandle hFile); | | u_int8_t MP4GetSceneProfileLevel(MP4FileHandle hFile); | |
| | | | |
| bool MP4SetSceneProfileLevel(MP4FileHandle hFile, u_int8_t value); | | bool MP4SetSceneProfileLevel(MP4FileHandle hFile, u_int8_t value); | |
| | | | |
|
| u_int8_t MP4GetVideoProfileLevel(MP4FileHandle hFile); | | u_int8_t MP4GetVideoProfileLevel(MP4FileHandle hFile, | |
| | | MP4TrackId trackId DEFAULT(MP4_INVALID_TRAC | |
| | | K_ID)); | |
| | | | |
|
| bool MP4SetVideoProfileLevel(MP4FileHandle hFile, u_int8_t value); | | void MP4SetVideoProfileLevel(MP4FileHandle hFile, u_int8_t value); | |
| | | | |
| u_int8_t MP4GetAudioProfileLevel(MP4FileHandle hFile); | | u_int8_t MP4GetAudioProfileLevel(MP4FileHandle hFile); | |
| | | | |
|
| bool MP4SetAudioProfileLevel(MP4FileHandle hFile, u_int8_t value); | | void MP4SetAudioProfileLevel(MP4FileHandle hFile, u_int8_t value); | |
| | | | |
| u_int8_t MP4GetGraphicsProfileLevel(MP4FileHandle hFile); | | u_int8_t MP4GetGraphicsProfileLevel(MP4FileHandle hFile); | |
| | | | |
| bool MP4SetGraphicsProfileLevel(MP4FileHandle hFile, u_int8_t value); | | bool MP4SetGraphicsProfileLevel(MP4FileHandle hFile, u_int8_t value); | |
| | | | |
| /* generic file properties */ | | /* generic file properties */ | |
|
| | | bool MP4HaveAtom(MP4FileHandle hFile, | |
| | | const char *atomName); | |
| | | | |
|
| u_int64_t MP4GetIntegerProperty( | | bool MP4GetIntegerProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
|
| const char* propName); | | const char* propName, | |
| | | u_int64_t *retval ); | |
| bool MP4HaveTrackIntegerProperty( | | | |
| MP4FileHandle hFile, MP4TrackId trackId, | | | |
| const char* propName); | | | |
| | | | |
|
| float MP4GetFloatProperty( | | bool MP4GetFloatProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
|
| const char* propName); | | const char* propName, | |
| | | float *retvalue); | |
| | | | |
|
| const char* MP4GetStringProperty( | | bool MP4GetStringProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
|
| const char* propName); | | const char* propName, | |
| | | const char **retvalue); | |
| | | | |
|
| void MP4GetBytesProperty( | | bool MP4GetBytesProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| const char* propName, | | const char* propName, | |
| u_int8_t** ppValue, | | u_int8_t** ppValue, | |
| u_int32_t* pValueSize); | | u_int32_t* pValueSize); | |
| | | | |
| bool MP4SetIntegerProperty( | | bool MP4SetIntegerProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| const char* propName, | | const char* propName, | |
| int64_t value); | | int64_t value); | |
| | | | |
| | | | |
| skipping to change at line 434 | | skipping to change at line 474 | |
| u_int32_t timeScale, | | u_int32_t timeScale, | |
| MP4Duration sampleDuration, | | MP4Duration sampleDuration, | |
| u_int8_t audioType DEFAULT(MP4_MPEG4_AUDIO_TYPE)); | | u_int8_t audioType DEFAULT(MP4_MPEG4_AUDIO_TYPE)); | |
| | | | |
| typedef struct mp4v2_ismacryp_session_params { | | typedef struct mp4v2_ismacryp_session_params { | |
| u_int32_t scheme_type; | | u_int32_t scheme_type; | |
| u_int16_t scheme_version; | | u_int16_t scheme_version; | |
| u_int8_t key_ind_len; | | u_int8_t key_ind_len; | |
| u_int8_t iv_len; | | u_int8_t iv_len; | |
| u_int8_t selective_enc; | | u_int8_t selective_enc; | |
|
| char *kms_uri; | | const char *kms_uri; | |
| } mp4v2_ismacrypParams; | | } mp4v2_ismacrypParams; | |
| | | | |
|
| | | // API to initialize ismacryp properties to sensible defaults | |
| | | // if input param is null then mallocs a params struct | |
| | | mp4v2_ismacrypParams *MP4DefaultISMACrypParams(mp4v2_ismacrypParams *ptr); | |
| | | | |
| MP4TrackId MP4AddEncAudioTrack( | | MP4TrackId MP4AddEncAudioTrack( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| u_int32_t timeScale, | | u_int32_t timeScale, | |
| MP4Duration sampleDuration, | | MP4Duration sampleDuration, | |
| mp4v2_ismacrypParams *icPp, | | mp4v2_ismacrypParams *icPp, | |
| u_int8_t audioType DEFAULT(MP4_MPEG4_AUDIO_TYPE)); | | u_int8_t audioType DEFAULT(MP4_MPEG4_AUDIO_TYPE)); | |
|
| | | | |
| MP4TrackId MP4AddAmrAudioTrack( | | MP4TrackId MP4AddAmrAudioTrack( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| u_int32_t timeScale, | | u_int32_t timeScale, | |
| u_int16_t modeSet, | | u_int16_t modeSet, | |
| u_int8_t modeChangePeriod, | | u_int8_t modeChangePeriod, | |
| u_int8_t framesPerSample, | | u_int8_t framesPerSample, | |
| bool isAmrWB); | | bool isAmrWB); | |
| | | | |
| void MP4SetAmrVendor( | | void MP4SetAmrVendor( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| | | | |
| skipping to change at line 461 | | skipping to change at line 506 | |
| void MP4SetAmrVendor( | | void MP4SetAmrVendor( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| u_int32_t vendor); | | u_int32_t vendor); | |
| | | | |
| void MP4SetAmrDecoderVersion( | | void MP4SetAmrDecoderVersion( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| u_int8_t decoderVersion); | | u_int8_t decoderVersion); | |
| | | | |
|
| void MP4SetAmrModeSet( | | void MP4SetAmrModeSet(MP4FileHandle hFile, MP4TrackId trakId, uint16_t mode | |
| MP4FileHandle hFile, | | Set); | |
| MP4TrackId trackId, | | uint16_t MP4GetAmrModeSet(MP4FileHandle hFile, MP4TrackId trackId); | |
| u_int16_t modeSet); | | | |
| | | | |
|
| | | MP4TrackId MP4AddHrefTrack(MP4FileHandle hFile, | |
| | | uint32_t timeScale, | |
| | | MP4Duration sampleDuration, | |
| | | const char *base_url DEFAULT(NULL)); | |
| | | | |
| | | const char *MP4GetHrefTrackBaseUrl(MP4FileHandle hFile, | |
| | | MP4TrackId trackId); | |
| MP4TrackId MP4AddVideoTrack( | | MP4TrackId MP4AddVideoTrack( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| u_int32_t timeScale, | | u_int32_t timeScale, | |
| MP4Duration sampleDuration, | | MP4Duration sampleDuration, | |
| u_int16_t width, | | u_int16_t width, | |
| u_int16_t height, | | u_int16_t height, | |
| u_int8_t videoType DEFAULT(MP4_MPEG4_VIDEO_TYPE)); | | u_int8_t videoType DEFAULT(MP4_MPEG4_VIDEO_TYPE)); | |
| | | | |
| MP4TrackId MP4AddEncVideoTrack( | | MP4TrackId MP4AddEncVideoTrack( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| u_int32_t timeScale, | | u_int32_t timeScale, | |
| MP4Duration sampleDuration, | | MP4Duration sampleDuration, | |
| u_int16_t width, | | u_int16_t width, | |
| u_int16_t height, | | u_int16_t height, | |
| mp4v2_ismacrypParams *icPp, | | mp4v2_ismacrypParams *icPp, | |
|
| u_int8_t videoType DEFAULT(MP4_MPEG4_VIDEO_TYPE)); | | u_int8_t videoType DEFAULT(MP4_MPEG4_VIDEO_TYPE), | |
| | | const char *oFormat DEFAULT(NULL)); | |
| | | | |
| | | MP4TrackId MP4AddH264VideoTrack( | |
| | | MP4FileHandle hFile, | |
| | | u_int32_t timeScale, | |
| | | MP4Duration sampleDuration, | |
| | | u_int16_t width, | |
| | | u_int16_t height, | |
| | | uint8_t AVCProfileIndication, | |
| | | uint8_t profile_compat, | |
| | | uint8_t AVCLevelIndication, | |
| | | uint8_t sampleLenFieldSizeMinusOne); | |
| | | | |
|
| | | MP4TrackId MP4AddEncH264VideoTrack( | |
| | | MP4FileHandle dstFile, | |
| | | u_int32_t timeScale, | |
| | | MP4Duration sampleDuration, | |
| | | u_int16_t width, | |
| | | u_int16_t height, | |
| | | MP4FileHandle srcFile, | |
| | | MP4TrackId srcTrackId, | |
| | | mp4v2_ismacrypParams *icPp); | |
| | | | |
| | | void MP4AddH264SequenceParameterSet(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, | |
| | | const uint8_t *pSequence, | |
| | | uint16_t sequenceLen); | |
| | | void MP4AddH264PictureParameterSet(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, | |
| | | const uint8_t *pPict, | |
| | | uint16_t pictLen); | |
| void MP4SetH263Vendor( | | void MP4SetH263Vendor( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| u_int32_t vendor); | | u_int32_t vendor); | |
| | | | |
| void MP4SetH263DecoderVersion( | | void MP4SetH263DecoderVersion( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| u_int8_t decoderVersion); | | u_int8_t decoderVersion); | |
| | | | |
| | | | |
| skipping to change at line 514 | | skipping to change at line 594 | |
| u_int16_t height, | | u_int16_t height, | |
| u_int8_t h263Level, | | u_int8_t h263Level, | |
| u_int8_t h263Profile, | | u_int8_t h263Profile, | |
| u_int32_t avgBitrate, | | u_int32_t avgBitrate, | |
| u_int32_t maxBitrate); | | u_int32_t maxBitrate); | |
| | | | |
| MP4TrackId MP4AddHintTrack( | | MP4TrackId MP4AddHintTrack( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId refTrackId); | | MP4TrackId refTrackId); | |
| | | | |
|
| | | MP4TrackId MP4AddTextTrack( | |
| | | MP4FileHandle hFile, | |
| | | MP4TrackId refTrackId); | |
| | | | |
| | | MP4TrackId MP4AddChapterTextTrack( | |
| | | MP4FileHandle hFile, | |
| | | MP4TrackId refTrackId); | |
| | | | |
| MP4TrackId MP4CloneTrack( | | MP4TrackId MP4CloneTrack( | |
| MP4FileHandle srcFile, | | MP4FileHandle srcFile, | |
| MP4TrackId srcTrackId, | | MP4TrackId srcTrackId, | |
| MP4FileHandle dstFile DEFAULT(MP4_INVALID_FILE_HANDLE), | | MP4FileHandle dstFile DEFAULT(MP4_INVALID_FILE_HANDLE), | |
| MP4TrackId dstHintTrackReferenceTrack DEFAULT(MP4_INVALID_TRACK_ID))
; | | MP4TrackId dstHintTrackReferenceTrack DEFAULT(MP4_INVALID_TRACK_ID))
; | |
| | | | |
| MP4TrackId MP4EncAndCloneTrack( | | MP4TrackId MP4EncAndCloneTrack( | |
| MP4FileHandle srcFile, | | MP4FileHandle srcFile, | |
| MP4TrackId srcTrackId, | | MP4TrackId srcTrackId, | |
| mp4v2_ismacrypParams *icPp, | | mp4v2_ismacrypParams *icPp, | |
| | | | |
| skipping to change at line 546 | | skipping to change at line 634 | |
| MP4TrackId MP4EncAndCopyTrack( | | MP4TrackId MP4EncAndCopyTrack( | |
| MP4FileHandle srcFile, | | MP4FileHandle srcFile, | |
| MP4TrackId srcTrackId, | | MP4TrackId srcTrackId, | |
| mp4v2_ismacrypParams *icPp, | | mp4v2_ismacrypParams *icPp, | |
| encryptFunc_t encfcnp, | | encryptFunc_t encfcnp, | |
| u_int32_t encfcnparam1, | | u_int32_t encfcnparam1, | |
| MP4FileHandle dstFile DEFAULT(MP4_INVALID_FILE_HANDLE), | | MP4FileHandle dstFile DEFAULT(MP4_INVALID_FILE_HANDLE), | |
| bool applyEdits DEFAULT(false), | | bool applyEdits DEFAULT(false), | |
| MP4TrackId dstHintTrackReferenceTrack DEFAULT(MP4_INVALID_TRACK_ID))
; | | MP4TrackId dstHintTrackReferenceTrack DEFAULT(MP4_INVALID_TRACK_ID))
; | |
| | | | |
|
| bool MP4DeleteTrack( | | void MP4DeleteTrack( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
| u_int32_t MP4GetNumberOfTracks( | | u_int32_t MP4GetNumberOfTracks( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| const char* type DEFAULT(NULL), | | const char* type DEFAULT(NULL), | |
| u_int8_t subType DEFAULT(0)); | | u_int8_t subType DEFAULT(0)); | |
| | | | |
| MP4TrackId MP4FindTrackId( | | MP4TrackId MP4FindTrackId( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| | | | |
| skipping to change at line 569 | | skipping to change at line 657 | |
| u_int8_t subType DEFAULT(0)); | | u_int8_t subType DEFAULT(0)); | |
| | | | |
| u_int16_t MP4FindTrackIndex( | | u_int16_t MP4FindTrackIndex( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
| /* track properties */ | | /* track properties */ | |
| | | | |
| /* specific track properties */ | | /* specific track properties */ | |
| | | | |
|
| | | bool MP4HaveTrackAtom(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, | |
| | | const char *atomname); | |
| | | | |
| const char* MP4GetTrackType( | | const char* MP4GetTrackType( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
|
| | | const char *MP4GetTrackMediaDataName(MP4FileHandle hFile, | |
| | | MP4TrackId trackId); | |
| | | | |
| | | // MP4GetTrackMediaDataOriginalFormat is to be used to get the original | |
| | | // MediaDataName if a track has been encrypted. | |
| | | bool MP4GetTrackMediaDataOriginalFormat(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, char *originalFormat, u_int32_t buflen); | |
| | | | |
| MP4Duration MP4GetTrackDuration( | | MP4Duration MP4GetTrackDuration( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
| u_int32_t MP4GetTrackTimeScale( | | u_int32_t MP4GetTrackTimeScale( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
|
| bool MP4SetTrackTimeScale( | | void MP4SetTrackTimeScale( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| u_int32_t value); | | u_int32_t value); | |
| | | | |
|
| // Should not be used, replace with MP4GetTrackEsdsObjectTypeId | | | |
| u_int8_t MP4GetTrackAudioType( | | | |
| MP4FileHandle hFile, | | | |
| MP4TrackId trackId); | | | |
| | | | |
| u_int8_t MP4GetTrackAudioMpeg4Type( | | u_int8_t MP4GetTrackAudioMpeg4Type( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
|
| // Should not be used, replace with MP4GetTrackEsdsObjectTypeId | | | |
| u_int8_t MP4GetTrackVideoType( | | | |
| MP4FileHandle hFile, | | | |
| MP4TrackId trackId); | | | |
| | | | |
| u_int8_t MP4GetTrackEsdsObjectTypeId( | | u_int8_t MP4GetTrackEsdsObjectTypeId( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
| /* returns MP4_INVALID_DURATION if track samples do not have a fixed durati
on */ | | /* returns MP4_INVALID_DURATION if track samples do not have a fixed durati
on */ | |
| MP4Duration MP4GetTrackFixedSampleDuration( | | MP4Duration MP4GetTrackFixedSampleDuration( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
| u_int32_t MP4GetTrackBitRate( | | u_int32_t MP4GetTrackBitRate( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
|
| | | bool MP4GetTrackVideoMetadata(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, | |
| | | uint8_t **ppConfig, | |
| | | uint32_t *pConfigSize); | |
| | | | |
| bool MP4GetTrackESConfiguration( | | bool MP4GetTrackESConfiguration( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| u_int8_t** ppConfig, | | u_int8_t** ppConfig, | |
| u_int32_t* pConfigSize); | | u_int32_t* pConfigSize); | |
| | | | |
| bool MP4SetTrackESConfiguration( | | bool MP4SetTrackESConfiguration( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| const u_int8_t* pConfig, | | const u_int8_t* pConfig, | |
| u_int32_t configSize); | | u_int32_t configSize); | |
| | | | |
|
| | | /* h264 information routines */ | |
| | | bool MP4GetTrackH264ProfileLevel(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, | |
| | | uint8_t *pProfile, | |
| | | uint8_t *pLevel); | |
| | | void MP4GetTrackH264SeqPictHeaders(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, | |
| | | uint8_t ***pSeqHeaders, | |
| | | uint32_t **pSeqHeaderSize, | |
| | | uint8_t ***pPictHeader, | |
| | | uint32_t **pPictHeaderSize); | |
| | | bool MP4GetTrackH264LengthSize(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, | |
| | | uint32_t *pLength); | |
| MP4SampleId MP4GetTrackNumberOfSamples( | | MP4SampleId MP4GetTrackNumberOfSamples( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
| u_int16_t MP4GetTrackVideoWidth( | | u_int16_t MP4GetTrackVideoWidth( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
| u_int16_t MP4GetTrackVideoHeight( | | u_int16_t MP4GetTrackVideoHeight( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
|
| float MP4GetTrackVideoFrameRate( | | double MP4GetTrackVideoFrameRate( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
|
| | | int MP4GetTrackAudioChannels(MP4FileHandle hFile, | |
| | | MP4TrackId trackId); | |
| | | | |
| bool MP4IsIsmaCrypMediaTrack( | | bool MP4IsIsmaCrypMediaTrack( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId); | | MP4TrackId trackId); | |
| | | | |
| /* generic track properties */ | | /* generic track properties */ | |
| | | | |
|
| u_int64_t MP4GetTrackIntegerProperty( | | bool MP4HaveTrackAtom(MP4FileHandle hFile, | |
| | | MP4TrackId trackId, | |
| | | const char *atomName); | |
| | | | |
| | | bool MP4GetTrackIntegerProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
|
| const char* propName); | | const char* propName, | |
| | | u_int64_t *retvalue); | |
| | | | |
|
| float MP4GetTrackFloatProperty( | | bool MP4GetTrackFloatProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
|
| const char* propName); | | const char* propName, | |
| | | float *ret_value); | |
| | | | |
|
| const char* MP4GetTrackStringProperty( | | bool MP4GetTrackStringProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
|
| const char* propName); | | const char* propName, | |
| | | const char **retvalue); | |
| | | | |
|
| void MP4GetTrackBytesProperty( | | bool MP4GetTrackBytesProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| const char* propName, | | const char* propName, | |
| u_int8_t** ppValue, | | u_int8_t** ppValue, | |
| u_int32_t* pValueSize); | | u_int32_t* pValueSize); | |
| | | | |
| bool MP4SetTrackIntegerProperty( | | bool MP4SetTrackIntegerProperty( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| const char* propName, | | const char* propName, | |
| | | | |
| skipping to change at line 1048 | | skipping to change at line 1167 | |
| | | | |
| MP4SampleId MP4GetSampleIdFromEditTime( | | MP4SampleId MP4GetSampleIdFromEditTime( | |
| MP4FileHandle hFile, | | MP4FileHandle hFile, | |
| MP4TrackId trackId, | | MP4TrackId trackId, | |
| MP4Timestamp when, | | MP4Timestamp when, | |
| MP4Timestamp* pStartTime DEFAULT(NULL), | | MP4Timestamp* pStartTime DEFAULT(NULL), | |
| MP4Duration* pDuration DEFAULT(NULL)); | | MP4Duration* pDuration DEFAULT(NULL)); | |
| /* iTunes metadata handling */ | | /* iTunes metadata handling */ | |
| bool MP4MetadataDelete(MP4FileHandle hFile); | | bool MP4MetadataDelete(MP4FileHandle hFile); | |
| bool MP4GetMetadataByIndex(MP4FileHandle hFile, u_int32_t index, | | bool MP4GetMetadataByIndex(MP4FileHandle hFile, u_int32_t index, | |
|
| const char** ppName, | | char** ppName, // need to free memory | |
| u_int8_t** ppValue, u_int32_t* pValueSize); | | u_int8_t** ppValue, // need to free | |
| | | u_int32_t* pValueSize); | |
| bool MP4SetMetadataName(MP4FileHandle hFile, const char* value); | | bool MP4SetMetadataName(MP4FileHandle hFile, const char* value); | |
| bool MP4GetMetadataName(MP4FileHandle hFile, char** value); | | bool MP4GetMetadataName(MP4FileHandle hFile, char** value); | |
|
| | | bool MP4DeleteMetadataName(MP4FileHandle hFile); | |
| bool MP4SetMetadataArtist(MP4FileHandle hFile, const char* value); | | bool MP4SetMetadataArtist(MP4FileHandle hFile, const char* value); | |
| bool MP4GetMetadataArtist(MP4FileHandle hFile, char** value); | | bool MP4GetMetadataArtist(MP4FileHandle hFile, char** value); | |
|
| | | bool MP4DeleteMetadataArtist(MP4FileHandle hFile); | |
| bool MP4SetMetadataWriter(MP4FileHandle hFile, const char* value); | | bool MP4SetMetadataWriter(MP4FileHandle hFile, const char* value); | |
| bool MP4GetMetadataWriter(MP4FileHandle hFile, char** value); | | bool MP4GetMetadataWriter(MP4FileHandle hFile, char** value); | |
|
| | | bool MP4DeleteMetadataWriter(MP4FileHandle hFile); | |
| bool MP4SetMetadataComment(MP4FileHandle hFile, const char* value); | | bool MP4SetMetadataComment(MP4FileHandle hFile, const char* value); | |
| bool MP4GetMetadataComment(MP4FileHandle hFile, char** value); | | bool MP4GetMetadataComment(MP4FileHandle hFile, char** value); | |
|
| | | bool MP4DeleteMetadataComment(MP4FileHandle hFile); | |
| bool MP4SetMetadataTool(MP4FileHandle hFile, const char* value); | | bool MP4SetMetadataTool(MP4FileHandle hFile, const char* value); | |
| bool MP4GetMetadataTool(MP4FileHandle hFile, char** value); | | bool MP4GetMetadataTool(MP4FileHandle hFile, char** value); | |
|
| | | bool MP4DeleteMetadataTool(MP4FileHandle hFile); | |
| bool MP4SetMetadataYear(MP4FileHandle hFile, const char* value); | | bool MP4SetMetadataYear(MP4FileHandle hFile, const char* value); | |
| bool MP4GetMetadataYear(MP4FileHandle hFile, char** value); | | bool MP4GetMetadataYear(MP4FileHandle hFile, char** value); | |
|
| | | bool MP4DeleteMetadataYear(MP4FileHandle hFile); | |
| bool MP4SetMetadataAlbum(MP4FileHandle hFile, const char* value); | | bool MP4SetMetadataAlbum(MP4FileHandle hFile, const char* value); | |
| bool MP4GetMetadataAlbum(MP4FileHandle hFile, char** value); | | bool MP4GetMetadataAlbum(MP4FileHandle hFile, char** value); | |
|
| | | bool MP4DeleteMetadataAlbum(MP4FileHandle hFile); | |
| bool MP4SetMetadataTrack(MP4FileHandle hFile, | | bool MP4SetMetadataTrack(MP4FileHandle hFile, | |
| u_int16_t track, u_int16_t totalTracks); | | u_int16_t track, u_int16_t totalTracks); | |
| bool MP4GetMetadataTrack(MP4FileHandle hFile, | | bool MP4GetMetadataTrack(MP4FileHandle hFile, | |
| u_int16_t* track, u_int16_t* totalTracks); | | u_int16_t* track, u_int16_t* totalTracks); | |
|
| | | bool MP4DeleteMetadataTrack(MP4FileHandle hFile); | |
| bool MP4SetMetadataDisk(MP4FileHandle hFile, | | bool MP4SetMetadataDisk(MP4FileHandle hFile, | |
| u_int16_t disk, u_int16_t totalDisks); | | u_int16_t disk, u_int16_t totalDisks); | |
| bool MP4GetMetadataDisk(MP4FileHandle hFile, | | bool MP4GetMetadataDisk(MP4FileHandle hFile, | |
| u_int16_t* disk, u_int16_t* totalDisks); | | u_int16_t* disk, u_int16_t* totalDisks); | |
|
| | | bool MP4DeleteMetadataDisk(MP4FileHandle hFile); | |
| bool MP4SetMetadataGenre(MP4FileHandle hFile, const char *genre); | | bool MP4SetMetadataGenre(MP4FileHandle hFile, const char *genre); | |
| bool MP4GetMetadataGenre(MP4FileHandle hFile, char **genre); | | bool MP4GetMetadataGenre(MP4FileHandle hFile, char **genre); | |
|
| | | bool MP4DeleteMetadataGenre(MP4FileHandle hFile); | |
| | | bool MP4SetMetadataGrouping(MP4FileHandle hFile, const char *grouping); | |
| | | bool MP4GetMetadataGrouping(MP4FileHandle hFile, char **grouping); | |
| | | bool MP4DeleteMetadataGrouping(MP4FileHandle hFile); | |
| bool MP4SetMetadataTempo(MP4FileHandle hFile, u_int16_t tempo); | | bool MP4SetMetadataTempo(MP4FileHandle hFile, u_int16_t tempo); | |
| bool MP4GetMetadataTempo(MP4FileHandle hFile, u_int16_t* tempo); | | bool MP4GetMetadataTempo(MP4FileHandle hFile, u_int16_t* tempo); | |
|
| | | bool MP4DeleteMetadataTempo(MP4FileHandle hFile); | |
| bool MP4SetMetadataCompilation(MP4FileHandle hFile, u_int8_t cpl); | | bool MP4SetMetadataCompilation(MP4FileHandle hFile, u_int8_t cpl); | |
| bool MP4GetMetadataCompilation(MP4FileHandle hFile, u_int8_t* cpl); | | bool MP4GetMetadataCompilation(MP4FileHandle hFile, u_int8_t* cpl); | |
|
| | | bool MP4DeleteMetadataCompilation(MP4FileHandle hFile); | |
| | | bool MP4SetMetadataPartOfGaplessAlbum(MP4FileHandle hFile, uint8_t pgap); | |
| | | bool MP4GetMetadataPartOfGaplessAlbum(MP4FileHandle hFile, uint8_t *pgap); | |
| | | bool MP4DeleteMetadataPartOfGaplessAlbum(MP4FileHandle hFile); | |
| bool MP4SetMetadataCoverArt(MP4FileHandle hFile, | | bool MP4SetMetadataCoverArt(MP4FileHandle hFile, | |
| u_int8_t *coverArt, u_int32_t size); | | u_int8_t *coverArt, u_int32_t size); | |
| bool MP4GetMetadataCoverArt(MP4FileHandle hFile, | | bool MP4GetMetadataCoverArt(MP4FileHandle hFile, | |
|
| u_int8_t **coverArt, u_int32_t* size); | | u_int8_t **coverArt, u_int32_t* size, | |
| bool MP4SetMetadataFreeForm(MP4FileHandle hFile, char *name, | | uint32_t index DEFAULT(0)); | |
| u_int8_t* pValue, u_int32_t valueSize); | | u_int32_t MP4GetMetadataCoverArtCount(MP4FileHandle hFile); | |
| bool MP4GetMetadataFreeForm(MP4FileHandle hFile, char *name, | | bool MP4DeleteMetadataCoverArt(MP4FileHandle hFile); | |
| u_int8_t** pValue, u_int32_t* valueSize); | | bool MP4SetMetadataAlbumArtist(MP4FileHandle hFile, const char* value); | |
| | | bool MP4GetMetadataAlbumArtist(MP4FileHandle hFile, char** value); | |
| | | bool MP4DeleteMetadataAlbumArtist(MP4FileHandle hFile); | |
| | | | |
| | | bool MP4SetMetadataFreeForm(MP4FileHandle hFile, const char *name, | |
| | | const u_int8_t* pValue, u_int32_t valueSize, con | |
| | | st char *owner DEFAULT(NULL)); | |
| | | bool MP4GetMetadataFreeForm(MP4FileHandle hFile, const char *name, | |
| | | u_int8_t** pValue, u_int32_t* valueSize, const c | |
| | | har *owner DEFAULT(NULL)); | |
| | | bool MP4DeleteMetadataFreeForm(MP4FileHandle hFile, const char *name, const | |
| | | char *owner DEFAULT(NULL)); | |
| | | | |
| /* time conversion utilties */ | | /* time conversion utilties */ | |
| | | | |
| /* predefined values for timeScale parameter below */ | | /* predefined values for timeScale parameter below */ | |
| #define MP4_SECONDS_TIME_SCALE 1 | | #define MP4_SECONDS_TIME_SCALE 1 | |
| #define MP4_MILLISECONDS_TIME_SCALE 1000 | | #define MP4_MILLISECONDS_TIME_SCALE 1000 | |
| #define MP4_MICROSECONDS_TIME_SCALE 1000000 | | #define MP4_MICROSECONDS_TIME_SCALE 1000000 | |
| #define MP4_NANOSECONDS_TIME_SCALE 1000000000 | | #define MP4_NANOSECONDS_TIME_SCALE 1000000000 | |
| | | | |
| #define MP4_SECS_TIME_SCALE MP4_SECONDS_TIME_SCALE | | #define MP4_SECS_TIME_SCALE MP4_SECONDS_TIME_SCALE | |
| | | | |
| skipping to change at line 1137 | | skipping to change at line 1283 | |
| u_int32_t timeScale); | | u_int32_t timeScale); | |
| | | | |
| char* MP4BinaryToBase16( | | char* MP4BinaryToBase16( | |
| const u_int8_t* pData, | | const u_int8_t* pData, | |
| u_int32_t dataSize); | | u_int32_t dataSize); | |
| | | | |
| char* MP4BinaryToBase64( | | char* MP4BinaryToBase64( | |
| const u_int8_t* pData, | | const u_int8_t* pData, | |
| u_int32_t dataSize); | | u_int32_t dataSize); | |
| | | | |
|
| | | uint8_t *Base64ToBinary(const char *pData, | |
| | | uint32_t decodeSize, | |
| | | uint32_t *pDataSize); | |
| | | void MP4Free(void *p); | |
| | | | |
| | | void MP4SetLibFunc(lib_message_func_t libfunc); | |
| | | | |
| #ifdef __cplusplus | | #ifdef __cplusplus | |
| } | | } | |
| #endif | | #endif | |
| | | | |
| /* undefined our utlity macro to avoid conflicts */ | | /* undefined our utlity macro to avoid conflicts */ | |
| #undef DEFAULT | | #undef DEFAULT | |
| | | | |
| #endif /* __MP4_INCLUDED__ */ | | #endif /* __MP4_INCLUDED__ */ | |
| | | | |
End of changes. 67 change blocks. |
| 61 lines changed or deleted | | 224 lines changed or added | |
|