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