1 /***************************************************************************** 2 * box_default.h 3 ***************************************************************************** 4 * Copyright (C) 2017 L-SMASH project 5 * 6 * Authors: Yusuke Nakamura <muken.the.vfrmaniac@gmail.com> 7 * 8 * Permission to use, copy, modify, and/or distribute this software for any 9 * purpose with or without fee is hereby granted, provided that the above 10 * copyright notice and this permission notice appear in all copies. 11 * 12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 13 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 14 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 15 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 16 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 17 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 18 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19 *****************************************************************************/ 20 21 /* This file is available under an ISC license. */ 22 23 #define ALLOCATE_BOX( box_name ) \ 24 (isom_##box_name##_t *)allocate_box_by_default( &isom_##box_name##_box_default, \ 25 sizeof(isom_##box_name##_box_default) ) 26 27 #define DEFINE_BOX_DEFAULT_CONSTANT( box_name ) \ 28 extern const isom_##box_name##_t isom_##box_name##_box_default; \ 29 static inline isom_##box_name##_t *isom_non_existing_##box_name( void ) \ 30 { \ 31 return (isom_##box_name##_t *)&isom_##box_name##_box_default; \ 32 } 33 34 DEFINE_BOX_DEFAULT_CONSTANT( dummy ) 35 DEFINE_BOX_DEFAULT_CONSTANT( unknown ) 36 DEFINE_BOX_DEFAULT_CONSTANT( ftyp ) 37 DEFINE_BOX_DEFAULT_CONSTANT( ctab ) 38 DEFINE_BOX_DEFAULT_CONSTANT( tkhd ) 39 DEFINE_BOX_DEFAULT_CONSTANT( clef ) 40 DEFINE_BOX_DEFAULT_CONSTANT( prof ) 41 DEFINE_BOX_DEFAULT_CONSTANT( enof ) 42 DEFINE_BOX_DEFAULT_CONSTANT( tapt ) 43 DEFINE_BOX_DEFAULT_CONSTANT( elst ) 44 DEFINE_BOX_DEFAULT_CONSTANT( edts ) 45 DEFINE_BOX_DEFAULT_CONSTANT( tref_type ) 46 DEFINE_BOX_DEFAULT_CONSTANT( tref ) 47 DEFINE_BOX_DEFAULT_CONSTANT( mdhd ) 48 DEFINE_BOX_DEFAULT_CONSTANT( hdlr ) 49 DEFINE_BOX_DEFAULT_CONSTANT( vmhd ) 50 DEFINE_BOX_DEFAULT_CONSTANT( smhd ) 51 DEFINE_BOX_DEFAULT_CONSTANT( hmhd ) 52 DEFINE_BOX_DEFAULT_CONSTANT( nmhd ) 53 DEFINE_BOX_DEFAULT_CONSTANT( gmin ) 54 DEFINE_BOX_DEFAULT_CONSTANT( text ) 55 DEFINE_BOX_DEFAULT_CONSTANT( gmhd ) 56 DEFINE_BOX_DEFAULT_CONSTANT( dref_entry ) 57 DEFINE_BOX_DEFAULT_CONSTANT( dref ) 58 DEFINE_BOX_DEFAULT_CONSTANT( dinf ) 59 DEFINE_BOX_DEFAULT_CONSTANT( esds ) 60 DEFINE_BOX_DEFAULT_CONSTANT( btrt ) 61 DEFINE_BOX_DEFAULT_CONSTANT( glbl ) 62 DEFINE_BOX_DEFAULT_CONSTANT( clap ) 63 DEFINE_BOX_DEFAULT_CONSTANT( pasp ) 64 DEFINE_BOX_DEFAULT_CONSTANT( colr ) 65 DEFINE_BOX_DEFAULT_CONSTANT( gama ) 66 DEFINE_BOX_DEFAULT_CONSTANT( fiel ) 67 DEFINE_BOX_DEFAULT_CONSTANT( cspc ) 68 DEFINE_BOX_DEFAULT_CONSTANT( sgbt ) 69 DEFINE_BOX_DEFAULT_CONSTANT( stsl ) 70 DEFINE_BOX_DEFAULT_CONSTANT( sample_entry ) 71 DEFINE_BOX_DEFAULT_CONSTANT( mp4s_entry ) 72 DEFINE_BOX_DEFAULT_CONSTANT( visual_entry ) 73 DEFINE_BOX_DEFAULT_CONSTANT( frma ) 74 DEFINE_BOX_DEFAULT_CONSTANT( enda ) 75 DEFINE_BOX_DEFAULT_CONSTANT( mp4a ) 76 DEFINE_BOX_DEFAULT_CONSTANT( terminator ) 77 DEFINE_BOX_DEFAULT_CONSTANT( wave ) 78 DEFINE_BOX_DEFAULT_CONSTANT( chan ) 79 DEFINE_BOX_DEFAULT_CONSTANT( srat ) 80 DEFINE_BOX_DEFAULT_CONSTANT( audio_entry ) 81 DEFINE_BOX_DEFAULT_CONSTANT( hint_entry ) 82 DEFINE_BOX_DEFAULT_CONSTANT( metadata_entry ) 83 DEFINE_BOX_DEFAULT_CONSTANT( qt_text_entry ) 84 DEFINE_BOX_DEFAULT_CONSTANT( ftab ) 85 DEFINE_BOX_DEFAULT_CONSTANT( tx3g_entry ) 86 DEFINE_BOX_DEFAULT_CONSTANT( stsd ) 87 DEFINE_BOX_DEFAULT_CONSTANT( stts ) 88 DEFINE_BOX_DEFAULT_CONSTANT( ctts ) 89 DEFINE_BOX_DEFAULT_CONSTANT( cslg ) 90 DEFINE_BOX_DEFAULT_CONSTANT( stsz ) 91 DEFINE_BOX_DEFAULT_CONSTANT( stz2 ) 92 DEFINE_BOX_DEFAULT_CONSTANT( stss ) 93 DEFINE_BOX_DEFAULT_CONSTANT( stps ) 94 DEFINE_BOX_DEFAULT_CONSTANT( sdtp ) 95 DEFINE_BOX_DEFAULT_CONSTANT( stsc ) 96 DEFINE_BOX_DEFAULT_CONSTANT( stco ) 97 DEFINE_BOX_DEFAULT_CONSTANT( sgpd ) 98 DEFINE_BOX_DEFAULT_CONSTANT( sbgp ) 99 DEFINE_BOX_DEFAULT_CONSTANT( stbl ) 100 DEFINE_BOX_DEFAULT_CONSTANT( minf ) 101 DEFINE_BOX_DEFAULT_CONSTANT( mdia ) 102 DEFINE_BOX_DEFAULT_CONSTANT( mvhd ) 103 DEFINE_BOX_DEFAULT_CONSTANT( iods ) 104 DEFINE_BOX_DEFAULT_CONSTANT( mdat ) 105 DEFINE_BOX_DEFAULT_CONSTANT( skip ) 106 DEFINE_BOX_DEFAULT_CONSTANT( chpl ) 107 DEFINE_BOX_DEFAULT_CONSTANT( keys ) 108 DEFINE_BOX_DEFAULT_CONSTANT( mean ) 109 DEFINE_BOX_DEFAULT_CONSTANT( name ) 110 DEFINE_BOX_DEFAULT_CONSTANT( data ) 111 DEFINE_BOX_DEFAULT_CONSTANT( metaitem ) 112 DEFINE_BOX_DEFAULT_CONSTANT( ilst ) 113 DEFINE_BOX_DEFAULT_CONSTANT( meta ) 114 DEFINE_BOX_DEFAULT_CONSTANT( WLOC ) 115 DEFINE_BOX_DEFAULT_CONSTANT( LOOP ) 116 DEFINE_BOX_DEFAULT_CONSTANT( SelO ) 117 DEFINE_BOX_DEFAULT_CONSTANT( AllF ) 118 DEFINE_BOX_DEFAULT_CONSTANT( cprt ) 119 DEFINE_BOX_DEFAULT_CONSTANT( udta ) 120 DEFINE_BOX_DEFAULT_CONSTANT( mehd ) 121 DEFINE_BOX_DEFAULT_CONSTANT( trex ) 122 DEFINE_BOX_DEFAULT_CONSTANT( mvex ) 123 DEFINE_BOX_DEFAULT_CONSTANT( mfhd ) 124 DEFINE_BOX_DEFAULT_CONSTANT( tfhd ) 125 DEFINE_BOX_DEFAULT_CONSTANT( tfdt ) 126 DEFINE_BOX_DEFAULT_CONSTANT( trun ) 127 DEFINE_BOX_DEFAULT_CONSTANT( traf ) 128 DEFINE_BOX_DEFAULT_CONSTANT( moof ) 129 DEFINE_BOX_DEFAULT_CONSTANT( tfra ) 130 DEFINE_BOX_DEFAULT_CONSTANT( mfro ) 131 DEFINE_BOX_DEFAULT_CONSTANT( mfra ) 132 DEFINE_BOX_DEFAULT_CONSTANT( trak ) 133 DEFINE_BOX_DEFAULT_CONSTANT( moov ) 134 DEFINE_BOX_DEFAULT_CONSTANT( styp ) 135 DEFINE_BOX_DEFAULT_CONSTANT( sidx ) 136 DEFINE_BOX_DEFAULT_CONSTANT( file_abstract ) 137 DEFINE_BOX_DEFAULT_CONSTANT( root_abstract ) 138 139 void *allocate_box_by_default 140 ( 141 const void *nonexist_ptr, 142 const size_t data_type_size 143 ); 144