wp/wp-includes/ID3/module.audio-video.asf.php
author ymh <ymh.work@gmail.com>
Thu, 29 Sep 2022 08:06:27 +0200
changeset 20 7b1b88e27a20
parent 19 3d72ae0968f4
child 21 48c4eec2b7e6
permissions -rw-r--r--
Modified Readme
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/////////////////////////////////////////////////////////////////
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
/// getID3() by James Heinrich <info@getid3.org>               //
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     4
//  available at https://github.com/JamesHeinrich/getID3       //
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     5
//            or https://www.getid3.org                        //
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     6
//            or http://getid3.sourceforge.net                 //
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     7
//  see readme.txt for more details                            //
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
/////////////////////////////////////////////////////////////////
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
//                                                             //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
// module.audio-video.asf.php                                  //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
// module for analyzing ASF, WMA and WMV files                 //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
// dependencies: module.audio-video.riff.php                   //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
//                                                            ///
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
/////////////////////////////////////////////////////////////////
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    16
if (!defined('GETID3_INCLUDEPATH')) { // prevent path-exposing attacks that access modules directly on public webservers
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    17
	exit;
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    18
}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    21
class getid3_asf extends getid3_handler
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    22
{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    23
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    24
	 * @param getID3 $getid3
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    25
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
	public function __construct(getID3 $getid3) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
		parent::__construct($getid3);  // extends getid3_handler::__construct()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
		// initialize all GUID constants
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
		$GUIDarray = $this->KnownGUIDs();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
		foreach ($GUIDarray as $GUIDname => $hexstringvalue) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
			if (!defined($GUIDname)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
				define($GUIDname, $this->GUIDtoBytestring($hexstringvalue));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    38
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    39
	 * @return bool
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    40
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
	public function Analyze() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
		$info = &$this->getid3->info;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
		// Shortcuts
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
		$thisfile_audio = &$info['audio'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
		$thisfile_video = &$info['video'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
		$info['asf']  = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
		$thisfile_asf = &$info['asf'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
		$thisfile_asf['comments'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
		$thisfile_asf_comments    = &$thisfile_asf['comments'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
		$thisfile_asf['header_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
		$thisfile_asf_headerobject     = &$thisfile_asf['header_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
		// ASF structure:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
		// * Header Object [required]
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
		//   * File Properties Object [required]   (global file attributes)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
		//   * Stream Properties Object [required] (defines media stream & characteristics)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		//   * Header Extension Object [required]  (additional functionality)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
		//   * Content Description Object          (bibliographic information)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
		//   * Script Command Object               (commands for during playback)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
		//   * Marker Object                       (named jumped points within the file)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
		// * Data Object [required]
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
		//   * Data Packets
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
		// * Index Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
		// Header Object: (mandatory, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
		// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
		// Object ID                    GUID         128             // GUID for header object - GETID3_ASF_Header_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
		// Object Size                  QWORD        64              // size of header object, including 30 bytes of Header Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
		// Number of Header Objects     DWORD        32              // number of objects in header object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
		// Reserved1                    BYTE         8               // hardcoded: 0x01
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
		// Reserved2                    BYTE         8               // hardcoded: 0x02
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
		$info['fileformat'] = 'asf';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    77
		$this->fseek($info['avdataoffset']);
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    78
		$HeaderObjectData = $this->fread(30);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
		$thisfile_asf_headerobject['objectid']      = substr($HeaderObjectData, 0, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
		$thisfile_asf_headerobject['objectid_guid'] = $this->BytestringToGUID($thisfile_asf_headerobject['objectid']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
		if ($thisfile_asf_headerobject['objectid'] != GETID3_ASF_Header_Object) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    83
			unset($info['fileformat'], $info['asf']);
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    84
			return $this->error('ASF header GUID {'.$this->BytestringToGUID($thisfile_asf_headerobject['objectid']).'} does not match expected "GETID3_ASF_Header_Object" GUID {'.$this->BytestringToGUID(GETID3_ASF_Header_Object).'}');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
		$thisfile_asf_headerobject['objectsize']    = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 16, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
		$thisfile_asf_headerobject['headerobjects'] = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 24, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
		$thisfile_asf_headerobject['reserved1']     = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 28, 1));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
		$thisfile_asf_headerobject['reserved2']     = getid3_lib::LittleEndian2Int(substr($HeaderObjectData, 29, 1));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    91
		$NextObjectOffset = $this->ftell();
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    92
		$ASFHeaderData = $this->fread($thisfile_asf_headerobject['objectsize'] - 30);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
		$offset = 0;
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    94
		$thisfile_asf_streambitratepropertiesobject = array();
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    95
		$thisfile_asf_codeclistobject = array();
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
    96
		$StreamPropertiesObjectData = array();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
		for ($HeaderObjectsCounter = 0; $HeaderObjectsCounter < $thisfile_asf_headerobject['headerobjects']; $HeaderObjectsCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
			$NextObjectGUID = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
			$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
			$NextObjectGUIDtext = $this->BytestringToGUID($NextObjectGUID);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
			$NextObjectSize = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
			$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
			switch ($NextObjectGUID) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
				case GETID3_ASF_File_Properties_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
					// File Properties Object: (mandatory, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
					// Object ID                    GUID         128             // GUID for file properties object - GETID3_ASF_File_Properties_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
					// Object Size                  QWORD        64              // size of file properties object, including 104 bytes of File Properties Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
					// File ID                      GUID         128             // unique ID - identical to File ID in Data Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
					// File Size                    QWORD        64              // entire file in bytes. Invalid if Broadcast Flag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
					// Creation Date                QWORD        64              // date & time of file creation. Maybe invalid if Broadcast Flag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
					// Data Packets Count           QWORD        64              // number of data packets in Data Object. Invalid if Broadcast Flag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
					// Play Duration                QWORD        64              // playtime, in 100-nanosecond units. Invalid if Broadcast Flag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
					// Send Duration                QWORD        64              // time needed to send file, in 100-nanosecond units. Players can ignore this value. Invalid if Broadcast Flag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
					// Preroll                      QWORD        64              // time to buffer data before starting to play file, in 1-millisecond units. If <> 0, PlayDuration and PresentationTime have been offset by this amount
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
					// Flags                        DWORD        32              //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
					// * Broadcast Flag             bits         1  (0x01)       // file is currently being written, some header values are invalid
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
					// * Seekable Flag              bits         1  (0x02)       // is file seekable
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
					// * Reserved                   bits         30 (0xFFFFFFFC) // reserved - set to zero
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
					// Minimum Data Packet Size     DWORD        32              // in bytes. should be same as Maximum Data Packet Size. Invalid if Broadcast Flag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
					// Maximum Data Packet Size     DWORD        32              // in bytes. should be same as Minimum Data Packet Size. Invalid if Broadcast Flag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
					// Maximum Bitrate              DWORD        32              // maximum instantaneous bitrate in bits per second for entire file, including all data streams and ASF overhead
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
					$thisfile_asf['file_properties_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
					$thisfile_asf_filepropertiesobject      = &$thisfile_asf['file_properties_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
					$thisfile_asf_filepropertiesobject['offset']             = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
					$thisfile_asf_filepropertiesobject['objectid']           = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
					$thisfile_asf_filepropertiesobject['objectid_guid']      = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
					$thisfile_asf_filepropertiesobject['objectsize']         = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
					$thisfile_asf_filepropertiesobject['fileid']             = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
					$thisfile_asf_filepropertiesobject['fileid_guid']        = $this->BytestringToGUID($thisfile_asf_filepropertiesobject['fileid']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
					$thisfile_asf_filepropertiesobject['filesize']           = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
					$thisfile_asf_filepropertiesobject['creation_date']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
					$thisfile_asf_filepropertiesobject['creation_date_unix'] = $this->FILETIMEtoUNIXtime($thisfile_asf_filepropertiesobject['creation_date']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
					$thisfile_asf_filepropertiesobject['data_packets']       = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
					$thisfile_asf_filepropertiesobject['play_duration']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
					$thisfile_asf_filepropertiesobject['send_duration']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
					$thisfile_asf_filepropertiesobject['preroll']            = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
					$thisfile_asf_filepropertiesobject['flags_raw']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
					$thisfile_asf_filepropertiesobject['flags']['broadcast'] = (bool) ($thisfile_asf_filepropertiesobject['flags_raw'] & 0x0001);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
					$thisfile_asf_filepropertiesobject['flags']['seekable']  = (bool) ($thisfile_asf_filepropertiesobject['flags_raw'] & 0x0002);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
					$thisfile_asf_filepropertiesobject['min_packet_size']    = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
					$thisfile_asf_filepropertiesobject['max_packet_size']    = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
					$thisfile_asf_filepropertiesobject['max_bitrate']        = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
					if ($thisfile_asf_filepropertiesobject['flags']['broadcast']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
						// broadcast flag is set, some values invalid
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
						unset($thisfile_asf_filepropertiesobject['filesize']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
						unset($thisfile_asf_filepropertiesobject['data_packets']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
						unset($thisfile_asf_filepropertiesobject['play_duration']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
						unset($thisfile_asf_filepropertiesobject['send_duration']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
						unset($thisfile_asf_filepropertiesobject['min_packet_size']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
						unset($thisfile_asf_filepropertiesobject['max_packet_size']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
					} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
						// broadcast flag NOT set, perform calculations
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
						$info['playtime_seconds'] = ($thisfile_asf_filepropertiesobject['play_duration'] / 10000000) - ($thisfile_asf_filepropertiesobject['preroll'] / 1000);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
						//$info['bitrate'] = $thisfile_asf_filepropertiesobject['max_bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
						$info['bitrate'] = ((isset($thisfile_asf_filepropertiesobject['filesize']) ? $thisfile_asf_filepropertiesobject['filesize'] : $info['filesize']) * 8) / $info['playtime_seconds'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
				case GETID3_ASF_Stream_Properties_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
					// Stream Properties Object: (mandatory, one per media stream)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
					// Object ID                    GUID         128             // GUID for stream properties object - GETID3_ASF_Stream_Properties_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
					// Object Size                  QWORD        64              // size of stream properties object, including 78 bytes of Stream Properties Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
					// Stream Type                  GUID         128             // GETID3_ASF_Audio_Media, GETID3_ASF_Video_Media or GETID3_ASF_Command_Media
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
					// Error Correction Type        GUID         128             // GETID3_ASF_Audio_Spread for audio-only streams, GETID3_ASF_No_Error_Correction for other stream types
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
					// Time Offset                  QWORD        64              // 100-nanosecond units. typically zero. added to all timestamps of samples in the stream
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
					// Type-Specific Data Length    DWORD        32              // number of bytes for Type-Specific Data field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
					// Error Correction Data Length DWORD        32              // number of bytes for Error Correction Data field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
					// Flags                        WORD         16              //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
					// * Stream Number              bits         7 (0x007F)      // number of this stream.  1 <= valid <= 127
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
					// * Reserved                   bits         8 (0x7F80)      // reserved - set to zero
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
					// * Encrypted Content Flag     bits         1 (0x8000)      // stream contents encrypted if set
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
					// Reserved                     DWORD        32              // reserved - set to zero
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
					// Type-Specific Data           BYTESTREAM   variable        // type-specific format data, depending on value of Stream Type
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
					// Error Correction Data        BYTESTREAM   variable        // error-correction-specific format data, depending on value of Error Correct Type
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
					// There is one GETID3_ASF_Stream_Properties_Object for each stream (audio, video) but the
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
					// stream number isn't known until halfway through decoding the structure, hence it
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
					// it is decoded to a temporary variable and then stuck in the appropriate index later
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
					$StreamPropertiesObjectData['offset']             = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
					$StreamPropertiesObjectData['objectid']           = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
					$StreamPropertiesObjectData['objectid_guid']      = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
					$StreamPropertiesObjectData['objectsize']         = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
					$StreamPropertiesObjectData['stream_type']        = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
					$StreamPropertiesObjectData['stream_type_guid']   = $this->BytestringToGUID($StreamPropertiesObjectData['stream_type']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
					$StreamPropertiesObjectData['error_correct_type'] = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
					$StreamPropertiesObjectData['error_correct_guid'] = $this->BytestringToGUID($StreamPropertiesObjectData['error_correct_type']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
					$StreamPropertiesObjectData['time_offset']        = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
					$StreamPropertiesObjectData['type_data_length']   = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
					$StreamPropertiesObjectData['error_data_length']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
					$StreamPropertiesObjectData['flags_raw']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
					$StreamPropertiesObjectStreamNumber               = $StreamPropertiesObjectData['flags_raw'] & 0x007F;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
					$StreamPropertiesObjectData['flags']['encrypted'] = (bool) ($StreamPropertiesObjectData['flags_raw'] & 0x8000);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
					$offset += 4; // reserved - DWORD
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
					$StreamPropertiesObjectData['type_specific_data'] = substr($ASFHeaderData, $offset, $StreamPropertiesObjectData['type_data_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
					$offset += $StreamPropertiesObjectData['type_data_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
					$StreamPropertiesObjectData['error_correct_data'] = substr($ASFHeaderData, $offset, $StreamPropertiesObjectData['error_data_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
					$offset += $StreamPropertiesObjectData['error_data_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
					switch ($StreamPropertiesObjectData['stream_type']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
						case GETID3_ASF_Audio_Media:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
							$thisfile_audio['dataformat']   = (!empty($thisfile_audio['dataformat'])   ? $thisfile_audio['dataformat']   : 'asf');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
							$thisfile_audio['bitrate_mode'] = (!empty($thisfile_audio['bitrate_mode']) ? $thisfile_audio['bitrate_mode'] : 'cbr');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
							$audiodata = getid3_riff::parseWAVEFORMATex(substr($StreamPropertiesObjectData['type_specific_data'], 0, 16));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
							unset($audiodata['raw']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
							$thisfile_audio = getid3_lib::array_merge_noclobber($audiodata, $thisfile_audio);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
						case GETID3_ASF_Video_Media:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
							$thisfile_video['dataformat']   = (!empty($thisfile_video['dataformat'])   ? $thisfile_video['dataformat']   : 'asf');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
							$thisfile_video['bitrate_mode'] = (!empty($thisfile_video['bitrate_mode']) ? $thisfile_video['bitrate_mode'] : 'cbr');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
						case GETID3_ASF_Command_Media:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
						default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
							// do nothing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
					$thisfile_asf['stream_properties_object'][$StreamPropertiesObjectStreamNumber] = $StreamPropertiesObjectData;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
					unset($StreamPropertiesObjectData); // clear for next stream, if any
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
				case GETID3_ASF_Header_Extension_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
					// Header Extension Object: (mandatory, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
					// Object ID                    GUID         128             // GUID for Header Extension object - GETID3_ASF_Header_Extension_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
					// Object Size                  QWORD        64              // size of Header Extension object, including 46 bytes of Header Extension Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
					// Reserved Field 1             GUID         128             // hardcoded: GETID3_ASF_Reserved_1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
					// Reserved Field 2             WORD         16              // hardcoded: 0x00000006
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
					// Header Extension Data Size   DWORD        32              // in bytes. valid: 0, or > 24. equals object size minus 46
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
					// Header Extension Data        BYTESTREAM   variable        // array of zero or more extended header objects
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
					$thisfile_asf['header_extension_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
					$thisfile_asf_headerextensionobject      = &$thisfile_asf['header_extension_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
					$thisfile_asf_headerextensionobject['offset']              = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
					$thisfile_asf_headerextensionobject['objectid']            = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
					$thisfile_asf_headerextensionobject['objectid_guid']       = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
					$thisfile_asf_headerextensionobject['objectsize']          = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
					$thisfile_asf_headerextensionobject['reserved_1']          = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
					$thisfile_asf_headerextensionobject['reserved_1_guid']     = $this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
					if ($thisfile_asf_headerextensionobject['reserved_1'] != GETID3_ASF_Reserved_1) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   280
						$this->warning('header_extension_object.reserved_1 GUID ('.$this->BytestringToGUID($thisfile_asf_headerextensionobject['reserved_1']).') does not match expected "GETID3_ASF_Reserved_1" GUID ('.$this->BytestringToGUID(GETID3_ASF_Reserved_1).')');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
						//return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
					$thisfile_asf_headerextensionobject['reserved_2']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
					if ($thisfile_asf_headerextensionobject['reserved_2'] != 6) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   287
						$this->warning('header_extension_object.reserved_2 ('.$thisfile_asf_headerextensionobject['reserved_2'].') does not match expected value of "6"');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
						//return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
					$thisfile_asf_headerextensionobject['extension_data_size'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
					$thisfile_asf_headerextensionobject['extension_data']      =                              substr($ASFHeaderData, $offset, $thisfile_asf_headerextensionobject['extension_data_size']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
					$unhandled_sections = 0;
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   295
					$thisfile_asf_headerextensionobject['extension_data_parsed'] = $this->HeaderExtensionObjectDataParse($thisfile_asf_headerextensionobject['extension_data'], $unhandled_sections);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
					if ($unhandled_sections === 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
						unset($thisfile_asf_headerextensionobject['extension_data']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
					$offset += $thisfile_asf_headerextensionobject['extension_data_size'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
				case GETID3_ASF_Codec_List_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
					// Codec List Object: (optional, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
					// Object ID                    GUID         128             // GUID for Codec List object - GETID3_ASF_Codec_List_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
					// Object Size                  QWORD        64              // size of Codec List object, including 44 bytes of Codec List Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
					// Reserved                     GUID         128             // hardcoded: 86D15241-311D-11D0-A3A4-00A0C90348F6
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
					// Codec Entries Count          DWORD        32              // number of entries in Codec Entries array
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
					// Codec Entries                array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
					// * Type                       WORD         16              // 0x0001 = Video Codec, 0x0002 = Audio Codec, 0xFFFF = Unknown Codec
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
					// * Codec Name Length          WORD         16              // number of Unicode characters stored in the Codec Name field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
					// * Codec Name                 WCHAR        variable        // array of Unicode characters - name of codec used to create the content
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
					// * Codec Description Length   WORD         16              // number of Unicode characters stored in the Codec Description field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
					// * Codec Description          WCHAR        variable        // array of Unicode characters - description of format used to create the content
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
					// * Codec Information Length   WORD         16              // number of Unicode characters stored in the Codec Information field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
					// * Codec Information          BYTESTREAM   variable        // opaque array of information bytes about the codec used to create the content
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
					$thisfile_asf['codec_list_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
					$thisfile_asf_codeclistobject      = &$thisfile_asf['codec_list_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
					$thisfile_asf_codeclistobject['offset']                    = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
					$thisfile_asf_codeclistobject['objectid']                  = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
					$thisfile_asf_codeclistobject['objectid_guid']             = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
					$thisfile_asf_codeclistobject['objectsize']                = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
					$thisfile_asf_codeclistobject['reserved']                  = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
					$thisfile_asf_codeclistobject['reserved_guid']             = $this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
					if ($thisfile_asf_codeclistobject['reserved'] != $this->GUIDtoBytestring('86D15241-311D-11D0-A3A4-00A0C90348F6')) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   330
						$this->warning('codec_list_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_codeclistobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {86D15241-311D-11D0-A3A4-00A0C90348F6}');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
						//return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
					$thisfile_asf_codeclistobject['codec_entries_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
					for ($CodecEntryCounter = 0; $CodecEntryCounter < $thisfile_asf_codeclistobject['codec_entries_count']; $CodecEntryCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
						// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
						$thisfile_asf_codeclistobject['codec_entries'][$CodecEntryCounter] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
						$thisfile_asf_codeclistobject_codecentries_current = &$thisfile_asf_codeclistobject['codec_entries'][$CodecEntryCounter];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
						$thisfile_asf_codeclistobject_codecentries_current['type_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
						$offset += 2;
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   343
						$thisfile_asf_codeclistobject_codecentries_current['type'] = self::codecListObjectTypeLookup($thisfile_asf_codeclistobject_codecentries_current['type_raw']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
						$CodecNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
						$thisfile_asf_codeclistobject_codecentries_current['name'] = substr($ASFHeaderData, $offset, $CodecNameLength);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
						$offset += $CodecNameLength;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
						$CodecDescriptionLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
						$thisfile_asf_codeclistobject_codecentries_current['description'] = substr($ASFHeaderData, $offset, $CodecDescriptionLength);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
						$offset += $CodecDescriptionLength;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
						$CodecInformationLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
						$thisfile_asf_codeclistobject_codecentries_current['information'] = substr($ASFHeaderData, $offset, $CodecInformationLength);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
						$offset += $CodecInformationLength;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
						if ($thisfile_asf_codeclistobject_codecentries_current['type_raw'] == 2) { // audio codec
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
							if (strpos($thisfile_asf_codeclistobject_codecentries_current['description'], ',') === false) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   363
								$this->warning('[asf][codec_list_object][codec_entries]['.$CodecEntryCounter.'][description] expected to contain comma-separated list of parameters: "'.$thisfile_asf_codeclistobject_codecentries_current['description'].'"');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
							} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
								list($AudioCodecBitrate, $AudioCodecFrequency, $AudioCodecChannels) = explode(',', $this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['description']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
								$thisfile_audio['codec'] = $this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['name']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
								if (!isset($thisfile_audio['bitrate']) && strstr($AudioCodecBitrate, 'kbps')) {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   370
									$thisfile_audio['bitrate'] = (int) trim(str_replace('kbps', '', $AudioCodecBitrate)) * 1000;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
								//if (!isset($thisfile_video['bitrate']) && isset($thisfile_audio['bitrate']) && isset($thisfile_asf['file_properties_object']['max_bitrate']) && ($thisfile_asf_codeclistobject['codec_entries_count'] > 1)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
								if (empty($thisfile_video['bitrate']) && !empty($thisfile_audio['bitrate']) && !empty($info['bitrate'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
									//$thisfile_video['bitrate'] = $thisfile_asf['file_properties_object']['max_bitrate'] - $thisfile_audio['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
									$thisfile_video['bitrate'] = $info['bitrate'] - $thisfile_audio['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
								$AudioCodecFrequency = (int) trim(str_replace('kHz', '', $AudioCodecFrequency));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
								switch ($AudioCodecFrequency) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
									case 8:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
									case 8000:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
										$thisfile_audio['sample_rate'] = 8000;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
									case 11:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
									case 11025:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
										$thisfile_audio['sample_rate'] = 11025;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
									case 12:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
									case 12000:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
										$thisfile_audio['sample_rate'] = 12000;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
									case 16:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
									case 16000:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
										$thisfile_audio['sample_rate'] = 16000;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
									case 22:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
									case 22050:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
										$thisfile_audio['sample_rate'] = 22050;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
									case 24:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
									case 24000:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
										$thisfile_audio['sample_rate'] = 24000;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
									case 32:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
									case 32000:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
										$thisfile_audio['sample_rate'] = 32000;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
									case 44:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
									case 441000:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
										$thisfile_audio['sample_rate'] = 44100;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
									case 48:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
									case 48000:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
										$thisfile_audio['sample_rate'] = 48000;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
									default:
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   426
										$this->warning('unknown frequency: "'.$AudioCodecFrequency.'" ('.$this->TrimConvert($thisfile_asf_codeclistobject_codecentries_current['description']).')');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
								if (!isset($thisfile_audio['channels'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
									if (strstr($AudioCodecChannels, 'stereo')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
										$thisfile_audio['channels'] = 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
									} elseif (strstr($AudioCodecChannels, 'mono')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
										$thisfile_audio['channels'] = 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
									}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
				case GETID3_ASF_Script_Command_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
					// Script Command Object: (optional, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
					// Object ID                    GUID         128             // GUID for Script Command object - GETID3_ASF_Script_Command_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
					// Object Size                  QWORD        64              // size of Script Command object, including 44 bytes of Script Command Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
					// Reserved                     GUID         128             // hardcoded: 4B1ACBE3-100B-11D0-A39B-00A0C90348F6
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
					// Commands Count               WORD         16              // number of Commands structures in the Script Commands Objects
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
					// Command Types Count          WORD         16              // number of Command Types structures in the Script Commands Objects
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
					// Command Types                array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
					// * Command Type Name Length   WORD         16              // number of Unicode characters for Command Type Name
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
					// * Command Type Name          WCHAR        variable        // array of Unicode characters - name of a type of command
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
					// Commands                     array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
					// * Presentation Time          DWORD        32              // presentation time of that command, in milliseconds
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
					// * Type Index                 WORD         16              // type of this command, as a zero-based index into the array of Command Types of this object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
					// * Command Name Length        WORD         16              // number of Unicode characters for Command Name
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
					// * Command Name               WCHAR        variable        // array of Unicode characters - name of this command
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
					$thisfile_asf['script_command_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
					$thisfile_asf_scriptcommandobject      = &$thisfile_asf['script_command_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
					$thisfile_asf_scriptcommandobject['offset']               = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
					$thisfile_asf_scriptcommandobject['objectid']             = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
					$thisfile_asf_scriptcommandobject['objectid_guid']        = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
					$thisfile_asf_scriptcommandobject['objectsize']           = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
					$thisfile_asf_scriptcommandobject['reserved']             = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
					$thisfile_asf_scriptcommandobject['reserved_guid']        = $this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
					if ($thisfile_asf_scriptcommandobject['reserved'] != $this->GUIDtoBytestring('4B1ACBE3-100B-11D0-A39B-00A0C90348F6')) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   472
						$this->warning('script_command_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_scriptcommandobject['reserved']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4B1ACBE3-100B-11D0-A39B-00A0C90348F6}');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
						//return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
					$thisfile_asf_scriptcommandobject['commands_count']       = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
					$thisfile_asf_scriptcommandobject['command_types_count']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
					for ($CommandTypesCounter = 0; $CommandTypesCounter < $thisfile_asf_scriptcommandobject['command_types_count']; $CommandTypesCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
						$CommandTypeNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
						$thisfile_asf_scriptcommandobject['command_types'][$CommandTypesCounter]['name'] = substr($ASFHeaderData, $offset, $CommandTypeNameLength);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
						$offset += $CommandTypeNameLength;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
					for ($CommandsCounter = 0; $CommandsCounter < $thisfile_asf_scriptcommandobject['commands_count']; $CommandsCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
						$thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['presentation_time']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
						$thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['type_index']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
						$CommandTypeNameLength = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2)) * 2; // 2 bytes per character
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
						$thisfile_asf_scriptcommandobject['commands'][$CommandsCounter]['name'] = substr($ASFHeaderData, $offset, $CommandTypeNameLength);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
						$offset += $CommandTypeNameLength;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
				case GETID3_ASF_Marker_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
					// Marker Object: (optional, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
					// Object ID                    GUID         128             // GUID for Marker object - GETID3_ASF_Marker_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
					// Object Size                  QWORD        64              // size of Marker object, including 48 bytes of Marker Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
					// Reserved                     GUID         128             // hardcoded: 4CFEDB20-75F6-11CF-9C0F-00A0C90349CB
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
					// Markers Count                DWORD        32              // number of Marker structures in Marker Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
					// Reserved                     WORD         16              // hardcoded: 0x0000
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
					// Name Length                  WORD         16              // number of bytes in the Name field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
					// Name                         WCHAR        variable        // name of the Marker Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
					// Markers                      array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
					// * Offset                     QWORD        64              // byte offset into Data Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
					// * Presentation Time          QWORD        64              // in 100-nanosecond units
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
					// * Entry Length               WORD         16              // length in bytes of (Send Time + Flags + Marker Description Length + Marker Description + Padding)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
					// * Send Time                  DWORD        32              // in milliseconds
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
					// * Flags                      DWORD        32              // hardcoded: 0x00000000
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
					// * Marker Description Length  DWORD        32              // number of bytes in Marker Description field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
					// * Marker Description         WCHAR        variable        // array of Unicode characters - description of marker entry
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
					// * Padding                    BYTESTREAM   variable        // optional padding bytes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
					$thisfile_asf['marker_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
					$thisfile_asf_markerobject     = &$thisfile_asf['marker_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
					$thisfile_asf_markerobject['offset']               = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
					$thisfile_asf_markerobject['objectid']             = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
					$thisfile_asf_markerobject['objectid_guid']        = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
					$thisfile_asf_markerobject['objectsize']           = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
					$thisfile_asf_markerobject['reserved']             = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
					$thisfile_asf_markerobject['reserved_guid']        = $this->BytestringToGUID($thisfile_asf_markerobject['reserved']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
					if ($thisfile_asf_markerobject['reserved'] != $this->GUIDtoBytestring('4CFEDB20-75F6-11CF-9C0F-00A0C90349CB')) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   531
						$this->warning('marker_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_markerobject['reserved_1']).'} does not match expected "GETID3_ASF_Reserved_1" GUID {4CFEDB20-75F6-11CF-9C0F-00A0C90349CB}');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
					$thisfile_asf_markerobject['markers_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
					$thisfile_asf_markerobject['reserved_2'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
					if ($thisfile_asf_markerobject['reserved_2'] != 0) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   539
						$this->warning('marker_object.reserved_2 ('.$thisfile_asf_markerobject['reserved_2'].') does not match expected value of "0"');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
					$thisfile_asf_markerobject['name_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
					$thisfile_asf_markerobject['name'] = substr($ASFHeaderData, $offset, $thisfile_asf_markerobject['name_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
					$offset += $thisfile_asf_markerobject['name_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
					for ($MarkersCounter = 0; $MarkersCounter < $thisfile_asf_markerobject['markers_count']; $MarkersCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
						$thisfile_asf_markerobject['markers'][$MarkersCounter]['offset']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
						$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
						$thisfile_asf_markerobject['markers'][$MarkersCounter]['presentation_time']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
						$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
						$thisfile_asf_markerobject['markers'][$MarkersCounter]['entry_length']              = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
						$thisfile_asf_markerobject['markers'][$MarkersCounter]['send_time']                 = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
						$thisfile_asf_markerobject['markers'][$MarkersCounter]['flags']                     = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
						$thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
						$thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description']        = substr($ASFHeaderData, $offset, $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
						$offset += $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
						$PaddingLength = $thisfile_asf_markerobject['markers'][$MarkersCounter]['entry_length'] - 4 -  4 - 4 - $thisfile_asf_markerobject['markers'][$MarkersCounter]['marker_description_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
						if ($PaddingLength > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
							$thisfile_asf_markerobject['markers'][$MarkersCounter]['padding']               = substr($ASFHeaderData, $offset, $PaddingLength);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
							$offset += $PaddingLength;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
				case GETID3_ASF_Bitrate_Mutual_Exclusion_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
					// Bitrate Mutual Exclusion Object: (optional)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
					// Object ID                    GUID         128             // GUID for Bitrate Mutual Exclusion object - GETID3_ASF_Bitrate_Mutual_Exclusion_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
					// Object Size                  QWORD        64              // size of Bitrate Mutual Exclusion object, including 42 bytes of Bitrate Mutual Exclusion Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
					// Exlusion Type                GUID         128             // nature of mutual exclusion relationship. one of: (GETID3_ASF_Mutex_Bitrate, GETID3_ASF_Mutex_Unknown)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
					// Stream Numbers Count         WORD         16              // number of video streams
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
					// Stream Numbers               WORD         variable        // array of mutually exclusive video stream numbers. 1 <= valid <= 127
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
					$thisfile_asf['bitrate_mutual_exclusion_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
					$thisfile_asf_bitratemutualexclusionobject       = &$thisfile_asf['bitrate_mutual_exclusion_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
					$thisfile_asf_bitratemutualexclusionobject['offset']               = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
					$thisfile_asf_bitratemutualexclusionobject['objectid']             = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
					$thisfile_asf_bitratemutualexclusionobject['objectid_guid']        = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
					$thisfile_asf_bitratemutualexclusionobject['objectsize']           = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
					$thisfile_asf_bitratemutualexclusionobject['reserved']             = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
					$thisfile_asf_bitratemutualexclusionobject['reserved_guid']        = $this->BytestringToGUID($thisfile_asf_bitratemutualexclusionobject['reserved']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
					if (($thisfile_asf_bitratemutualexclusionobject['reserved'] != GETID3_ASF_Mutex_Bitrate) && ($thisfile_asf_bitratemutualexclusionobject['reserved'] != GETID3_ASF_Mutex_Unknown)) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   590
						$this->warning('bitrate_mutual_exclusion_object.reserved GUID {'.$this->BytestringToGUID($thisfile_asf_bitratemutualexclusionobject['reserved']).'} does not match expected "GETID3_ASF_Mutex_Bitrate" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Bitrate).'} or  "GETID3_ASF_Mutex_Unknown" GUID {'.$this->BytestringToGUID(GETID3_ASF_Mutex_Unknown).'}');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
						//return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   592
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   593
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   594
					$thisfile_asf_bitratemutualexclusionobject['stream_numbers_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   595
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   596
					for ($StreamNumberCounter = 0; $StreamNumberCounter < $thisfile_asf_bitratemutualexclusionobject['stream_numbers_count']; $StreamNumberCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   597
						$thisfile_asf_bitratemutualexclusionobject['stream_numbers'][$StreamNumberCounter] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   598
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   599
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   600
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   601
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   602
				case GETID3_ASF_Error_Correction_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   603
					// Error Correction Object: (optional, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   604
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   605
					// Object ID                    GUID         128             // GUID for Error Correction object - GETID3_ASF_Error_Correction_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   606
					// Object Size                  QWORD        64              // size of Error Correction object, including 44 bytes of Error Correction Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   607
					// Error Correction Type        GUID         128             // type of error correction. one of: (GETID3_ASF_No_Error_Correction, GETID3_ASF_Audio_Spread)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   608
					// Error Correction Data Length DWORD        32              // number of bytes in Error Correction Data field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   609
					// Error Correction Data        BYTESTREAM   variable        // structure depends on value of Error Correction Type field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   610
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   611
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   612
					$thisfile_asf['error_correction_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   613
					$thisfile_asf_errorcorrectionobject      = &$thisfile_asf['error_correction_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   614
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   615
					$thisfile_asf_errorcorrectionobject['offset']                = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   616
					$thisfile_asf_errorcorrectionobject['objectid']              = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   617
					$thisfile_asf_errorcorrectionobject['objectid_guid']         = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   618
					$thisfile_asf_errorcorrectionobject['objectsize']            = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   619
					$thisfile_asf_errorcorrectionobject['error_correction_type'] = substr($ASFHeaderData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   620
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   621
					$thisfile_asf_errorcorrectionobject['error_correction_guid'] = $this->BytestringToGUID($thisfile_asf_errorcorrectionobject['error_correction_type']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   622
					$thisfile_asf_errorcorrectionobject['error_correction_data_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   623
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   624
					switch ($thisfile_asf_errorcorrectionobject['error_correction_type']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   625
						case GETID3_ASF_No_Error_Correction:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   626
							// should be no data, but just in case there is, skip to the end of the field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   627
							$offset += $thisfile_asf_errorcorrectionobject['error_correction_data_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   628
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   629
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   630
						case GETID3_ASF_Audio_Spread:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   631
							// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   632
							// Span                         BYTE         8               // number of packets over which audio will be spread.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   633
							// Virtual Packet Length        WORD         16              // size of largest audio payload found in audio stream
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   634
							// Virtual Chunk Length         WORD         16              // size of largest audio payload found in audio stream
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   635
							// Silence Data Length          WORD         16              // number of bytes in Silence Data field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   636
							// Silence Data                 BYTESTREAM   variable        // hardcoded: 0x00 * (Silence Data Length) bytes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   637
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   638
							$thisfile_asf_errorcorrectionobject['span']                  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 1));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   639
							$offset += 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   640
							$thisfile_asf_errorcorrectionobject['virtual_packet_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   641
							$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   642
							$thisfile_asf_errorcorrectionobject['virtual_chunk_length']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   643
							$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   644
							$thisfile_asf_errorcorrectionobject['silence_data_length']   = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   645
							$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   646
							$thisfile_asf_errorcorrectionobject['silence_data']          = substr($ASFHeaderData, $offset, $thisfile_asf_errorcorrectionobject['silence_data_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   647
							$offset += $thisfile_asf_errorcorrectionobject['silence_data_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   648
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   649
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   650
						default:
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   651
							$this->warning('error_correction_object.error_correction_type GUID {'.$this->BytestringToGUID($thisfile_asf_errorcorrectionobject['reserved']).'} does not match expected "GETID3_ASF_No_Error_Correction" GUID {'.$this->BytestringToGUID(GETID3_ASF_No_Error_Correction).'} or  "GETID3_ASF_Audio_Spread" GUID {'.$this->BytestringToGUID(GETID3_ASF_Audio_Spread).'}');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   652
							//return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   653
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   654
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   655
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   656
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   657
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   658
				case GETID3_ASF_Content_Description_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   659
					// Content Description Object: (optional, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   660
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   661
					// Object ID                    GUID         128             // GUID for Content Description object - GETID3_ASF_Content_Description_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   662
					// Object Size                  QWORD        64              // size of Content Description object, including 34 bytes of Content Description Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   663
					// Title Length                 WORD         16              // number of bytes in Title field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   664
					// Author Length                WORD         16              // number of bytes in Author field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
					// Copyright Length             WORD         16              // number of bytes in Copyright field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   666
					// Description Length           WORD         16              // number of bytes in Description field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   667
					// Rating Length                WORD         16              // number of bytes in Rating field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   668
					// Title                        WCHAR        16              // array of Unicode characters - Title
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   669
					// Author                       WCHAR        16              // array of Unicode characters - Author
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   670
					// Copyright                    WCHAR        16              // array of Unicode characters - Copyright
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   671
					// Description                  WCHAR        16              // array of Unicode characters - Description
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   672
					// Rating                       WCHAR        16              // array of Unicode characters - Rating
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   673
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   674
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   675
					$thisfile_asf['content_description_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   676
					$thisfile_asf_contentdescriptionobject      = &$thisfile_asf['content_description_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   677
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   678
					$thisfile_asf_contentdescriptionobject['offset']                = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   679
					$thisfile_asf_contentdescriptionobject['objectid']              = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   680
					$thisfile_asf_contentdescriptionobject['objectid_guid']         = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   681
					$thisfile_asf_contentdescriptionobject['objectsize']            = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   682
					$thisfile_asf_contentdescriptionobject['title_length']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   683
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   684
					$thisfile_asf_contentdescriptionobject['author_length']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   685
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   686
					$thisfile_asf_contentdescriptionobject['copyright_length']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   687
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   688
					$thisfile_asf_contentdescriptionobject['description_length']    = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   689
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   690
					$thisfile_asf_contentdescriptionobject['rating_length']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   691
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   692
					$thisfile_asf_contentdescriptionobject['title']                 = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['title_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   693
					$offset += $thisfile_asf_contentdescriptionobject['title_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   694
					$thisfile_asf_contentdescriptionobject['author']                = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['author_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   695
					$offset += $thisfile_asf_contentdescriptionobject['author_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   696
					$thisfile_asf_contentdescriptionobject['copyright']             = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['copyright_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   697
					$offset += $thisfile_asf_contentdescriptionobject['copyright_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   698
					$thisfile_asf_contentdescriptionobject['description']           = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['description_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   699
					$offset += $thisfile_asf_contentdescriptionobject['description_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   700
					$thisfile_asf_contentdescriptionobject['rating']                = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['rating_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   701
					$offset += $thisfile_asf_contentdescriptionobject['rating_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   702
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   703
					$ASFcommentKeysToCopy = array('title'=>'title', 'author'=>'artist', 'copyright'=>'copyright', 'description'=>'comment', 'rating'=>'rating');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   704
					foreach ($ASFcommentKeysToCopy as $keytocopyfrom => $keytocopyto) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   705
						if (!empty($thisfile_asf_contentdescriptionobject[$keytocopyfrom])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   706
							$thisfile_asf_comments[$keytocopyto][] = $this->TrimTerm($thisfile_asf_contentdescriptionobject[$keytocopyfrom]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   707
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   708
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   709
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   710
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   711
				case GETID3_ASF_Extended_Content_Description_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   712
					// Extended Content Description Object: (optional, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   713
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   714
					// Object ID                    GUID         128             // GUID for Extended Content Description object - GETID3_ASF_Extended_Content_Description_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   715
					// Object Size                  QWORD        64              // size of ExtendedContent Description object, including 26 bytes of Extended Content Description Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   716
					// Content Descriptors Count    WORD         16              // number of entries in Content Descriptors list
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   717
					// Content Descriptors          array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   718
					// * Descriptor Name Length     WORD         16              // size in bytes of Descriptor Name field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   719
					// * Descriptor Name            WCHAR        variable        // array of Unicode characters - Descriptor Name
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   720
					// * Descriptor Value Data Type WORD         16              // Lookup array:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   721
																					// 0x0000 = Unicode String (variable length)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   722
																					// 0x0001 = BYTE array     (variable length)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   723
																					// 0x0002 = BOOL           (DWORD, 32 bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   724
																					// 0x0003 = DWORD          (DWORD, 32 bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   725
																					// 0x0004 = QWORD          (QWORD, 64 bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   726
																					// 0x0005 = WORD           (WORD,  16 bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   727
					// * Descriptor Value Length    WORD         16              // number of bytes stored in Descriptor Value field
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   728
					// * Descriptor Value           variable     variable        // value for Content Descriptor
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   729
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   730
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   731
					$thisfile_asf['extended_content_description_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   732
					$thisfile_asf_extendedcontentdescriptionobject       = &$thisfile_asf['extended_content_description_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   733
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   734
					$thisfile_asf_extendedcontentdescriptionobject['offset']                    = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   735
					$thisfile_asf_extendedcontentdescriptionobject['objectid']                  = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   736
					$thisfile_asf_extendedcontentdescriptionobject['objectid_guid']             = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   737
					$thisfile_asf_extendedcontentdescriptionobject['objectsize']                = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   738
					$thisfile_asf_extendedcontentdescriptionobject['content_descriptors_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   739
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   740
					for ($ExtendedContentDescriptorsCounter = 0; $ExtendedContentDescriptorsCounter < $thisfile_asf_extendedcontentdescriptionobject['content_descriptors_count']; $ExtendedContentDescriptorsCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   741
						// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   742
						$thisfile_asf_extendedcontentdescriptionobject['content_descriptors'][$ExtendedContentDescriptorsCounter] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   743
						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current                 = &$thisfile_asf_extendedcontentdescriptionobject['content_descriptors'][$ExtendedContentDescriptorsCounter];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   744
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   745
						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['base_offset']  = $offset + 30;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   746
						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   747
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   748
						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']         = substr($ASFHeaderData, $offset, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   749
						$offset += $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   750
						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']   = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   751
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   752
						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   753
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   754
						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']        = substr($ASFHeaderData, $offset, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   755
						$offset += $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   756
						switch ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   757
							case 0x0000: // Unicode string
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   758
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   759
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   760
							case 0x0001: // BYTE array
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   761
								// do nothing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   762
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   763
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   764
							case 0x0002: // BOOL
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   765
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = (bool) getid3_lib::LittleEndian2Int($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   766
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   767
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   768
							case 0x0003: // DWORD
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   769
							case 0x0004: // QWORD
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   770
							case 0x0005: // WORD
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   771
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = getid3_lib::LittleEndian2Int($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   772
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   773
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   774
							default:
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   775
								$this->warning('extended_content_description.content_descriptors.'.$ExtendedContentDescriptorsCounter.'.value_type is invalid ('.$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type'].')');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   776
								//return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   777
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   778
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   779
						switch ($this->TrimConvert(strtolower($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']))) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   780
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   781
							case 'wm/albumartist':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   782
							case 'artist':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   783
								// Note: not 'artist', that comes from 'author' tag
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   784
								$thisfile_asf_comments['albumartist'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   785
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   786
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   787
							case 'wm/albumtitle':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   788
							case 'album':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   789
								$thisfile_asf_comments['album']  = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   790
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   791
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   792
							case 'wm/genre':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   793
							case 'genre':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   794
								$thisfile_asf_comments['genre'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   795
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   796
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   797
							case 'wm/partofset':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   798
								$thisfile_asf_comments['partofset'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   799
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   800
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   801
							case 'wm/tracknumber':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   802
							case 'tracknumber':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   803
								// be careful casting to int: casting unicode strings to int gives unexpected results (stops parsing at first non-numeric character)
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   804
								$thisfile_asf_comments['track_number'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   805
								foreach ($thisfile_asf_comments['track_number'] as $key => $value) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   806
									if (preg_match('/^[0-9\x00]+$/', $value)) {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   807
										$thisfile_asf_comments['track_number'][$key] = intval(str_replace("\x00", '', $value));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   808
									}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   809
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   810
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   811
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   812
							case 'wm/track':
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   813
								if (empty($thisfile_asf_comments['track_number'])) {
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   814
									$thisfile_asf_comments['track_number'] = array(1 + (int) $this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   815
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   816
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   817
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   818
							case 'wm/year':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   819
							case 'year':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   820
							case 'date':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   821
								$thisfile_asf_comments['year'] = array( $this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   822
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   823
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   824
							case 'wm/lyrics':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   825
							case 'lyrics':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   826
								$thisfile_asf_comments['lyrics'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   827
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   828
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   829
							case 'isvbr':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   830
								if ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   831
									$thisfile_audio['bitrate_mode'] = 'vbr';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   832
									$thisfile_video['bitrate_mode'] = 'vbr';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   833
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   834
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   835
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   836
							case 'id3':
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   837
								$this->getid3->include_module('tag.id3v2');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   838
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   839
								$getid3_id3v2 = new getid3_id3v2($this->getid3);
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   840
								$getid3_id3v2->AnalyzeString($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   841
								unset($getid3_id3v2);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   842
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   843
								if ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length'] > 1024) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   844
									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = '<value too large to display>';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   845
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   846
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   847
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   848
							case 'wm/encodingtime':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   849
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['encoding_time_unix'] = $this->FILETIMEtoUNIXtime($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   850
								$thisfile_asf_comments['encoding_time_unix'] = array($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['encoding_time_unix']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   851
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   852
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   853
							case 'wm/picture':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   854
								$WMpicture = $this->ASF_WMpicture($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   855
								foreach ($WMpicture as $key => $value) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   856
									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current[$key] = $value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   857
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   858
								unset($WMpicture);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   859
/*
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   860
								$wm_picture_offset = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   861
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type_id'] = getid3_lib::LittleEndian2Int(substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 1));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   862
								$wm_picture_offset += 1;
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   863
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type']    = self::WMpictureTypeLookup($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type_id']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   864
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_size']    = getid3_lib::LittleEndian2Int(substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   865
								$wm_picture_offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   866
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   867
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   868
								do {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   869
									$next_byte_pair = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   870
									$wm_picture_offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   871
									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] .= $next_byte_pair;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   872
								} while ($next_byte_pair !== "\x00\x00");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   873
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   874
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_description'] = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   875
								do {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   876
									$next_byte_pair = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   877
									$wm_picture_offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   878
									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_description'] .= $next_byte_pair;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   879
								} while ($next_byte_pair !== "\x00\x00");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   880
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   881
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['dataoffset'] = $wm_picture_offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   882
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'] = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   883
								unset($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   884
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   885
								$imageinfo = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   886
								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   887
								$imagechunkcheck = getid3_lib::GetDataImageSize($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'], $imageinfo);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   888
								unset($imageinfo);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   889
								if (!empty($imagechunkcheck)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   890
									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   891
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   892
								if (!isset($thisfile_asf_comments['picture'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   893
									$thisfile_asf_comments['picture'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   894
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   895
								$thisfile_asf_comments['picture'][] = array('data'=>$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'], 'image_mime'=>$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   896
*/
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   897
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   898
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   899
							default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   900
								switch ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   901
									case 0: // Unicode string
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   902
										if (substr($this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']), 0, 3) == 'WM/') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   903
											$thisfile_asf_comments[str_replace('wm/', '', strtolower($this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name'])))] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   904
										}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   905
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   906
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   907
									case 1:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   908
										break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   909
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   910
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   911
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   912
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   913
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   914
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   915
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   916
				case GETID3_ASF_Stream_Bitrate_Properties_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   917
					// Stream Bitrate Properties Object: (optional, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   918
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   919
					// Object ID                    GUID         128             // GUID for Stream Bitrate Properties object - GETID3_ASF_Stream_Bitrate_Properties_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   920
					// Object Size                  QWORD        64              // size of Extended Content Description object, including 26 bytes of Stream Bitrate Properties Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   921
					// Bitrate Records Count        WORD         16              // number of records in Bitrate Records
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   922
					// Bitrate Records              array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   923
					// * Flags                      WORD         16              //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   924
					// * * Stream Number            bits         7  (0x007F)     // number of this stream
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   925
					// * * Reserved                 bits         9  (0xFF80)     // hardcoded: 0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   926
					// * Average Bitrate            DWORD        32              // in bits per second
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   927
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   928
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   929
					$thisfile_asf['stream_bitrate_properties_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   930
					$thisfile_asf_streambitratepropertiesobject       = &$thisfile_asf['stream_bitrate_properties_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   931
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   932
					$thisfile_asf_streambitratepropertiesobject['offset']                    = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   933
					$thisfile_asf_streambitratepropertiesobject['objectid']                  = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   934
					$thisfile_asf_streambitratepropertiesobject['objectid_guid']             = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   935
					$thisfile_asf_streambitratepropertiesobject['objectsize']                = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   936
					$thisfile_asf_streambitratepropertiesobject['bitrate_records_count']     = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   937
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   938
					for ($BitrateRecordsCounter = 0; $BitrateRecordsCounter < $thisfile_asf_streambitratepropertiesobject['bitrate_records_count']; $BitrateRecordsCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   939
						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   940
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   941
						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags']['stream_number'] = $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags_raw'] & 0x007F;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   942
						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['bitrate'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   943
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   944
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   945
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   946
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   947
				case GETID3_ASF_Padding_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   948
					// Padding Object: (optional)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   949
					// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   950
					// Object ID                    GUID         128             // GUID for Padding object - GETID3_ASF_Padding_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   951
					// Object Size                  QWORD        64              // size of Padding object, including 24 bytes of ASF Padding Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   952
					// Padding Data                 BYTESTREAM   variable        // ignore
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   953
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   954
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   955
					$thisfile_asf['padding_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   956
					$thisfile_asf_paddingobject     = &$thisfile_asf['padding_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   957
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   958
					$thisfile_asf_paddingobject['offset']                    = $NextObjectOffset + $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   959
					$thisfile_asf_paddingobject['objectid']                  = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   960
					$thisfile_asf_paddingobject['objectid_guid']             = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   961
					$thisfile_asf_paddingobject['objectsize']                = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   962
					$thisfile_asf_paddingobject['padding_length']            = $thisfile_asf_paddingobject['objectsize'] - 16 - 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   963
					$thisfile_asf_paddingobject['padding']                   = substr($ASFHeaderData, $offset, $thisfile_asf_paddingobject['padding_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   964
					$offset += ($NextObjectSize - 16 - 8);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   965
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   966
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   967
				case GETID3_ASF_Extended_Content_Encryption_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   968
				case GETID3_ASF_Content_Encryption_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   969
					// WMA DRM - just ignore
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   970
					$offset += ($NextObjectSize - 16 - 8);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   971
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   972
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   973
				default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   974
					// Implementations shall ignore any standard or non-standard object that they do not know how to handle.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   975
					if ($this->GUIDname($NextObjectGUIDtext)) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   976
						$this->warning('unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   977
					} else {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   978
						$this->warning('unknown GUID {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   979
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   980
					$offset += ($NextObjectSize - 16 - 8);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   981
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   982
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   983
		}
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   984
		if (isset($thisfile_asf_streambitratepropertiesobject['bitrate_records_count'])) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   985
			$ASFbitrateAudio = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   986
			$ASFbitrateVideo = 0;
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   987
			for ($BitrateRecordsCounter = 0; $BitrateRecordsCounter < $thisfile_asf_streambitratepropertiesobject['bitrate_records_count']; $BitrateRecordsCounter++) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   988
				if (isset($thisfile_asf_codeclistobject['codec_entries'][$BitrateRecordsCounter])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   989
					switch ($thisfile_asf_codeclistobject['codec_entries'][$BitrateRecordsCounter]['type_raw']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   990
						case 1:
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   991
							$ASFbitrateVideo += $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['bitrate'];
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   992
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   993
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   994
						case 2:
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   995
							$ASFbitrateAudio += $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['bitrate'];
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   996
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   997
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   998
						default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   999
							// do nothing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1000
							break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1001
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1002
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1003
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1004
			if ($ASFbitrateAudio > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1005
				$thisfile_audio['bitrate'] = $ASFbitrateAudio;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1006
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1007
			if ($ASFbitrateVideo > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1008
				$thisfile_video['bitrate'] = $ASFbitrateVideo;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1009
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1010
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1011
		if (isset($thisfile_asf['stream_properties_object']) && is_array($thisfile_asf['stream_properties_object'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1012
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1013
			$thisfile_audio['bitrate'] = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1014
			$thisfile_video['bitrate'] = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1015
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1016
			foreach ($thisfile_asf['stream_properties_object'] as $streamnumber => $streamdata) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1017
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1018
				switch ($streamdata['stream_type']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1019
					case GETID3_ASF_Audio_Media:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1020
						// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1021
						// Codec ID / Format Tag        WORD         16              // unique ID of audio codec - defined as wFormatTag field of WAVEFORMATEX structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1022
						// Number of Channels           WORD         16              // number of channels of audio - defined as nChannels field of WAVEFORMATEX structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1023
						// Samples Per Second           DWORD        32              // in Hertz - defined as nSamplesPerSec field of WAVEFORMATEX structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1024
						// Average number of Bytes/sec  DWORD        32              // bytes/sec of audio stream  - defined as nAvgBytesPerSec field of WAVEFORMATEX structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1025
						// Block Alignment              WORD         16              // block size in bytes of audio codec - defined as nBlockAlign field of WAVEFORMATEX structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1026
						// Bits per sample              WORD         16              // bits per sample of mono data. set to zero for variable bitrate codecs. defined as wBitsPerSample field of WAVEFORMATEX structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1027
						// Codec Specific Data Size     WORD         16              // size in bytes of Codec Specific Data buffer - defined as cbSize field of WAVEFORMATEX structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1028
						// Codec Specific Data          BYTESTREAM   variable        // array of codec-specific data bytes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1029
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1030
						// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1031
						$thisfile_asf['audio_media'][$streamnumber] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1032
						$thisfile_asf_audiomedia_currentstream      = &$thisfile_asf['audio_media'][$streamnumber];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1033
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1034
						$audiomediaoffset = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1035
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1036
						$thisfile_asf_audiomedia_currentstream = getid3_riff::parseWAVEFORMATex(substr($streamdata['type_specific_data'], $audiomediaoffset, 16));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1037
						$audiomediaoffset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1038
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1039
						$thisfile_audio['lossless'] = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1040
						switch ($thisfile_asf_audiomedia_currentstream['raw']['wFormatTag']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1041
							case 0x0001: // PCM
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1042
							case 0x0163: // WMA9 Lossless
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1043
								$thisfile_audio['lossless'] = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1044
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1045
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1046
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1047
						if (!empty($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1048
							foreach ($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'] as $dummy => $dataarray) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1049
								if (isset($dataarray['flags']['stream_number']) && ($dataarray['flags']['stream_number'] == $streamnumber)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1050
									$thisfile_asf_audiomedia_currentstream['bitrate'] = $dataarray['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1051
									$thisfile_audio['bitrate'] += $dataarray['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1052
									break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1053
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1054
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1055
						} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1056
							if (!empty($thisfile_asf_audiomedia_currentstream['bytes_sec'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1057
								$thisfile_audio['bitrate'] += $thisfile_asf_audiomedia_currentstream['bytes_sec'] * 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1058
							} elseif (!empty($thisfile_asf_audiomedia_currentstream['bitrate'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1059
								$thisfile_audio['bitrate'] += $thisfile_asf_audiomedia_currentstream['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1060
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1061
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1062
						$thisfile_audio['streams'][$streamnumber]                = $thisfile_asf_audiomedia_currentstream;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1063
						$thisfile_audio['streams'][$streamnumber]['wformattag']  = $thisfile_asf_audiomedia_currentstream['raw']['wFormatTag'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1064
						$thisfile_audio['streams'][$streamnumber]['lossless']    = $thisfile_audio['lossless'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1065
						$thisfile_audio['streams'][$streamnumber]['bitrate']     = $thisfile_audio['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1066
						$thisfile_audio['streams'][$streamnumber]['dataformat']  = 'wma';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1067
						unset($thisfile_audio['streams'][$streamnumber]['raw']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1068
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1069
						$thisfile_asf_audiomedia_currentstream['codec_data_size'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $audiomediaoffset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1070
						$audiomediaoffset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1071
						$thisfile_asf_audiomedia_currentstream['codec_data']      = substr($streamdata['type_specific_data'], $audiomediaoffset, $thisfile_asf_audiomedia_currentstream['codec_data_size']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1072
						$audiomediaoffset += $thisfile_asf_audiomedia_currentstream['codec_data_size'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1073
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1074
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1075
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1076
					case GETID3_ASF_Video_Media:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1077
						// Field Name                   Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1078
						// Encoded Image Width          DWORD        32              // width of image in pixels
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1079
						// Encoded Image Height         DWORD        32              // height of image in pixels
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1080
						// Reserved Flags               BYTE         8               // hardcoded: 0x02
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1081
						// Format Data Size             WORD         16              // size of Format Data field in bytes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1082
						// Format Data                  array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1083
						// * Format Data Size           DWORD        32              // number of bytes in Format Data field, in bytes - defined as biSize field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1084
						// * Image Width                LONG         32              // width of encoded image in pixels - defined as biWidth field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1085
						// * Image Height               LONG         32              // height of encoded image in pixels - defined as biHeight field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1086
						// * Reserved                   WORD         16              // hardcoded: 0x0001 - defined as biPlanes field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1087
						// * Bits Per Pixel Count       WORD         16              // bits per pixel - defined as biBitCount field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1088
						// * Compression ID             FOURCC       32              // fourcc of video codec - defined as biCompression field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1089
						// * Image Size                 DWORD        32              // image size in bytes - defined as biSizeImage field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1090
						// * Horizontal Pixels / Meter  DWORD        32              // horizontal resolution of target device in pixels per meter - defined as biXPelsPerMeter field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1091
						// * Vertical Pixels / Meter    DWORD        32              // vertical resolution of target device in pixels per meter - defined as biYPelsPerMeter field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1092
						// * Colors Used Count          DWORD        32              // number of color indexes in the color table that are actually used - defined as biClrUsed field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1093
						// * Important Colors Count     DWORD        32              // number of color index required for displaying bitmap. if zero, all colors are required. defined as biClrImportant field of BITMAPINFOHEADER structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1094
						// * Codec Specific Data        BYTESTREAM   variable        // array of codec-specific data bytes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1095
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1096
						// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1097
						$thisfile_asf['video_media'][$streamnumber] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1098
						$thisfile_asf_videomedia_currentstream      = &$thisfile_asf['video_media'][$streamnumber];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1099
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1100
						$videomediaoffset = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1101
						$thisfile_asf_videomedia_currentstream['image_width']                     = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1102
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1103
						$thisfile_asf_videomedia_currentstream['image_height']                    = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1104
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1105
						$thisfile_asf_videomedia_currentstream['flags']                           = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 1));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1106
						$videomediaoffset += 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1107
						$thisfile_asf_videomedia_currentstream['format_data_size']                = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1108
						$videomediaoffset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1109
						$thisfile_asf_videomedia_currentstream['format_data']['format_data_size'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1110
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1111
						$thisfile_asf_videomedia_currentstream['format_data']['image_width']      = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1112
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1113
						$thisfile_asf_videomedia_currentstream['format_data']['image_height']     = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1114
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1115
						$thisfile_asf_videomedia_currentstream['format_data']['reserved']         = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1116
						$videomediaoffset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1117
						$thisfile_asf_videomedia_currentstream['format_data']['bits_per_pixel']   = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1118
						$videomediaoffset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1119
						$thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc']     = substr($streamdata['type_specific_data'], $videomediaoffset, 4);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1120
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1121
						$thisfile_asf_videomedia_currentstream['format_data']['image_size']       = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1122
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1123
						$thisfile_asf_videomedia_currentstream['format_data']['horizontal_pels']  = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1124
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1125
						$thisfile_asf_videomedia_currentstream['format_data']['vertical_pels']    = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1126
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1127
						$thisfile_asf_videomedia_currentstream['format_data']['colors_used']      = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1128
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1129
						$thisfile_asf_videomedia_currentstream['format_data']['colors_important'] = getid3_lib::LittleEndian2Int(substr($streamdata['type_specific_data'], $videomediaoffset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1130
						$videomediaoffset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1131
						$thisfile_asf_videomedia_currentstream['format_data']['codec_data']       = substr($streamdata['type_specific_data'], $videomediaoffset);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1132
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1133
						if (!empty($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1134
							foreach ($thisfile_asf['stream_bitrate_properties_object']['bitrate_records'] as $dummy => $dataarray) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1135
								if (isset($dataarray['flags']['stream_number']) && ($dataarray['flags']['stream_number'] == $streamnumber)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1136
									$thisfile_asf_videomedia_currentstream['bitrate'] = $dataarray['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1137
									$thisfile_video['streams'][$streamnumber]['bitrate'] = $dataarray['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1138
									$thisfile_video['bitrate'] += $dataarray['bitrate'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1139
									break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1140
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1141
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1142
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1143
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1144
						$thisfile_asf_videomedia_currentstream['format_data']['codec'] = getid3_riff::fourccLookup($thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1145
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1146
						$thisfile_video['streams'][$streamnumber]['fourcc']          = $thisfile_asf_videomedia_currentstream['format_data']['codec_fourcc'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1147
						$thisfile_video['streams'][$streamnumber]['codec']           = $thisfile_asf_videomedia_currentstream['format_data']['codec'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1148
						$thisfile_video['streams'][$streamnumber]['resolution_x']    = $thisfile_asf_videomedia_currentstream['image_width'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1149
						$thisfile_video['streams'][$streamnumber]['resolution_y']    = $thisfile_asf_videomedia_currentstream['image_height'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1150
						$thisfile_video['streams'][$streamnumber]['bits_per_sample'] = $thisfile_asf_videomedia_currentstream['format_data']['bits_per_pixel'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1151
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1152
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1153
					default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1154
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1155
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1156
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1157
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1158
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1159
		while ($this->ftell() < $info['avdataend']) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1160
			$NextObjectDataHeader = $this->fread(24);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1161
			$offset = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1162
			$NextObjectGUID = substr($NextObjectDataHeader, 0, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1163
			$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1164
			$NextObjectGUIDtext = $this->BytestringToGUID($NextObjectGUID);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1165
			$NextObjectSize = getid3_lib::LittleEndian2Int(substr($NextObjectDataHeader, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1166
			$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1167
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1168
			switch ($NextObjectGUID) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1169
				case GETID3_ASF_Data_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1170
					// Data Object: (mandatory, one only)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1171
					// Field Name                       Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1172
					// Object ID                        GUID         128             // GUID for Data object - GETID3_ASF_Data_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1173
					// Object Size                      QWORD        64              // size of Data object, including 50 bytes of Data Object header. may be 0 if FilePropertiesObject.BroadcastFlag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1174
					// File ID                          GUID         128             // unique identifier. identical to File ID field in Header Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1175
					// Total Data Packets               QWORD        64              // number of Data Packet entries in Data Object. invalid if FilePropertiesObject.BroadcastFlag == 1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1176
					// Reserved                         WORD         16              // hardcoded: 0x0101
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1177
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1178
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1179
					$thisfile_asf['data_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1180
					$thisfile_asf_dataobject     = &$thisfile_asf['data_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1181
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1182
					$DataObjectData = $NextObjectDataHeader.$this->fread(50 - 24);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1183
					$offset = 24;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1184
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1185
					$thisfile_asf_dataobject['objectid']           = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1186
					$thisfile_asf_dataobject['objectid_guid']      = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1187
					$thisfile_asf_dataobject['objectsize']         = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1188
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1189
					$thisfile_asf_dataobject['fileid']             = substr($DataObjectData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1190
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1191
					$thisfile_asf_dataobject['fileid_guid']        = $this->BytestringToGUID($thisfile_asf_dataobject['fileid']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1192
					$thisfile_asf_dataobject['total_data_packets'] = getid3_lib::LittleEndian2Int(substr($DataObjectData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1193
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1194
					$thisfile_asf_dataobject['reserved']           = getid3_lib::LittleEndian2Int(substr($DataObjectData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1195
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1196
					if ($thisfile_asf_dataobject['reserved'] != 0x0101) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
  1197
						$this->warning('data_object.reserved (0x'.sprintf('%04X', $thisfile_asf_dataobject['reserved']).') does not match expected value of "0x0101"');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1198
						//return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1199
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1200
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1201
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1202
					// Data Packets                     array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1203
					// * Error Correction Flags         BYTE         8               //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1204
					// * * Error Correction Data Length bits         4               // if Error Correction Length Type == 00, size of Error Correction Data in bytes, else hardcoded: 0000
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1205
					// * * Opaque Data Present          bits         1               //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1206
					// * * Error Correction Length Type bits         2               // number of bits for size of the error correction data. hardcoded: 00
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1207
					// * * Error Correction Present     bits         1               // If set, use Opaque Data Packet structure, else use Payload structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1208
					// * Error Correction Data
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1209
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1210
					$info['avdataoffset'] = $this->ftell();
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1211
					$this->fseek(($thisfile_asf_dataobject['objectsize'] - 50), SEEK_CUR); // skip actual audio/video data
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1212
					$info['avdataend'] = $this->ftell();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1213
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1214
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1215
				case GETID3_ASF_Simple_Index_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1216
					// Simple Index Object: (optional, recommended, one per video stream)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1217
					// Field Name                       Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1218
					// Object ID                        GUID         128             // GUID for Simple Index object - GETID3_ASF_Data_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1219
					// Object Size                      QWORD        64              // size of Simple Index object, including 56 bytes of Simple Index Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1220
					// File ID                          GUID         128             // unique identifier. may be zero or identical to File ID field in Data Object and Header Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1221
					// Index Entry Time Interval        QWORD        64              // interval between index entries in 100-nanosecond units
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1222
					// Maximum Packet Count             DWORD        32              // maximum packet count for all index entries
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1223
					// Index Entries Count              DWORD        32              // number of Index Entries structures
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1224
					// Index Entries                    array of:    variable        //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1225
					// * Packet Number                  DWORD        32              // number of the Data Packet associated with this index entry
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1226
					// * Packet Count                   WORD         16              // number of Data Packets to sent at this index entry
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1227
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1228
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1229
					$thisfile_asf['simple_index_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1230
					$thisfile_asf_simpleindexobject      = &$thisfile_asf['simple_index_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1231
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1232
					$SimpleIndexObjectData = $NextObjectDataHeader.$this->fread(56 - 24);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1233
					$offset = 24;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1234
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1235
					$thisfile_asf_simpleindexobject['objectid']                  = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1236
					$thisfile_asf_simpleindexobject['objectid_guid']             = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1237
					$thisfile_asf_simpleindexobject['objectsize']                = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1238
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1239
					$thisfile_asf_simpleindexobject['fileid']                    =                  substr($SimpleIndexObjectData, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1240
					$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1241
					$thisfile_asf_simpleindexobject['fileid_guid']               = $this->BytestringToGUID($thisfile_asf_simpleindexobject['fileid']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1242
					$thisfile_asf_simpleindexobject['index_entry_time_interval'] = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1243
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1244
					$thisfile_asf_simpleindexobject['maximum_packet_count']      = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1245
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1246
					$thisfile_asf_simpleindexobject['index_entries_count']       = getid3_lib::LittleEndian2Int(substr($SimpleIndexObjectData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1247
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1248
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1249
					$IndexEntriesData = $SimpleIndexObjectData.$this->fread(6 * $thisfile_asf_simpleindexobject['index_entries_count']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1250
					for ($IndexEntriesCounter = 0; $IndexEntriesCounter < $thisfile_asf_simpleindexobject['index_entries_count']; $IndexEntriesCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1251
						$thisfile_asf_simpleindexobject['index_entries'][$IndexEntriesCounter]['packet_number'] = getid3_lib::LittleEndian2Int(substr($IndexEntriesData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1252
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1253
						$thisfile_asf_simpleindexobject['index_entries'][$IndexEntriesCounter]['packet_count']  = getid3_lib::LittleEndian2Int(substr($IndexEntriesData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1254
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1255
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1256
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1257
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1258
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1259
				case GETID3_ASF_Index_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1260
					// 6.2 ASF top-level Index Object (optional but recommended when appropriate, 0 or 1)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1261
					// Field Name                       Field Type   Size (bits)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1262
					// Object ID                        GUID         128             // GUID for the Index Object - GETID3_ASF_Index_Object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1263
					// Object Size                      QWORD        64              // Specifies the size, in bytes, of the Index Object, including at least 34 bytes of Index Object header
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1264
					// Index Entry Time Interval        DWORD        32              // Specifies the time interval between each index entry in ms.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1265
					// Index Specifiers Count           WORD         16              // Specifies the number of Index Specifiers structures in this Index Object.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1266
					// Index Blocks Count               DWORD        32              // Specifies the number of Index Blocks structures in this Index Object.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1267
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1268
					// Index Entry Time Interval        DWORD        32              // Specifies the time interval between index entries in milliseconds.  This value cannot be 0.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1269
					// Index Specifiers Count           WORD         16              // Specifies the number of entries in the Index Specifiers list.  Valid values are 1 and greater.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1270
					// Index Specifiers                 array of:    varies          //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1271
					// * Stream Number                  WORD         16              // Specifies the stream number that the Index Specifiers refer to. Valid values are between 1 and 127.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1272
					// * Index Type                     WORD         16              // Specifies Index Type values as follows:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1273
																					//   1 = Nearest Past Data Packet - indexes point to the data packet whose presentation time is closest to the index entry time.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1274
																					//   2 = Nearest Past Media Object - indexes point to the closest data packet containing an entire object or first fragment of an object.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1275
																					//   3 = Nearest Past Cleanpoint. - indexes point to the closest data packet containing an entire object (or first fragment of an object) that has the Cleanpoint Flag set.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1276
																					//   Nearest Past Cleanpoint is the most common type of index.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1277
					// Index Entry Count                DWORD        32              // Specifies the number of Index Entries in the block.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1278
					// * Block Positions                QWORD        varies          // Specifies a list of byte offsets of the beginnings of the blocks relative to the beginning of the first Data Packet (i.e., the beginning of the Data Object + 50 bytes). The number of entries in this list is specified by the value of the Index Specifiers Count field. The order of those byte offsets is tied to the order in which Index Specifiers are listed.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1279
					// * Index Entries                  array of:    varies          //
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1280
					// * * Offsets                      DWORD        varies          // An offset value of 0xffffffff indicates an invalid offset value
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1281
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1282
					// shortcut
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1283
					$thisfile_asf['asf_index_object'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1284
					$thisfile_asf_asfindexobject      = &$thisfile_asf['asf_index_object'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1285
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1286
					$ASFIndexObjectData = $NextObjectDataHeader.$this->fread(34 - 24);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1287
					$offset = 24;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1288
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1289
					$thisfile_asf_asfindexobject['objectid']                  = $NextObjectGUID;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1290
					$thisfile_asf_asfindexobject['objectid_guid']             = $NextObjectGUIDtext;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1291
					$thisfile_asf_asfindexobject['objectsize']                = $NextObjectSize;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1292
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1293
					$thisfile_asf_asfindexobject['entry_time_interval']       = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1294
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1295
					$thisfile_asf_asfindexobject['index_specifiers_count']    = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1296
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1297
					$thisfile_asf_asfindexobject['index_blocks_count']        = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1298
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1299
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1300
					$ASFIndexObjectData .= $this->fread(4 * $thisfile_asf_asfindexobject['index_specifiers_count']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1301
					for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1302
						$IndexSpecifierStreamNumber = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1303
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1304
						$thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['stream_number']   = $IndexSpecifierStreamNumber;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1305
						$thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type']      = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1306
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1307
						$thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type_text'] = $this->ASFIndexObjectIndexTypeLookup($thisfile_asf_asfindexobject['index_specifiers'][$IndexSpecifiersCounter]['index_type']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1308
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1309
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1310
					$ASFIndexObjectData .= $this->fread(4);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1311
					$thisfile_asf_asfindexobject['index_entry_count'] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1312
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1313
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1314
					$ASFIndexObjectData .= $this->fread(8 * $thisfile_asf_asfindexobject['index_specifiers_count']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1315
					for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1316
						$thisfile_asf_asfindexobject['block_positions'][$IndexSpecifiersCounter] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1317
						$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1318
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1319
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1320
					$ASFIndexObjectData .= $this->fread(4 * $thisfile_asf_asfindexobject['index_specifiers_count'] * $thisfile_asf_asfindexobject['index_entry_count']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1321
					for ($IndexEntryCounter = 0; $IndexEntryCounter < $thisfile_asf_asfindexobject['index_entry_count']; $IndexEntryCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1322
						for ($IndexSpecifiersCounter = 0; $IndexSpecifiersCounter < $thisfile_asf_asfindexobject['index_specifiers_count']; $IndexSpecifiersCounter++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1323
							$thisfile_asf_asfindexobject['offsets'][$IndexSpecifiersCounter][$IndexEntryCounter] = getid3_lib::LittleEndian2Int(substr($ASFIndexObjectData, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1324
							$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1325
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1326
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1327
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1328
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1329
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1330
				default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1331
					// Implementations shall ignore any standard or non-standard object that they do not know how to handle.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1332
					if ($this->GUIDname($NextObjectGUIDtext)) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1333
						$this->warning('unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF body at offset '.($offset - 16 - 8));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1334
					} else {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1335
						$this->warning('unknown GUID {'.$NextObjectGUIDtext.'} in ASF body at offset '.($this->ftell() - 16 - 8));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1336
					}
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1337
					$this->fseek(($NextObjectSize - 16 - 8), SEEK_CUR);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1338
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1339
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1340
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1341
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1342
		if (isset($thisfile_asf_codeclistobject['codec_entries']) && is_array($thisfile_asf_codeclistobject['codec_entries'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1343
			foreach ($thisfile_asf_codeclistobject['codec_entries'] as $streamnumber => $streamdata) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1344
				switch ($streamdata['information']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1345
					case 'WMV1':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1346
					case 'WMV2':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1347
					case 'WMV3':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1348
					case 'MSS1':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1349
					case 'MSS2':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1350
					case 'WMVA':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1351
					case 'WVC1':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1352
					case 'WMVP':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1353
					case 'WVP2':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1354
						$thisfile_video['dataformat'] = 'wmv';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1355
						$info['mime_type'] = 'video/x-ms-wmv';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1356
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1357
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1358
					case 'MP42':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1359
					case 'MP43':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1360
					case 'MP4S':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1361
					case 'mp4s':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1362
						$thisfile_video['dataformat'] = 'asf';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1363
						$info['mime_type'] = 'video/x-ms-asf';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1364
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1365
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1366
					default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1367
						switch ($streamdata['type_raw']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1368
							case 1:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1369
								if (strstr($this->TrimConvert($streamdata['name']), 'Windows Media')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1370
									$thisfile_video['dataformat'] = 'wmv';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1371
									if ($info['mime_type'] == 'video/x-ms-asf') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1372
										$info['mime_type'] = 'video/x-ms-wmv';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1373
									}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1374
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1375
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1376
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1377
							case 2:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1378
								if (strstr($this->TrimConvert($streamdata['name']), 'Windows Media')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1379
									$thisfile_audio['dataformat'] = 'wma';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1380
									if ($info['mime_type'] == 'video/x-ms-asf') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1381
										$info['mime_type'] = 'audio/x-ms-wma';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1382
									}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1383
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1384
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1385
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1386
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1387
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1388
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1389
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1390
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1391
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1392
		switch (isset($thisfile_audio['codec']) ? $thisfile_audio['codec'] : '') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1393
			case 'MPEG Layer-3':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1394
				$thisfile_audio['dataformat'] = 'mp3';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1395
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1396
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1397
			default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1398
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1399
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1400
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1401
		if (isset($thisfile_asf_codeclistobject['codec_entries'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1402
			foreach ($thisfile_asf_codeclistobject['codec_entries'] as $streamnumber => $streamdata) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1403
				switch ($streamdata['type_raw']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1404
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1405
					case 1: // video
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1406
						$thisfile_video['encoder'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][$streamnumber]['name']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1407
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1408
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1409
					case 2: // audio
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1410
						$thisfile_audio['encoder'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][$streamnumber]['name']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1411
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1412
						// AH 2003-10-01
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1413
						$thisfile_audio['encoder_options'] = $this->TrimConvert($thisfile_asf_codeclistobject['codec_entries'][0]['description']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1414
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1415
						$thisfile_audio['codec']   = $thisfile_audio['encoder'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1416
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1417
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1418
					default:
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1419
						$this->warning('Unknown streamtype: [codec_list_object][codec_entries]['.$streamnumber.'][type_raw] == '.$streamdata['type_raw']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1420
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1421
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1422
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1423
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1424
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1425
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1426
		if (isset($info['audio'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1427
			$thisfile_audio['lossless']           = (isset($thisfile_audio['lossless'])           ? $thisfile_audio['lossless']           : false);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1428
			$thisfile_audio['dataformat']         = (!empty($thisfile_audio['dataformat'])        ? $thisfile_audio['dataformat']         : 'asf');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1429
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1430
		if (!empty($thisfile_video['dataformat'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1431
			$thisfile_video['lossless']           = (isset($thisfile_audio['lossless'])           ? $thisfile_audio['lossless']           : false);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1432
			$thisfile_video['pixel_aspect_ratio'] = (isset($thisfile_audio['pixel_aspect_ratio']) ? $thisfile_audio['pixel_aspect_ratio'] : (float) 1);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1433
			$thisfile_video['dataformat']         = (!empty($thisfile_video['dataformat'])        ? $thisfile_video['dataformat']         : 'asf');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1434
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1435
		if (!empty($thisfile_video['streams'])) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1436
			$thisfile_video['resolution_x'] = 0;
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1437
			$thisfile_video['resolution_y'] = 0;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1438
			foreach ($thisfile_video['streams'] as $key => $valuearray) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1439
				if (($valuearray['resolution_x'] > $thisfile_video['resolution_x']) || ($valuearray['resolution_y'] > $thisfile_video['resolution_y'])) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1440
					$thisfile_video['resolution_x'] = $valuearray['resolution_x'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1441
					$thisfile_video['resolution_y'] = $valuearray['resolution_y'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1442
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1443
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1444
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1445
		$info['bitrate'] = (isset($thisfile_audio['bitrate']) ? $thisfile_audio['bitrate'] : 0) + (isset($thisfile_video['bitrate']) ? $thisfile_video['bitrate'] : 0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1446
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1447
		if ((!isset($info['playtime_seconds']) || ($info['playtime_seconds'] <= 0)) && ($info['bitrate'] > 0)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1448
			$info['playtime_seconds'] = ($info['filesize'] - $info['avdataoffset']) / ($info['bitrate'] / 8);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1449
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1450
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1451
		return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1452
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1453
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1454
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1455
	 * @param int $CodecListType
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1456
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1457
	 * @return string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1458
	 */
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1459
	public static function codecListObjectTypeLookup($CodecListType) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1460
		static $lookup = array(
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1461
			0x0001 => 'Video Codec',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1462
			0x0002 => 'Audio Codec',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1463
			0xFFFF => 'Unknown Codec'
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1464
		);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1465
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1466
		return (isset($lookup[$CodecListType]) ? $lookup[$CodecListType] : 'Invalid Codec Type');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1467
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1468
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1469
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1470
	 * @return array
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1471
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1472
	public static function KnownGUIDs() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1473
		static $GUIDarray = array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1474
			'GETID3_ASF_Extended_Stream_Properties_Object'   => '14E6A5CB-C672-4332-8399-A96952065B5A',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1475
			'GETID3_ASF_Padding_Object'                      => '1806D474-CADF-4509-A4BA-9AABCB96AAE8',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1476
			'GETID3_ASF_Payload_Ext_Syst_Pixel_Aspect_Ratio' => '1B1EE554-F9EA-4BC8-821A-376B74E4C4B8',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1477
			'GETID3_ASF_Script_Command_Object'               => '1EFB1A30-0B62-11D0-A39B-00A0C90348F6',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1478
			'GETID3_ASF_No_Error_Correction'                 => '20FB5700-5B55-11CF-A8FD-00805F5C442B',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1479
			'GETID3_ASF_Content_Branding_Object'             => '2211B3FA-BD23-11D2-B4B7-00A0C955FC6E',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1480
			'GETID3_ASF_Content_Encryption_Object'           => '2211B3FB-BD23-11D2-B4B7-00A0C955FC6E',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1481
			'GETID3_ASF_Digital_Signature_Object'            => '2211B3FC-BD23-11D2-B4B7-00A0C955FC6E',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1482
			'GETID3_ASF_Extended_Content_Encryption_Object'  => '298AE614-2622-4C17-B935-DAE07EE9289C',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1483
			'GETID3_ASF_Simple_Index_Object'                 => '33000890-E5B1-11CF-89F4-00A0C90349CB',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1484
			'GETID3_ASF_Degradable_JPEG_Media'               => '35907DE0-E415-11CF-A917-00805F5C442B',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1485
			'GETID3_ASF_Payload_Extension_System_Timecode'   => '399595EC-8667-4E2D-8FDB-98814CE76C1E',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1486
			'GETID3_ASF_Binary_Media'                        => '3AFB65E2-47EF-40F2-AC2C-70A90D71D343',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1487
			'GETID3_ASF_Timecode_Index_Object'               => '3CB73FD0-0C4A-4803-953D-EDF7B6228F0C',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1488
			'GETID3_ASF_Metadata_Library_Object'             => '44231C94-9498-49D1-A141-1D134E457054',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1489
			'GETID3_ASF_Reserved_3'                          => '4B1ACBE3-100B-11D0-A39B-00A0C90348F6',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1490
			'GETID3_ASF_Reserved_4'                          => '4CFEDB20-75F6-11CF-9C0F-00A0C90349CB',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1491
			'GETID3_ASF_Command_Media'                       => '59DACFC0-59E6-11D0-A3AC-00A0C90348F6',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1492
			'GETID3_ASF_Header_Extension_Object'             => '5FBF03B5-A92E-11CF-8EE3-00C00C205365',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1493
			'GETID3_ASF_Media_Object_Index_Parameters_Obj'   => '6B203BAD-3F11-4E84-ACA8-D7613DE2CFA7',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1494
			'GETID3_ASF_Header_Object'                       => '75B22630-668E-11CF-A6D9-00AA0062CE6C',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1495
			'GETID3_ASF_Content_Description_Object'          => '75B22633-668E-11CF-A6D9-00AA0062CE6C',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1496
			'GETID3_ASF_Error_Correction_Object'             => '75B22635-668E-11CF-A6D9-00AA0062CE6C',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1497
			'GETID3_ASF_Data_Object'                         => '75B22636-668E-11CF-A6D9-00AA0062CE6C',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1498
			'GETID3_ASF_Web_Stream_Media_Subtype'            => '776257D4-C627-41CB-8F81-7AC7FF1C40CC',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1499
			'GETID3_ASF_Stream_Bitrate_Properties_Object'    => '7BF875CE-468D-11D1-8D82-006097C9A2B2',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1500
			'GETID3_ASF_Language_List_Object'                => '7C4346A9-EFE0-4BFC-B229-393EDE415C85',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1501
			'GETID3_ASF_Codec_List_Object'                   => '86D15240-311D-11D0-A3A4-00A0C90348F6',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1502
			'GETID3_ASF_Reserved_2'                          => '86D15241-311D-11D0-A3A4-00A0C90348F6',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1503
			'GETID3_ASF_File_Properties_Object'              => '8CABDCA1-A947-11CF-8EE4-00C00C205365',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1504
			'GETID3_ASF_File_Transfer_Media'                 => '91BD222C-F21C-497A-8B6D-5AA86BFC0185',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1505
			'GETID3_ASF_Old_RTP_Extension_Data'              => '96800C63-4C94-11D1-837B-0080C7A37F95',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1506
			'GETID3_ASF_Advanced_Mutual_Exclusion_Object'    => 'A08649CF-4775-4670-8A16-6E35357566CD',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1507
			'GETID3_ASF_Bandwidth_Sharing_Object'            => 'A69609E6-517B-11D2-B6AF-00C04FD908E9',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1508
			'GETID3_ASF_Reserved_1'                          => 'ABD3D211-A9BA-11cf-8EE6-00C00C205365',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1509
			'GETID3_ASF_Bandwidth_Sharing_Exclusive'         => 'AF6060AA-5197-11D2-B6AF-00C04FD908E9',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1510
			'GETID3_ASF_Bandwidth_Sharing_Partial'           => 'AF6060AB-5197-11D2-B6AF-00C04FD908E9',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1511
			'GETID3_ASF_JFIF_Media'                          => 'B61BE100-5B4E-11CF-A8FD-00805F5C442B',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1512
			'GETID3_ASF_Stream_Properties_Object'            => 'B7DC0791-A9B7-11CF-8EE6-00C00C205365',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1513
			'GETID3_ASF_Video_Media'                         => 'BC19EFC0-5B4D-11CF-A8FD-00805F5C442B',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1514
			'GETID3_ASF_Audio_Spread'                        => 'BFC3CD50-618F-11CF-8BB2-00AA00B4E220',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1515
			'GETID3_ASF_Metadata_Object'                     => 'C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1516
			'GETID3_ASF_Payload_Ext_Syst_Sample_Duration'    => 'C6BD9450-867F-4907-83A3-C77921B733AD',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1517
			'GETID3_ASF_Group_Mutual_Exclusion_Object'       => 'D1465A40-5A79-4338-B71B-E36B8FD6C249',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1518
			'GETID3_ASF_Extended_Content_Description_Object' => 'D2D0A440-E307-11D2-97F0-00A0C95EA850',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1519
			'GETID3_ASF_Stream_Prioritization_Object'        => 'D4FED15B-88D3-454F-81F0-ED5C45999E24',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1520
			'GETID3_ASF_Payload_Ext_System_Content_Type'     => 'D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1521
			'GETID3_ASF_Old_File_Properties_Object'          => 'D6E229D0-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1522
			'GETID3_ASF_Old_ASF_Header_Object'               => 'D6E229D1-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1523
			'GETID3_ASF_Old_ASF_Data_Object'                 => 'D6E229D2-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1524
			'GETID3_ASF_Index_Object'                        => 'D6E229D3-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1525
			'GETID3_ASF_Old_Stream_Properties_Object'        => 'D6E229D4-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1526
			'GETID3_ASF_Old_Content_Description_Object'      => 'D6E229D5-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1527
			'GETID3_ASF_Old_Script_Command_Object'           => 'D6E229D6-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1528
			'GETID3_ASF_Old_Marker_Object'                   => 'D6E229D7-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1529
			'GETID3_ASF_Old_Component_Download_Object'       => 'D6E229D8-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1530
			'GETID3_ASF_Old_Stream_Group_Object'             => 'D6E229D9-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1531
			'GETID3_ASF_Old_Scalable_Object'                 => 'D6E229DA-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1532
			'GETID3_ASF_Old_Prioritization_Object'           => 'D6E229DB-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1533
			'GETID3_ASF_Bitrate_Mutual_Exclusion_Object'     => 'D6E229DC-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1534
			'GETID3_ASF_Old_Inter_Media_Dependency_Object'   => 'D6E229DD-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1535
			'GETID3_ASF_Old_Rating_Object'                   => 'D6E229DE-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1536
			'GETID3_ASF_Index_Parameters_Object'             => 'D6E229DF-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1537
			'GETID3_ASF_Old_Color_Table_Object'              => 'D6E229E0-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1538
			'GETID3_ASF_Old_Language_List_Object'            => 'D6E229E1-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1539
			'GETID3_ASF_Old_Audio_Media'                     => 'D6E229E2-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1540
			'GETID3_ASF_Old_Video_Media'                     => 'D6E229E3-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1541
			'GETID3_ASF_Old_Image_Media'                     => 'D6E229E4-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1542
			'GETID3_ASF_Old_Timecode_Media'                  => 'D6E229E5-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1543
			'GETID3_ASF_Old_Text_Media'                      => 'D6E229E6-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1544
			'GETID3_ASF_Old_MIDI_Media'                      => 'D6E229E7-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1545
			'GETID3_ASF_Old_Command_Media'                   => 'D6E229E8-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1546
			'GETID3_ASF_Old_No_Error_Concealment'            => 'D6E229EA-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1547
			'GETID3_ASF_Old_Scrambled_Audio'                 => 'D6E229EB-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1548
			'GETID3_ASF_Old_No_Color_Table'                  => 'D6E229EC-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1549
			'GETID3_ASF_Old_SMPTE_Time'                      => 'D6E229ED-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1550
			'GETID3_ASF_Old_ASCII_Text'                      => 'D6E229EE-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1551
			'GETID3_ASF_Old_Unicode_Text'                    => 'D6E229EF-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1552
			'GETID3_ASF_Old_HTML_Text'                       => 'D6E229F0-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1553
			'GETID3_ASF_Old_URL_Command'                     => 'D6E229F1-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1554
			'GETID3_ASF_Old_Filename_Command'                => 'D6E229F2-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1555
			'GETID3_ASF_Old_ACM_Codec'                       => 'D6E229F3-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1556
			'GETID3_ASF_Old_VCM_Codec'                       => 'D6E229F4-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1557
			'GETID3_ASF_Old_QuickTime_Codec'                 => 'D6E229F5-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1558
			'GETID3_ASF_Old_DirectShow_Transform_Filter'     => 'D6E229F6-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1559
			'GETID3_ASF_Old_DirectShow_Rendering_Filter'     => 'D6E229F7-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1560
			'GETID3_ASF_Old_No_Enhancement'                  => 'D6E229F8-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1561
			'GETID3_ASF_Old_Unknown_Enhancement_Type'        => 'D6E229F9-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1562
			'GETID3_ASF_Old_Temporal_Enhancement'            => 'D6E229FA-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1563
			'GETID3_ASF_Old_Spatial_Enhancement'             => 'D6E229FB-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1564
			'GETID3_ASF_Old_Quality_Enhancement'             => 'D6E229FC-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1565
			'GETID3_ASF_Old_Number_of_Channels_Enhancement'  => 'D6E229FD-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1566
			'GETID3_ASF_Old_Frequency_Response_Enhancement'  => 'D6E229FE-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1567
			'GETID3_ASF_Old_Media_Object'                    => 'D6E229FF-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1568
			'GETID3_ASF_Mutex_Language'                      => 'D6E22A00-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1569
			'GETID3_ASF_Mutex_Bitrate'                       => 'D6E22A01-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1570
			'GETID3_ASF_Mutex_Unknown'                       => 'D6E22A02-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1571
			'GETID3_ASF_Old_ASF_Placeholder_Object'          => 'D6E22A0E-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1572
			'GETID3_ASF_Old_Data_Unit_Extension_Object'      => 'D6E22A0F-35DA-11D1-9034-00A0C90349BE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1573
			'GETID3_ASF_Web_Stream_Format'                   => 'DA1E6B13-8359-4050-B398-388E965BF00C',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1574
			'GETID3_ASF_Payload_Ext_System_File_Name'        => 'E165EC0E-19ED-45D7-B4A7-25CBD1E28E9B',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1575
			'GETID3_ASF_Marker_Object'                       => 'F487CD01-A951-11CF-8EE6-00C00C205365',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1576
			'GETID3_ASF_Timecode_Index_Parameters_Object'    => 'F55E496D-9797-4B5D-8C8B-604DFE9BFB24',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1577
			'GETID3_ASF_Audio_Media'                         => 'F8699E40-5B4D-11CF-A8FD-00805F5C442B',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1578
			'GETID3_ASF_Media_Object_Index_Object'           => 'FEB103F8-12AD-4C64-840F-2A1D2F7AD48C',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1579
			'GETID3_ASF_Alt_Extended_Content_Encryption_Obj' => 'FF889EF1-ADEE-40DA-9E71-98704BB928CE',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1580
			'GETID3_ASF_Index_Placeholder_Object'            => 'D9AADE20-7C17-4F9C-BC28-8555DD98E2A2', // http://cpan.uwinnipeg.ca/htdocs/Audio-WMA/Audio/WMA.pm.html
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1581
			'GETID3_ASF_Compatibility_Object'                => '26F18B5D-4584-47EC-9F5F-0E651F0452C9', // http://cpan.uwinnipeg.ca/htdocs/Audio-WMA/Audio/WMA.pm.html
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1582
		);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1583
		return $GUIDarray;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1584
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1585
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1586
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1587
	 * @param string $GUIDstring
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1588
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1589
	 * @return string|false
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1590
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1591
	public static function GUIDname($GUIDstring) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1592
		static $GUIDarray = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1593
		if (empty($GUIDarray)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1594
			$GUIDarray = self::KnownGUIDs();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1595
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1596
		return array_search($GUIDstring, $GUIDarray);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1597
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1598
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1599
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1600
	 * @param int $id
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1601
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1602
	 * @return string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1603
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1604
	public static function ASFIndexObjectIndexTypeLookup($id) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1605
		static $ASFIndexObjectIndexTypeLookup = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1606
		if (empty($ASFIndexObjectIndexTypeLookup)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1607
			$ASFIndexObjectIndexTypeLookup[1] = 'Nearest Past Data Packet';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1608
			$ASFIndexObjectIndexTypeLookup[2] = 'Nearest Past Media Object';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1609
			$ASFIndexObjectIndexTypeLookup[3] = 'Nearest Past Cleanpoint';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1610
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1611
		return (isset($ASFIndexObjectIndexTypeLookup[$id]) ? $ASFIndexObjectIndexTypeLookup[$id] : 'invalid');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1612
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1613
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1614
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1615
	 * @param string $GUIDstring
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1616
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1617
	 * @return string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1618
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1619
	public static function GUIDtoBytestring($GUIDstring) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1620
		// Microsoft defines these 16-byte (128-bit) GUIDs in the strangest way:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1621
		// first 4 bytes are in little-endian order
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1622
		// next 2 bytes are appended in little-endian order
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1623
		// next 2 bytes are appended in little-endian order
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1624
		// next 2 bytes are appended in big-endian order
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1625
		// next 6 bytes are appended in big-endian order
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1626
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1627
		// AaBbCcDd-EeFf-GgHh-IiJj-KkLlMmNnOoPp is stored as this 16-byte string:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1628
		// $Dd $Cc $Bb $Aa $Ff $Ee $Hh $Gg $Ii $Jj $Kk $Ll $Mm $Nn $Oo $Pp
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1629
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1630
		$hexbytecharstring  = chr(hexdec(substr($GUIDstring,  6, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1631
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring,  4, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1632
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring,  2, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1633
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring,  0, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1634
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1635
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 11, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1636
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring,  9, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1637
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1638
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 16, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1639
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 14, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1640
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1641
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 19, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1642
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 21, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1643
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1644
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 24, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1645
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 26, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1646
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 28, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1647
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 30, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1648
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 32, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1649
		$hexbytecharstring .= chr(hexdec(substr($GUIDstring, 34, 2)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1650
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1651
		return $hexbytecharstring;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1652
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1653
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1654
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1655
	 * @param string $Bytestring
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1656
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1657
	 * @return string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1658
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1659
	public static function BytestringToGUID($Bytestring) {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1660
		$GUIDstring  = str_pad(dechex(ord($Bytestring[3])),  2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1661
		$GUIDstring .= str_pad(dechex(ord($Bytestring[2])),  2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1662
		$GUIDstring .= str_pad(dechex(ord($Bytestring[1])),  2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1663
		$GUIDstring .= str_pad(dechex(ord($Bytestring[0])),  2, '0', STR_PAD_LEFT);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1664
		$GUIDstring .= '-';
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1665
		$GUIDstring .= str_pad(dechex(ord($Bytestring[5])),  2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1666
		$GUIDstring .= str_pad(dechex(ord($Bytestring[4])),  2, '0', STR_PAD_LEFT);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1667
		$GUIDstring .= '-';
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1668
		$GUIDstring .= str_pad(dechex(ord($Bytestring[7])),  2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1669
		$GUIDstring .= str_pad(dechex(ord($Bytestring[6])),  2, '0', STR_PAD_LEFT);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1670
		$GUIDstring .= '-';
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1671
		$GUIDstring .= str_pad(dechex(ord($Bytestring[8])),  2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1672
		$GUIDstring .= str_pad(dechex(ord($Bytestring[9])),  2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1673
		$GUIDstring .= '-';
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1674
		$GUIDstring .= str_pad(dechex(ord($Bytestring[10])), 2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1675
		$GUIDstring .= str_pad(dechex(ord($Bytestring[11])), 2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1676
		$GUIDstring .= str_pad(dechex(ord($Bytestring[12])), 2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1677
		$GUIDstring .= str_pad(dechex(ord($Bytestring[13])), 2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1678
		$GUIDstring .= str_pad(dechex(ord($Bytestring[14])), 2, '0', STR_PAD_LEFT);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1679
		$GUIDstring .= str_pad(dechex(ord($Bytestring[15])), 2, '0', STR_PAD_LEFT);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1680
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1681
		return strtoupper($GUIDstring);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1682
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1683
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1684
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1685
	 * @param int  $FILETIME
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1686
	 * @param bool $round
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1687
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1688
	 * @return float|int
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1689
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1690
	public static function FILETIMEtoUNIXtime($FILETIME, $round=true) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1691
		// FILETIME is a 64-bit unsigned integer representing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1692
		// the number of 100-nanosecond intervals since January 1, 1601
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1693
		// UNIX timestamp is number of seconds since January 1, 1970
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1694
		// 116444736000000000 = 10000000 * 60 * 60 * 24 * 365 * 369 + 89 leap days
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1695
		if ($round) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1696
			return intval(round(($FILETIME - 116444736000000000) / 10000000));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1697
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1698
		return ($FILETIME - 116444736000000000) / 10000000;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1699
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1700
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1701
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1702
	 * @param int $WMpictureType
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1703
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1704
	 * @return string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1705
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1706
	public static function WMpictureTypeLookup($WMpictureType) {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1707
		static $lookup = null;
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1708
		if ($lookup === null) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1709
			$lookup = array(
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1710
				0x03 => 'Front Cover',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1711
				0x04 => 'Back Cover',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1712
				0x00 => 'User Defined',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1713
				0x05 => 'Leaflet Page',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1714
				0x06 => 'Media Label',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1715
				0x07 => 'Lead Artist',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1716
				0x08 => 'Artist',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1717
				0x09 => 'Conductor',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1718
				0x0A => 'Band',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1719
				0x0B => 'Composer',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1720
				0x0C => 'Lyricist',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1721
				0x0D => 'Recording Location',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1722
				0x0E => 'During Recording',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1723
				0x0F => 'During Performance',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1724
				0x10 => 'Video Screen Capture',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1725
				0x12 => 'Illustration',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1726
				0x13 => 'Band Logotype',
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1727
				0x14 => 'Publisher Logotype'
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1728
			);
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1729
			$lookup = array_map(function($str) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1730
				return getid3_lib::iconv_fallback('UTF-8', 'UTF-16LE', $str);
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1731
			}, $lookup);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1732
		}
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1733
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1734
		return (isset($lookup[$WMpictureType]) ? $lookup[$WMpictureType] : '');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1735
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1736
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1737
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1738
	 * @param string $asf_header_extension_object_data
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1739
	 * @param int    $unhandled_sections
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1740
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1741
	 * @return array
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1742
	 */
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1743
	public function HeaderExtensionObjectDataParse(&$asf_header_extension_object_data, &$unhandled_sections) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1744
		// http://msdn.microsoft.com/en-us/library/bb643323.aspx
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1745
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1746
		$offset = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1747
		$objectOffset = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1748
		$HeaderExtensionObjectParsed = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1749
		while ($objectOffset < strlen($asf_header_extension_object_data)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1750
			$offset = $objectOffset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1751
			$thisObject = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1752
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1753
			$thisObject['guid']                              =                              substr($asf_header_extension_object_data, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1754
			$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1755
			$thisObject['guid_text'] = $this->BytestringToGUID($thisObject['guid']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1756
			$thisObject['guid_name'] = $this->GUIDname($thisObject['guid_text']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1757
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1758
			$thisObject['size']                              = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1759
			$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1760
			if ($thisObject['size'] <= 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1761
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1762
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1763
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1764
			switch ($thisObject['guid']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1765
				case GETID3_ASF_Extended_Stream_Properties_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1766
					$thisObject['start_time']                        = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1767
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1768
					$thisObject['start_time_unix']                   = $this->FILETIMEtoUNIXtime($thisObject['start_time']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1769
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1770
					$thisObject['end_time']                          = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  8));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1771
					$offset += 8;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1772
					$thisObject['end_time_unix']                     = $this->FILETIMEtoUNIXtime($thisObject['end_time']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1773
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1774
					$thisObject['data_bitrate']                      = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1775
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1776
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1777
					$thisObject['buffer_size']                       = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1778
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1779
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1780
					$thisObject['initial_buffer_fullness']           = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1781
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1782
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1783
					$thisObject['alternate_data_bitrate']            = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1784
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1785
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1786
					$thisObject['alternate_buffer_size']             = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1787
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1788
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1789
					$thisObject['alternate_initial_buffer_fullness'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1790
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1791
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1792
					$thisObject['maximum_object_size']               = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1793
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1794
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1795
					$thisObject['flags_raw']                         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1796
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1797
					$thisObject['flags']['reliable']                = (bool) $thisObject['flags_raw'] & 0x00000001;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1798
					$thisObject['flags']['seekable']                = (bool) $thisObject['flags_raw'] & 0x00000002;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1799
					$thisObject['flags']['no_cleanpoints']          = (bool) $thisObject['flags_raw'] & 0x00000004;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1800
					$thisObject['flags']['resend_live_cleanpoints'] = (bool) $thisObject['flags_raw'] & 0x00000008;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1801
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1802
					$thisObject['stream_number']                     = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1803
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1804
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1805
					$thisObject['stream_language_id_index']          = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1806
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1807
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1808
					$thisObject['average_time_per_frame']            = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1809
					$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1810
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1811
					$thisObject['stream_name_count']                 = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1812
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1813
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1814
					$thisObject['payload_extension_system_count']    = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1815
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1816
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1817
					for ($i = 0; $i < $thisObject['stream_name_count']; $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1818
						$streamName = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1819
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1820
						$streamName['language_id_index']             = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1821
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1822
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1823
						$streamName['stream_name_length']            = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1824
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1825
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1826
						$streamName['stream_name']                   = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  $streamName['stream_name_length']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1827
						$offset += $streamName['stream_name_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1828
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1829
						$thisObject['stream_names'][$i] = $streamName;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1830
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1831
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1832
					for ($i = 0; $i < $thisObject['payload_extension_system_count']; $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1833
						$payloadExtensionSystem = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1834
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1835
						$payloadExtensionSystem['extension_system_id']   =                              substr($asf_header_extension_object_data, $offset, 16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1836
						$offset += 16;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1837
						$payloadExtensionSystem['extension_system_id_text'] = $this->BytestringToGUID($payloadExtensionSystem['extension_system_id']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1838
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1839
						$payloadExtensionSystem['extension_system_size'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1840
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1841
						if ($payloadExtensionSystem['extension_system_size'] <= 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1842
							break 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1843
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1844
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1845
						$payloadExtensionSystem['extension_system_info_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1846
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1847
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1848
						$payloadExtensionSystem['extension_system_info_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  $payloadExtensionSystem['extension_system_info_length']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1849
						$offset += $payloadExtensionSystem['extension_system_info_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1850
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1851
						$thisObject['payload_extension_systems'][$i] = $payloadExtensionSystem;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1852
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1853
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1854
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1855
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1856
				case GETID3_ASF_Padding_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1857
					// padding, skip it
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1858
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1859
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1860
				case GETID3_ASF_Metadata_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1861
					$thisObject['description_record_counts'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1862
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1863
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1864
					for ($i = 0; $i < $thisObject['description_record_counts']; $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1865
						$descriptionRecord = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1866
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1867
						$descriptionRecord['reserved_1']         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2)); // must be zero
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1868
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1869
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1870
						$descriptionRecord['stream_number']      = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1871
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1872
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1873
						$descriptionRecord['name_length']        = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1874
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1875
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1876
						$descriptionRecord['data_type']          = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1877
						$offset += 2;
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1878
						$descriptionRecord['data_type_text'] = self::metadataLibraryObjectDataTypeLookup($descriptionRecord['data_type']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1879
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1880
						$descriptionRecord['data_length']        = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1881
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1882
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1883
						$descriptionRecord['name']               =                              substr($asf_header_extension_object_data, $offset,  $descriptionRecord['name_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1884
						$offset += $descriptionRecord['name_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1885
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1886
						$descriptionRecord['data']               =                              substr($asf_header_extension_object_data, $offset,  $descriptionRecord['data_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1887
						$offset += $descriptionRecord['data_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1888
						switch ($descriptionRecord['data_type']) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1889
							case 0x0000: // Unicode string
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1890
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1891
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1892
							case 0x0001: // BYTE array
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1893
								// do nothing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1894
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1895
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1896
							case 0x0002: // BOOL
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1897
								$descriptionRecord['data'] = (bool) getid3_lib::LittleEndian2Int($descriptionRecord['data']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1898
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1899
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1900
							case 0x0003: // DWORD
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1901
							case 0x0004: // QWORD
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1902
							case 0x0005: // WORD
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1903
								$descriptionRecord['data'] = getid3_lib::LittleEndian2Int($descriptionRecord['data']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1904
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1905
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1906
							case 0x0006: // GUID
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1907
								$descriptionRecord['data_text'] = $this->BytestringToGUID($descriptionRecord['data']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1908
								break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1909
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1910
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1911
						$thisObject['description_record'][$i] = $descriptionRecord;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1912
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1913
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1914
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1915
				case GETID3_ASF_Language_List_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1916
					$thisObject['language_id_record_counts'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1917
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1918
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1919
					for ($i = 0; $i < $thisObject['language_id_record_counts']; $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1920
						$languageIDrecord = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1921
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1922
						$languageIDrecord['language_id_length']         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  1));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1923
						$offset += 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1924
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1925
						$languageIDrecord['language_id']                =                              substr($asf_header_extension_object_data, $offset,  $languageIDrecord['language_id_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1926
						$offset += $languageIDrecord['language_id_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1927
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1928
						$thisObject['language_id_record'][$i] = $languageIDrecord;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1929
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1930
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1931
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1932
				case GETID3_ASF_Metadata_Library_Object:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1933
					$thisObject['description_records_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1934
					$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1935
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1936
					for ($i = 0; $i < $thisObject['description_records_count']; $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1937
						$descriptionRecord = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1938
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1939
						$descriptionRecord['language_list_index'] = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1940
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1941
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1942
						$descriptionRecord['stream_number']       = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1943
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1944
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1945
						$descriptionRecord['name_length']         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1946
						$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1947
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1948
						$descriptionRecord['data_type']           = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  2));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1949
						$offset += 2;
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1950
						$descriptionRecord['data_type_text'] = self::metadataLibraryObjectDataTypeLookup($descriptionRecord['data_type']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1951
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1952
						$descriptionRecord['data_length']         = getid3_lib::LittleEndian2Int(substr($asf_header_extension_object_data, $offset,  4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1953
						$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1954
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1955
						$descriptionRecord['name']                =                              substr($asf_header_extension_object_data, $offset,  $descriptionRecord['name_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1956
						$offset += $descriptionRecord['name_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1957
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1958
						$descriptionRecord['data']                =                              substr($asf_header_extension_object_data, $offset,  $descriptionRecord['data_length']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1959
						$offset += $descriptionRecord['data_length'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1960
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1961
						if (preg_match('#^WM/Picture$#', str_replace("\x00", '', trim($descriptionRecord['name'])))) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1962
							$WMpicture = $this->ASF_WMpicture($descriptionRecord['data']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1963
							foreach ($WMpicture as $key => $value) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1964
								$descriptionRecord['data'] = $WMpicture;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1965
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1966
							unset($WMpicture);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1967
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1968
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1969
						$thisObject['description_record'][$i] = $descriptionRecord;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1970
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1971
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1972
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1973
				default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1974
					$unhandled_sections++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1975
					if ($this->GUIDname($thisObject['guid_text'])) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1976
						$this->warning('unhandled Header Extension Object GUID "'.$this->GUIDname($thisObject['guid_text']).'" {'.$thisObject['guid_text'].'} at offset '.($offset - 16 - 8));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1977
					} else {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  1978
						$this->warning('unknown Header Extension Object GUID {'.$thisObject['guid_text'].'} in at offset '.($offset - 16 - 8));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1979
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1980
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1981
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1982
			$HeaderExtensionObjectParsed[] = $thisObject;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1983
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1984
			$objectOffset += $thisObject['size'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1985
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1986
		return $HeaderExtensionObjectParsed;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1987
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1988
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1989
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1990
	 * @param int $id
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1991
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1992
	 * @return string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1993
	 */
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1994
	public static function metadataLibraryObjectDataTypeLookup($id) {
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1995
		static $lookup = array(
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1996
			0x0000 => 'Unicode string', // The data consists of a sequence of Unicode characters
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1997
			0x0001 => 'BYTE array',     // The type of the data is implementation-specific
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1998
			0x0002 => 'BOOL',           // The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer. Only 0x0000 or 0x0001 are permitted values
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1999
			0x0003 => 'DWORD',          // The data is 4 bytes long and should be interpreted as a 32-bit unsigned integer
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2000
			0x0004 => 'QWORD',          // The data is 8 bytes long and should be interpreted as a 64-bit unsigned integer
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2001
			0x0005 => 'WORD',           // The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2002
			0x0006 => 'GUID',           // The data is 16 bytes long and should be interpreted as a 128-bit GUID
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2003
		);
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  2004
		return (isset($lookup[$id]) ? $lookup[$id] : 'invalid');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2005
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2006
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2007
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2008
	 * @param string $data
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2009
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2010
	 * @return array
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2011
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2012
	public function ASF_WMpicture(&$data) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2013
		//typedef struct _WMPicture{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2014
		//  LPWSTR  pwszMIMEType;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2015
		//  BYTE  bPictureType;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2016
		//  LPWSTR  pwszDescription;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2017
		//  DWORD  dwDataLen;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2018
		//  BYTE*  pbData;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2019
		//} WM_PICTURE;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2020
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2021
		$WMpicture = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2022
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2023
		$offset = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2024
		$WMpicture['image_type_id'] = getid3_lib::LittleEndian2Int(substr($data, $offset, 1));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2025
		$offset += 1;
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  2026
		$WMpicture['image_type']    = self::WMpictureTypeLookup($WMpicture['image_type_id']);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2027
		$WMpicture['image_size']    = getid3_lib::LittleEndian2Int(substr($data, $offset, 4));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2028
		$offset += 4;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2029
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2030
		$WMpicture['image_mime'] = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2031
		do {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2032
			$next_byte_pair = substr($data, $offset, 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2033
			$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2034
			$WMpicture['image_mime'] .= $next_byte_pair;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2035
		} while ($next_byte_pair !== "\x00\x00");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2036
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2037
		$WMpicture['image_description'] = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2038
		do {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2039
			$next_byte_pair = substr($data, $offset, 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2040
			$offset += 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2041
			$WMpicture['image_description'] .= $next_byte_pair;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2042
		} while ($next_byte_pair !== "\x00\x00");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2043
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2044
		$WMpicture['dataoffset'] = $offset;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2045
		$WMpicture['data'] = substr($data, $offset);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2046
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2047
		$imageinfo = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2048
		$WMpicture['image_mime'] = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2049
		$imagechunkcheck = getid3_lib::GetDataImageSize($WMpicture['data'], $imageinfo);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2050
		unset($imageinfo);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2051
		if (!empty($imagechunkcheck)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2052
			$WMpicture['image_mime'] = image_type_to_mime_type($imagechunkcheck[2]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2053
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2054
		if (!isset($this->getid3->info['asf']['comments']['picture'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2055
			$this->getid3->info['asf']['comments']['picture'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2056
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2057
		$this->getid3->info['asf']['comments']['picture'][] = array('data'=>$WMpicture['data'], 'image_mime'=>$WMpicture['image_mime']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2058
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2059
		return $WMpicture;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2060
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2061
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2062
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2063
	 * Remove terminator 00 00 and convert UTF-16LE to Latin-1.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2064
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2065
	 * @param string $string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2066
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2067
	 * @return string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2068
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2069
	public static function TrimConvert($string) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2070
		return trim(getid3_lib::iconv_fallback('UTF-16LE', 'ISO-8859-1', self::TrimTerm($string)), ' ');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2071
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2072
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2073
	/**
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2074
	 * Remove terminator 00 00.
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2075
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2076
	 * @param string $string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2077
	 *
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2078
	 * @return string
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  2079
	 */
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2080
	public static function TrimTerm($string) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2081
		// remove terminator, only if present (it should be, but...)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2082
		if (substr($string, -2) === "\x00\x00") {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2083
			$string = substr($string, 0, -2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2084
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2085
		return $string;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2086
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  2087
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
  2088
}