summaryrefslogtreecommitdiffstats
path: root/modules/getid3/module.audio-video.asf.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/getid3/module.audio-video.asf.php')
-rw-r--r--modules/getid3/module.audio-video.asf.php536
1 files changed, 268 insertions, 268 deletions
diff --git a/modules/getid3/module.audio-video.asf.php b/modules/getid3/module.audio-video.asf.php
index 1ffc1142..ac71de48 100644
--- a/modules/getid3/module.audio-video.asf.php
+++ b/modules/getid3/module.audio-video.asf.php
@@ -22,8 +22,8 @@
//
// $Id: module.audio-video.asf.php,v 1.7 2006/12/01 22:39:48 ah Exp $
-
-
+
+
class getid3_asf extends getid3_handler
{
@@ -139,13 +139,13 @@ class getid3_asf extends getid3_handler
public function Analyze() {
$getid3 = $this->getid3;
-
+
$getid3->include_module('audio-video.riff');
!isset($getid3->info['audio']) and $getid3->info['audio'] = array ();
!isset($getid3->info['video']) and $getid3->info['video'] = array ();
$getid3->info['asf']['comments'] = $getid3->info['asf']['header_object'] = array ();
-
+
$info_audio = &$getid3->info['audio'];
$info_video = &$getid3->info['video'];
$info_asf = &$getid3->info['asf'];
@@ -178,11 +178,11 @@ class getid3_asf extends getid3_handler
$header_object_data = fread($getid3->fp, 30);
$info_asf_header_object['objectid_guid'] = getid3_asf::BytestringToGUID(substr($header_object_data, 0, 16));
-
+
if ($info_asf_header_object['objectid_guid'] != getid3_asf::Header_Object) {
throw new getid3_exception('ASF header GUID {'.$info_asf_header_object['objectid_guid'].'} does not match expected "getid3_asf::Header_Object" GUID {'.getid3_asf::Header_Object.'}');
}
-
+
getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_header_object, $header_object_data, 16,
array (
'objectsize' => 8,
@@ -196,19 +196,19 @@ class getid3_asf extends getid3_handler
$offset = 0;
for ($header_objects_counter = 0; $header_objects_counter < $info_asf_header_object['headerobjects']; $header_objects_counter++) {
-
+
$next_object_guid = substr($asf_header_data, $offset, 16);
$offset += 16;
-
+
$next_object_size = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 8));
$offset += 8;
-
+
$next_object_guidtext = getid3_asf::BytestringToGUID($next_object_guid);
-
+
switch ($next_object_guidtext) {
case getid3_asf::File_Properties_Object:
-
+
// File Properties Object: (mandatory, one only)
// Field Name Field Type Size (bits)
// Object ID GUID 128 // GUID for file properties object - getid3_asf::File_Properties_Object
@@ -233,7 +233,7 @@ class getid3_asf extends getid3_handler
$info_asf_file_properties_object['objectid_guid'] = $next_object_guidtext;
$info_asf_file_properties_object['objectsize'] = $next_object_size;
-
+
$info_asf_file_properties_object['fileid_guid'] = getid3_asf::BytestringToGUID(substr($asf_header_data, $offset, 16));
$offset += 16;
@@ -251,9 +251,9 @@ class getid3_asf extends getid3_handler
'max_bitrate' => 4
)
);
-
+
$offset += 64 ;
-
+
$info_asf_file_properties_object['creation_date_unix'] = getid3_asf::FiletimeToUNIXtime($info_asf_file_properties_object['creation_date']);
$info_asf_file_properties_object['flags']['broadcast'] = (bool)($info_asf_file_properties_object['flags_raw'] & 0x0001);
$info_asf_file_properties_object['flags']['seekable'] = (bool)($info_asf_file_properties_object['flags_raw'] & 0x0002);
@@ -264,7 +264,7 @@ class getid3_asf extends getid3_handler
case getid3_asf::Stream_Properties_Object:
-
+
// Stream Properties Object: (mandatory, one per media stream)
// Field Name Field Type Size (bits)
// Object ID GUID 128 // GUID for stream properties object - getid3_asf::Stream_Properties_Object
@@ -288,7 +288,7 @@ class getid3_asf extends getid3_handler
$stream_properties_object_data['objectid_guid'] = $next_object_guidtext;
$stream_properties_object_data['objectsize'] = $next_object_size;
-
+
getid3_lib::ReadSequence('LittleEndian2Int', $stream_properties_object_data, $asf_header_data, $offset,
array (
'stream_type' => -16,
@@ -307,17 +307,17 @@ class getid3_asf extends getid3_handler
$stream_properties_object_data['error_correct_guid'] = getid3_asf::BytestringToGUID($stream_properties_object_data['error_correct_type']);
$offset += 54; // 50 bytes + 4 bytes reserved - DWORD
-
+
$stream_properties_object_data['type_specific_data'] = substr($asf_header_data, $offset, $stream_properties_object_data['type_data_length']);
$offset += $stream_properties_object_data['type_data_length'];
-
+
$stream_properties_object_data['error_correct_data'] = substr($asf_header_data, $offset, $stream_properties_object_data['error_data_length']);
$offset += $stream_properties_object_data['error_data_length'];
switch ($stream_properties_object_data['stream_type_guid']) {
case getid3_asf::Audio_Media:
-
+
$info_audio['dataformat'] = (@$info_audio['dataformat'] ? $info_audio['dataformat'] : 'asf');
$info_audio['bitrate_mode'] = (@$info_audio['bitrate_mode'] ? $info_audio['bitrate_mode'] : 'cbr');
@@ -345,10 +345,10 @@ class getid3_asf extends getid3_handler
$info_asf['stream_properties_object'][$stream_properties_stream_number] = $stream_properties_object_data;
unset($stream_properties_object_data); // clear for next stream, if any
break;
-
+
case getid3_asf::Header_Extension_Object:
-
+
// Header Extension Object: (mandatory, one only)
// Field Name Field Type Size (bits)
// Object ID GUID 128 // GUID for Header Extension object - getid3_asf::Header_Extension_Object
@@ -365,30 +365,30 @@ class getid3_asf extends getid3_handler
$info_asf_header_extension_object['objectsize'] = $next_object_size;
$info_asf_header_extension_object['reserved_1_guid'] = getid3_asf::BytestringToGUID(substr($asf_header_data, $offset, 16));
$offset += 16;
-
+
if ($info_asf_header_extension_object['reserved_1_guid'] != getid3_asf::Reserved_1) {
$getid3->warning('header_extension_object.reserved_1 GUID ('.$info_asf_header_extension_object['reserved_1_guid'].') does not match expected "getid3_asf::Reserved_1" GUID ('.getid3_asf::Reserved_1.')');
break;
}
-
+
$info_asf_header_extension_object['reserved_2'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
if ($info_asf_header_extension_object['reserved_2'] != 6) {
$getid3->warning('header_extension_object.reserved_2 ('.getid3_lib::PrintHexBytes($info_asf_header_extension_object['reserved_2']).') does not match expected value of "6"');
break;
}
-
+
$info_asf_header_extension_object['extension_data_size'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 4));
$offset += 4;
-
+
$info_asf_header_extension_object['extension_data'] = substr($asf_header_data, $offset, $info_asf_header_extension_object['extension_data_size']);
$offset += $info_asf_header_extension_object['extension_data_size'];
break;
-
+
case getid3_asf::Codec_List_Object:
-
+
// Codec List Object: (optional, one only)
// Field Name Field Type Size (bits)
// Object ID GUID 128 // GUID for Codec List object - getid3_asf::Codec_List_Object
@@ -409,48 +409,48 @@ class getid3_asf extends getid3_handler
$info_asf_codec_list_object['objectid_guid'] = $next_object_guidtext;
$info_asf_codec_list_object['objectsize'] = $next_object_size;
-
+
$info_asf_codec_list_object['reserved_guid'] = getid3_asf::BytestringToGUID(substr($asf_header_data, $offset, 16));
$offset += 16;
-
+
if ($info_asf_codec_list_object['reserved_guid'] != '86D15241-311D-11D0-A3A4-00A0C90348F6') {
$getid3->warning('codec_list_object.reserved GUID {'.$info_asf_codec_list_object['reserved_guid'].'} does not match expected "getid3_asf::Reserved_1" GUID {86D15241-311D-11D0-A3A4-00A0C90348F6}');
break;
}
-
+
$info_asf_codec_list_object['codec_entries_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 4));
$offset += 4;
-
+
for ($codec_entry_counter = 0; $codec_entry_counter < $info_asf_codec_list_object['codec_entries_count']; $codec_entry_counter++) {
-
+
$info_asf_codec_list_object['codec_entries'][$codec_entry_counter] = array ();
$info_asf_codec_list_object_codecentries_current = &$info_asf_codec_list_object['codec_entries'][$codec_entry_counter];
$info_asf_codec_list_object_codecentries_current['type_raw'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
$info_asf_codec_list_object_codecentries_current['type'] = getid3_asf::ASFCodecListObjectTypeLookup($info_asf_codec_list_object_codecentries_current['type_raw']);
$codec_name_length = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2)) * 2; // 2 bytes per character
$offset += 2;
-
+
$info_asf_codec_list_object_codecentries_current['name'] = substr($asf_header_data, $offset, $codec_name_length);
$offset += $codec_name_length;
$codec_description_length = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2)) * 2; // 2 bytes per character
$offset += 2;
-
+
$info_asf_codec_list_object_codecentries_current['description'] = substr($asf_header_data, $offset, $codec_description_length);
$offset += $codec_description_length;
$codec_information_length = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
$info_asf_codec_list_object_codecentries_current['information'] = substr($asf_header_data, $offset, $codec_information_length);
$offset += $codec_information_length;
if ($info_asf_codec_list_object_codecentries_current['type_raw'] == 2) {
-
+
// audio codec
if (strpos($info_asf_codec_list_object_codecentries_current['description'], ',') === false) {
throw new getid3_exception('[asf][codec_list_object][codec_entries]['.$codec_entry_counter.'][description] expected to contain comma-seperated list of parameters: "'.$info_asf_codec_list_object_codecentries_current['description'].'"');
@@ -465,7 +465,7 @@ class getid3_asf extends getid3_handler
if (!isset($info_video['bitrate']) && isset($info_audio['bitrate']) && isset($info_asf['file_properties_object']['max_bitrate']) && ($info_asf_codec_list_object['codec_entries_count'] > 1)) {
$info_video['bitrate'] = $info_asf['file_properties_object']['max_bitrate'] - $info_audio['bitrate'];
}
-
+
if (!@$info_video['bitrate'] && @$info_audio['bitrate'] && @$getid3->info['bitrate']) {
$info_video['bitrate'] = $getid3->info['bitrate'] - $info_audio['bitrate'];
}
@@ -529,38 +529,38 @@ class getid3_asf extends getid3_handler
$info_asf_script_command_object['objectsize'] = $next_object_size;
$info_asf_script_command_object['reserved_guid'] = getid3_asf::BytestringToGUID(substr($asf_header_data, $offset, 16));
$offset += 16;
-
+
if ($info_asf_script_command_object['reserved_guid'] != '4B1ACBE3-100B-11D0-A39B-00A0C90348F6') {
$getid3->warning('script_command_object.reserved GUID {'.$info_asf_script_command_object['reserved_guid'].'} does not match expected GUID {4B1ACBE3-100B-11D0-A39B-00A0C90348F6}');
break;
}
-
+
$info_asf_script_command_object['commands_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
$info_asf_script_command_object['command_types_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
for ($command_types_counter = 0; $command_types_counter < $info_asf_script_command_object['command_types_count']; $command_types_counter++) {
-
+
$command_type_name_length = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2)) * 2; // 2 bytes per character
$offset += 2;
-
+
$info_asf_script_command_object['command_types'][$command_types_counter]['name'] = substr($asf_header_data, $offset, $command_type_name_length);
$offset += $command_type_name_length;
}
-
+
for ($commands_counter = 0; $commands_counter < $info_asf_script_command_object['commands_count']; $commands_counter++) {
-
+
$info_asf_script_command_object['commands'][$commands_counter]['presentation_time'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 4));
$offset += 4;
-
+
$info_asf_script_command_object['commands'][$commands_counter]['type_index'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
$command_type_name_length = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2)) * 2; // 2 bytes per character
$offset += 2;
-
+
$info_asf_script_command_object['commands'][$commands_counter]['name'] = substr($asf_header_data, $offset, $command_type_name_length);
$offset += $command_type_name_length;
}
@@ -594,32 +594,32 @@ class getid3_asf extends getid3_handler
$info_asf_marker_object['objectid_guid'] = $next_object_guidtext;
$info_asf_marker_object['objectsize'] = $next_object_size;
$info_asf_marker_object['reserved_guid'] = getid3_asf::BytestringToGUID(substr($asf_header_data, $offset, 16));
- $offset += 16;
-
+ $offset += 16;
+
if ($info_asf_marker_object['reserved_guid'] != '4CFEDB20-75F6-11CF-9C0F-00A0C90349CB') {
$getid3->warning('marker_object.reserved GUID {'.$info_asf_marker_object['reserved_guid'].'} does not match expected GUID {4CFEDB20-75F6-11CF-9C0F-00A0C90349CB}');
break;
}
-
+
$info_asf_marker_object['markers_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 4));
$offset += 4;
-
+
$info_asf_marker_object['reserved_2'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
if ($info_asf_marker_object['reserved_2'] != 0) {
$getid3->warning('marker_object.reserved_2 ('.getid3_lib::PrintHexBytes($info_asf_marker_object['reserved_2']).') does not match expected value of "0"');
break;
}
-
+
$info_asf_marker_object['name_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
$info_asf_marker_object['name'] = substr($asf_header_data, $offset, $info_asf_marker_object['name_length']);
$offset += $info_asf_marker_object['name_length'];
-
+
for ($markers_counter = 0; $markers_counter < $info_asf_marker_object['markers_count']; $markers_counter++) {
-
+
getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_marker_object['markers'][$markers_counter], $asf_header_data, $offset,
array (
'offset' => 8,
@@ -631,10 +631,10 @@ class getid3_asf extends getid3_handler
)
);
$offset += 30;
-
+
$info_asf_marker_object['markers'][$markers_counter]['marker_description'] = substr($asf_header_data, $offset, $info_asf_marker_object['markers'][$markers_counter]['marker_description_length']);
$offset += $info_asf_marker_object['markers'][$markers_counter]['marker_description_length'];
-
+
$padding_length = $info_asf_marker_object['markers'][$markers_counter]['entry_length'] - 4 - 4 - 4 - $info_asf_marker_object['markers'][$markers_counter]['marker_description_length'];
if ($padding_length > 0) {
$info_asf_marker_object['markers'][$markers_counter]['padding'] = substr($asf_header_data, $offset, $padding_length);
@@ -642,10 +642,10 @@ class getid3_asf extends getid3_handler
}
}
break;
-
+
case getid3_asf::Bitrate_Mutual_Exclusion_Object:
-
+
// Bitrate Mutual Exclusion Object: (optional)
// Field Name Field Type Size (bits)
// Object ID GUID 128 // GUID for Bitrate Mutual Exclusion object - getid3_asf::Bitrate_Mutual_Exclusion_Object
@@ -662,15 +662,15 @@ class getid3_asf extends getid3_handler
$info_asf_bitrate_mutual_exclusion_object['objectsize'] = $next_object_size;
$info_asf_bitrate_mutual_exclusion_object['reserved_guid'] = getid3_asf::BytestringToGUID(substr($asf_header_data, $offset, 16));
$offset += 16;
-
+
if ($info_asf_bitrate_mutual_exclusion_object['reserved_guid'] != getid3_asf::Mutex_Bitrate && $info_asf_bitrate_mutual_exclusion_object['reserved_guid'] != getid3_asf::Mutex_Unknown) {
$getid3->warning('bitrate_mutual_exclusion_object.reserved GUID {'.$info_asf_bitrate_mutual_exclusion_object['reserved_guid'].'} does not match expected "getid3_asf::Mutex_Bitrate" GUID {'.getid3_asf::Mutex_Bitrate.'} or "getid3_asf::Mutex_Unknown" GUID {'.getid3_asf::Mutex_Unknown.'}');
break;
}
-
+
$info_asf_bitrate_mutual_exclusion_object['stream_numbers_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
for ($stream_number_counter = 0; $stream_number_counter < $info_asf_bitrate_mutual_exclusion_object['stream_numbers_count']; $stream_number_counter++) {
$info_asf_bitrate_mutual_exclusion_object['stream_numbers'][$stream_number_counter] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
@@ -695,15 +695,15 @@ class getid3_asf extends getid3_handler
$info_asf_error_correction_object['objectsize'] = $next_object_size;
$info_asf_error_correction_object['error_correction_type'] = substr($asf_header_data, $offset, 16);
$offset += 16;
-
+
$info_asf_error_correction_object['error_correction_guid'] = getid3_asf::BytestringToGUID($info_asf_error_correction_object['error_correction_type']);
$info_asf_error_correction_object['error_correction_data_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 4));
$offset += 4;
-
+
switch ($info_asf_error_correction_object['error_correction_type_guid']) {
-
+
case getid3_asf::No_Error_Correction:
-
+
// should be no data, but just in case there is, skip to the end of the field
$offset += $info_asf_error_correction_object['error_correction_data_length'];
break;
@@ -718,7 +718,7 @@ class getid3_asf extends getid3_handler
// Silence Data Length WORD 16 // number of bytes in Silence Data field
// Silence Data BYTESTREAM variable // hardcoded: 0x00 * (Silence Data Length) bytes
- getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_error_correction_object, $asf_header_data, $offset,
+ getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_error_correction_object, $asf_header_data, $offset,
array (
'span' => 1,
'virtual_packet_length' => 2,
@@ -727,7 +727,7 @@ class getid3_asf extends getid3_handler
)
);
$offset += 7;
-
+
$info_asf_error_correction_object['silence_data'] = substr($asf_header_data, $offset, $info_asf_error_correction_object['silence_data_length']);
$offset += $info_asf_error_correction_object['silence_data_length'];
break;
@@ -762,8 +762,8 @@ class getid3_asf extends getid3_handler
$info_asf_content_description_object['objectid_guid'] = $next_object_guidtext;
$info_asf_content_description_object['objectsize'] = $next_object_size;
-
- getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_content_description_object, $asf_header_data, $offset,
+
+ getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_content_description_object, $asf_header_data, $offset,
array (
'title_length' => 2,
'author_length' => 2,
@@ -773,19 +773,19 @@ class getid3_asf extends getid3_handler
)
);
$offset += 10;
-
+
$info_asf_content_description_object['title'] = substr($asf_header_data, $offset, $info_asf_content_description_object['title_length']);
$offset += $info_asf_content_description_object['title_length'];
-
+
$info_asf_content_description_object['author'] = substr($asf_header_data, $offset, $info_asf_content_description_object['author_length']);
$offset += $info_asf_content_description_object['author_length'];
-
+
$info_asf_content_description_object['copyright'] = substr($asf_header_data, $offset, $info_asf_content_description_object['copyright_length']);
$offset += $info_asf_content_description_object['copyright_length'];
-
+
$info_asf_content_description_object['description'] = substr($asf_header_data, $offset, $info_asf_content_description_object['description_length']);
$offset += $info_asf_content_description_object['description_length'];
-
+
$info_asf_content_description_object['rating'] = substr($asf_header_data, $offset, $info_asf_content_description_object['rating_length']);
$offset += $info_asf_content_description_object['rating_length'];
@@ -824,30 +824,30 @@ class getid3_asf extends getid3_handler
$info_asf_extended_content_description_object['objectsize'] = $next_object_size;
$info_asf_extended_content_description_object['content_descriptors_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
for ($extended_content_descriptors_counter = 0; $extended_content_descriptors_counter < $info_asf_extended_content_description_object['content_descriptors_count']; $extended_content_descriptors_counter++) {
-
+
$info_asf_extended_content_description_object['content_descriptors'][$extended_content_descriptors_counter] = array ();
$info_asf_extended_content_description_object_content_descriptor_current = &$info_asf_extended_content_description_object['content_descriptors'][$extended_content_descriptors_counter];
$info_asf_extended_content_description_object_content_descriptor_current['base_offset'] = $offset + 30;
$info_asf_extended_content_description_object_content_descriptor_current['name_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
$info_asf_extended_content_description_object_content_descriptor_current['name'] = substr($asf_header_data, $offset, $info_asf_extended_content_description_object_content_descriptor_current['name_length']);
$offset += $info_asf_extended_content_description_object_content_descriptor_current['name_length'];
-
+
$info_asf_extended_content_description_object_content_descriptor_current['value_type'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
$info_asf_extended_content_description_object_content_descriptor_current['value_length'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
$info_asf_extended_content_description_object_content_descriptor_current['value'] = substr($asf_header_data, $offset, $info_asf_extended_content_description_object_content_descriptor_current['value_length']);
$offset += $info_asf_extended_content_description_object_content_descriptor_current['value_length'];
-
+
switch ($info_asf_extended_content_description_object_content_descriptor_current['value_type']) {
-
+
case 0x0000: // Unicode string
break;
@@ -869,7 +869,7 @@ class getid3_asf extends getid3_handler
$getid3->warning('extended_content_description.content_descriptors.'.$extended_content_descriptors_counter.'.value_type is invalid ('.$info_asf_extended_content_description_object_content_descriptor_current['value_type'].')');
break;
}
-
+
switch ($this->TrimConvert(strtolower($info_asf_extended_content_description_object_content_descriptor_current['name']))) {
case 'wm/albumartist':
@@ -909,14 +909,14 @@ class getid3_asf extends getid3_handler
case 'date':
$info_asf_comments['year'] = array ( getid3_asf::TrimTerm($info_asf_extended_content_description_object_content_descriptor_current['value']));
break;
-
-
+
+
case 'wm/lyrics':
case 'lyrics':
$info_asf_comments['lyrics'] = array ( getid3_asf::TrimTerm($info_asf_extended_content_description_object_content_descriptor_current['value']));
break;
-
-
+
+
case 'isvbr':
if ($info_asf_extended_content_description_object_content_descriptor_current['value']) {
$info_audio['bitrate_mode'] = 'vbr';
@@ -926,17 +926,17 @@ class getid3_asf extends getid3_handler
case 'id3':
-
+
// id3v2 parsing might not be enabled
if (class_exists('getid3_id3v2')) {
-
- // Clone getid3
+
+ // Clone getid3
$clone = clone $getid3;
-
+
// Analyse clone by string
$id3v2 = new getid3_id3v2($clone);
$id3v2->AnalyzeString($info_asf_extended_content_description_object_content_descriptor_current['value']);
-
+
// Import from clone and destroy
$getid3->info['id3v2'] = $clone->info['id3v2'];
$getid3->warnings($clone->warnings());
@@ -952,7 +952,7 @@ class getid3_asf extends getid3_handler
case 'wm/picture':
-
+
//typedef struct _WMPicture{
// LPWSTR pwszMIMEType;
// BYTE bPictureType;
@@ -965,9 +965,9 @@ class getid3_asf extends getid3_handler
$info_asf_extended_content_description_object_content_descriptor_current['image_type'] = getid3_asf::WMpictureTypeLookup($info_asf_extended_content_description_object_content_descriptor_current['image_type_id']);
$info_asf_extended_content_description_object_content_descriptor_current['image_size'] = getid3_lib::LittleEndian2Int(substr($info_asf_extended_content_description_object_content_descriptor_current['value'], 1, 4));
$info_asf_extended_content_description_object_content_descriptor_current['image_mime'] = '';
-
+
$wm_picture_offset = 5;
-
+
do {
$next_byte_pair = substr($info_asf_extended_content_description_object_content_descriptor_current['value'], $wm_picture_offset, 2);
$wm_picture_offset += 2;
@@ -975,7 +975,7 @@ class getid3_asf extends getid3_handler
} while ($next_byte_pair !== "\x00\x00");
$info_asf_extended_content_description_object_content_descriptor_current['image_description'] = '';
-
+
do {
$next_byte_pair = substr($info_asf_extended_content_description_object_content_descriptor_current['value'], $wm_picture_offset, 2);
$wm_picture_offset += 2;
@@ -1026,14 +1026,14 @@ class getid3_asf extends getid3_handler
$info_asf_stream_bitrate_properties_object['objectsize'] = $next_object_size;
$info_asf_stream_bitrate_properties_object['bitrate_records_count'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
for ($bitrate_records_counter = 0; $bitrate_records_counter < $info_asf_stream_bitrate_properties_object['bitrate_records_count']; $bitrate_records_counter++) {
-
+
$info_asf_stream_bitrate_properties_object['bitrate_records'][$bitrate_records_counter]['flags_raw'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 2));
$offset += 2;
-
+
$info_asf_stream_bitrate_properties_object['bitrate_records'][$bitrate_records_counter]['flags']['stream_number'] = $info_asf_stream_bitrate_properties_object['bitrate_records'][$bitrate_records_counter]['flags_raw'] & 0x007F;
-
+
$info_asf_stream_bitrate_properties_object['bitrate_records'][$bitrate_records_counter]['bitrate'] = getid3_lib::LittleEndian2Int(substr($asf_header_data, $offset, 4));
$offset += 4;
}
@@ -1080,7 +1080,7 @@ class getid3_asf extends getid3_handler
break;
}
}
-
+
if (isset($info_asf_stream_bitrate_properties['bitrate_records_count'])) {
$asf_bitrate_audio = 0;
$asf_bitrate_video = 0;
@@ -1088,11 +1088,11 @@ class getid3_asf extends getid3_handler
for ($bitrate_records_counter = 0; $bitrate_records_counter < $info_asf_stream_bitrate_properties['bitrate_records_count']; $bitrate_records_counter++) {
if (isset($info_asf_codec_list_object['codec_entries'][$bitrate_records_counter])) {
switch ($info_asf_codec_list_object['codec_entries'][$bitrate_records_counter]['type_raw']) {
-
+
case 1:
$asf_bitrate_video += $info_asf_stream_bitrate_properties['bitrate_records'][$bitrate_records_counter]['bitrate'];
break;
-
+
case 2:
$asf_bitrate_audio += $info_asf_stream_bitrate_properties['bitrate_records'][$bitrate_records_counter]['bitrate'];
break;
@@ -1106,18 +1106,18 @@ class getid3_asf extends getid3_handler
$info_video['bitrate'] = $asf_bitrate_video;
}
}
-
+
if (isset($info_asf['stream_properties_object']) && is_array($info_asf['stream_properties_object'])) {
-
+
$info_audio['bitrate'] = 0;
$info_video['bitrate'] = 0;
foreach ($info_asf['stream_properties_object'] as $stream_number => $stream_data) {
-
+
switch ($stream_data['stream_type_guid']) {
-
+
case getid3_asf::Audio_Media:
-
+
// Field Name Field Type Size (bits)
// Codec ID / Format Tag WORD 16 // unique ID of audio codec - defined as wFormatTag field of WAVEFORMATEX structure
// Number of Channels WORD 16 // number of channels of audio - defined as nChannels field of WAVEFORMATEX structure
@@ -1161,7 +1161,7 @@ class getid3_asf extends getid3_handler
$info_audio['bitrate'] += $info_asf_audio_media_current_stream['bitrate'];
}
}
-
+
$info_audio['streams'][$stream_number] = $info_asf_audio_media_current_stream;
$info_audio['streams'][$stream_number]['wformattag'] = $info_asf_audio_media_current_stream['raw']['wFormatTag'];
$info_audio['streams'][$stream_number]['lossless'] = $info_audio['lossless'];
@@ -1170,7 +1170,7 @@ class getid3_asf extends getid3_handler
$info_asf_audio_media_current_stream['codec_data_size'] = getid3_lib::LittleEndian2Int(substr($stream_data['type_specific_data'], $audio_media_offset, 2));
$audio_media_offset += 2;
-
+
$info_asf_audio_media_current_stream['codec_data'] = substr($stream_data['type_specific_data'], $audio_media_offset, $info_asf_audio_media_current_stream['codec_data_size']);
$audio_media_offset += $info_asf_audio_media_current_stream['codec_data_size'];
break;
@@ -1200,7 +1200,7 @@ class getid3_asf extends getid3_handler
$info_asf['video_media'][$stream_number] = array ();
$info_asf_video_media_current_stream = &$info_asf['video_media'][$stream_number];
- getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_video_media_current_stream, $stream_data['type_specific_data'], 0,
+ getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_video_media_current_stream, $stream_data['type_specific_data'], 0,
array (
'image_width' => 4,
'image_height' => 4,
@@ -1208,8 +1208,8 @@ class getid3_asf extends getid3_handler
'format_data_size'=> 2
)
);
-
- getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_video_media_current_stream['format_data'], $stream_data['type_specific_data'], 11,
+
+ getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_video_media_current_stream['format_data'], $stream_data['type_specific_data'], 11,
array (
'format_data_size' => 4,
'image_width' => 4,
@@ -1224,21 +1224,21 @@ class getid3_asf extends getid3_handler
'colors_important' => 4
)
);
-
+
$info_asf_video_media_current_stream['format_data']['codec_data'] = substr($stream_data['type_specific_data'], 51);
-
+
if (!empty($info_asf['stream_bitrate_properties_object']['bitrate_records'])) {
foreach ($info_asf['stream_bitrate_properties_object']['bitrate_records'] as $data_array) {
if (@$data_array['flags']['stream_number'] == $stream_number) {
$info_asf_video_media_current_stream['bitrate'] = $data_array['bitrate'];
$info_video['streams'][$stream_number]['bitrate'] = $data_array['bitrate'];
$info_video['bitrate'] += $data_array['bitrate'];
-
+
break;
}
}
}
-
+
$info_asf_video_media_current_stream['format_data']['codec'] = getid3_riff::RIFFfourccLookup($info_asf_video_media_current_stream['format_data']['codec_fourcc']);
$info_video['streams'][$stream_number]['fourcc'] = $info_asf_video_media_current_stream['format_data']['codec_fourcc'];
@@ -1255,21 +1255,21 @@ class getid3_asf extends getid3_handler
}
while (ftell($getid3->fp) < $getid3->info['avdataend']) {
-
+
$next_object_data_header = fread($getid3->fp, 24);
$offset = 0;
-
+
$next_object_guid = substr($next_object_data_header, 0, 16);
$offset += 16;
-
+
$next_object_guidtext = getid3_asf::BytestringToGUID($next_object_guid);
$next_object_size = getid3_lib::LittleEndian2Int(substr($next_object_data_header, $offset, 8));
$offset += 8;
switch ($next_object_guidtext) {
-
+
case getid3_asf::Data_Object:
-
+
// Data Object: (mandatory, one only)
// Field Name Field Type Size (bits)
// Object ID GUID 128 // GUID for Data object - getid3_asf::Data_Object
@@ -1290,13 +1290,13 @@ class getid3_asf extends getid3_handler
$info_asf_data_object['fileid_guid'] = getid3_asf::BytestringToGUID(substr($data_object_data, $offset, 16));
$offset += 16;
-
+
$info_asf_data_object['total_data_packets'] = getid3_lib::LittleEndian2Int(substr($data_object_data, $offset, 8));
$offset += 8;
-
+
$info_asf_data_object['reserved'] = getid3_lib::LittleEndian2Int(substr($data_object_data, $offset, 2));
$offset += 2;
-
+
if ($info_asf_data_object['reserved'] != 0x0101) {
$getid3->warning('data_object.reserved ('.getid3_lib::PrintHexBytes($info_asf_data_object['reserved']).') does not match expected value of "0x0101"');
break;
@@ -1338,7 +1338,7 @@ class getid3_asf extends getid3_handler
$info_asf_simple_index_object['objectsize'] = $next_object_size;
$simple_index_object_data = $next_object_data_header.fread($getid3->fp, 56 - 24);
-
+
$info_asf_simple_index_object['fileid_guid'] = getid3_asf::BytestringToGUID(substr($simple_index_object_data, 24, 16));
getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_simple_index_object, $simple_index_object_data, 40,
@@ -1348,15 +1348,15 @@ class getid3_asf extends getid3_handler
'index_entries_count' => 4
)
);
-
+
$offset = 56;
$index_entries_data = $simple_index_object_data.fread($getid3->fp, 6 * $info_asf_simple_index_object['index_entries_count']);
for ($index_entries_counter = 0; $index_entries_counter < $info_asf_simple_index_object['index_entries_count']; $index_entries_counter++) {
-
+
$info_asf_simple_index_object['index_entries'][$index_entries_counter]['packet_number'] = getid3_lib::LittleEndian2Int(substr($index_entries_data, $offset, 4));
$offset += 4;
-
+
$info_asf_simple_index_object['index_entries'][$index_entries_counter]['packet_count'] = getid3_lib::LittleEndian2Int(substr($index_entries_data, $offset, 4));
$offset += 2;
}
@@ -1396,7 +1396,7 @@ class getid3_asf extends getid3_handler
$info_asf_asf_index_object['objectid_guid'] = $next_object_guidtext;
$info_asf_asf_index_object['objectsize'] = $next_object_size;
- getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_asf_index_object, $asf_index_object_data, 24,
+ getid3_lib::ReadSequence('LittleEndian2Int', $info_asf_asf_index_object, $asf_index_object_data, 24,
array (
'entry_time_interval' =>4,
'index_specifiers_count' =>2,
@@ -1407,17 +1407,17 @@ class getid3_asf extends getid3_handler
$offset = 34;
$asf_index_object_data .= fread($getid3->fp, 4 * $info_asf_asf_index_object['index_specifiers_count']);
-
+
for ($index_specifiers_counter = 0; $index_specifiers_counter < $info_asf_asf_index_object['index_specifiers_count']; $index_specifiers_counter++) {
-
+
$index_specifier_stream_number = getid3_lib::LittleEndian2Int(substr($asf_index_object_data, $offset, 2));
$offset += 2;
-
+
$info_asf_asf_index_object['index_specifiers'][$index_specifiers_counter]['stream_number'] = $index_specifier_stream_number;
-
+
$info_asf_asf_index_object['index_specifiers'][$index_specifiers_counter]['index_type'] = getid3_lib::LittleEndian2Int(substr($asf_index_object_data, $offset, 2));
$offset += 2;
-
+
$info_asf_asf_index_object['index_specifiers'][$index_specifiers_counter]['index_type_text'] = getid3_asf::ASFIndexObjectIndexTypeLookup($info_asf_asf_index_object['index_specifiers'][$index_specifiers_counter]['index_type']);
}
@@ -1426,14 +1426,14 @@ class getid3_asf extends getid3_handler
$offset += 4;
$asf_index_object_data .= fread($getid3->fp, 8 * $info_asf_asf_index_object['index_specifiers_count']);
-
+
for ($index_specifiers_counter = 0; $index_specifiers_counter < $info_asf_asf_index_object['index_specifiers_count']; $index_specifiers_counter++) {
$info_asf_asf_index_object['block_positions'][$index_specifiers_counter] = getid3_lib::LittleEndian2Int(substr($asf_index_object_data, $offset, 8));
$offset += 8;
}
$asf_index_object_data .= fread($getid3->fp, 4 * $info_asf_asf_index_object['index_specifiers_count'] * $info_asf_asf_index_object['index_entry_count']);
-
+
for ($index_entry_counter = 0; $index_entry_counter < $info_asf_asf_index_object['index_entry_count']; $index_entry_counter++) {
for ($index_specifiers_counter = 0; $index_specifiers_counter < $info_asf_asf_index_object['index_specifiers_count']; $index_specifiers_counter++) {
$info_asf_asf_index_object['offsets'][$index_specifiers_counter][$index_entry_counter] = getid3_lib::LittleEndian2Int(substr($asf_index_object_data, $offset, 4));
@@ -1444,7 +1444,7 @@ class getid3_asf extends getid3_handler
default:
-
+
// Implementations shall ignore any standard or non-standard object that they do not know how to handle.
if (getid3_asf::GUIDname($next_object_guidtext)) {
$getid3->warning('unhandled GUID "'.getid3_asf::GUIDname($next_object_guidtext).'" {'.$next_object_guidtext.'} in ASF body at offset '.($offset - 16 - 8));
@@ -1467,7 +1467,7 @@ class getid3_asf extends getid3_handler
case 'WMVA':
case 'WVC1':
case 'WMVP':
- case 'WVP2':
+ case 'WVP2':
$info_video['dataformat'] = 'wmv';
$getid3->info['mime_type'] = 'video/x-ms-wmv';
break;
@@ -1541,31 +1541,31 @@ class getid3_asf extends getid3_handler
$info_audio['lossless'] = (isset($info_audio['lossless']) ? $info_audio['lossless'] : false);
$info_audio['dataformat'] = (!empty($info_audio['dataformat']) ? $info_audio['dataformat'] : 'asf');
}
-
+
if (!empty($info_video['dataformat'])) {
$info_video['lossless'] = (isset($info_audio['lossless']) ? $info_audio['lossless'] : false);
$info_video['pixel_aspect_ratio'] = (isset($info_audio['pixel_aspect_ratio']) ? $info_audio['pixel_aspect_ratio'] : (float)1);
$info_video['dataformat'] = (!empty($info_video['dataformat']) ? $info_video['dataformat'] : 'asf');
}
-
+
$getid3->info['bitrate'] = @$info_audio['bitrate'] + @$info_video['bitrate'];
-
+
if (empty($info_audio)) {
unset($getid3->info['audio']);
}
-
+
if (empty($info_video)) {
unset($getid3->info['video']);
}
-
+
return true;
}
-
+
// Remove terminator 00 00 and convert UNICODE to Latin-1
private function TrimConvert($string) {
-
+
// remove terminator, only if present (it should be, but...)
if (substr($string, strlen($string) - 2, 2) == "\x00\x00") {
$string = substr($string, 0, strlen($string) - 2);
@@ -1578,7 +1578,7 @@ class getid3_asf extends getid3_handler
private function WMpictureTypeLookup($wm_picture_type) {
-
+
static $lookup = array (
0x03 => 'Front Cover',
0x04 => 'Back Cover',
@@ -1599,14 +1599,14 @@ class getid3_asf extends getid3_handler
0x13 => 'Band Logotype',
0x14 => 'Publisher Logotype'
);
-
+
return isset($lookup[$wm_picture_type]) ? $this->getid3->iconv('ISO-8859-1', 'UTF-16LE', $lookup[$wm_picture_type]) : '';
}
public static function ASFCodecListObjectTypeLookup($codec_list_type) {
-
+
static $lookup = array (
0x0001 => 'Video Codec',
0x0002 => 'Audio Codec',
@@ -1619,123 +1619,123 @@ class getid3_asf extends getid3_handler
public static function GUIDname($guid_string) {
-
+
static $lookup = array (
- getid3_asf::Extended_Stream_Properties_Object => 'Extended_Stream_Properties_Object',
- getid3_asf::Padding_Object => 'Padding_Object',
- getid3_asf::Payload_Ext_Syst_Pixel_Aspect_Ratio => 'Payload_Ext_Syst_Pixel_Aspect_Ratio',
- getid3_asf::Script_Command_Object => 'Script_Command_Object',
- getid3_asf::No_Error_Correction => 'No_Error_Correction',
- getid3_asf::Content_Branding_Object => 'Content_Branding_Object',
- getid3_asf::Content_Encryption_Object => 'Content_Encryption_Object',
- getid3_asf::Digital_Signature_Object => 'Digital_Signature_Object',
- getid3_asf::Extended_Content_Encryption_Object => 'Extended_Content_Encryption_Object',
- getid3_asf::Simple_Index_Object => 'Simple_Index_Object',
- getid3_asf::Degradable_JPEG_Media => 'Degradable_JPEG_Media',
- getid3_asf::Payload_Extension_System_Timecode => 'Payload_Extension_System_Timecode',
- getid3_asf::Binary_Media => 'Binary_Media',
- getid3_asf::Timecode_Index_Object => 'Timecode_Index_Object',
- getid3_asf::Metadata_Library_Object => 'Metadata_Library_Object',
- getid3_asf::Reserved_3 => 'Reserved_3',
- getid3_asf::Reserved_4 => 'Reserved_4',
- getid3_asf::Command_Media => 'Command_Media',
- getid3_asf::Header_Extension_Object => 'Header_Extension_Object',
- getid3_asf::Media_Object_Index_Parameters_Obj => 'Media_Object_Index_Parameters_Obj',
- getid3_asf::Header_Object => 'Header_Object',
- getid3_asf::Content_Description_Object => 'Content_Description_Object',
- getid3_asf::Error_Correction_Object => 'Error_Correction_Object',
- getid3_asf::Data_Object => 'Data_Object',
- getid3_asf::Web_Stream_Media_Subtype => 'Web_Stream_Media_Subtype',
- getid3_asf::Stream_Bitrate_Properties_Object => 'Stream_Bitrate_Properties_Object',
- getid3_asf::Language_List_Object => 'Language_List_Object',
- getid3_asf::Codec_List_Object => 'Codec_List_Object',
- getid3_asf::Reserved_2 => 'Reserved_2',
- getid3_asf::File_Properties_Object => 'File_Properties_Object',
- getid3_asf::File_Transfer_Media => 'File_Transfer_Media',
- getid3_asf::Old_RTP_Extension_Data => 'Old_RTP_Extension_Data',
- getid3_asf::Advanced_Mutual_Exclusion_Object => 'Advanced_Mutual_Exclusion_Object',
- getid3_asf::Bandwidth_Sharing_Object => 'Bandwidth_Sharing_Object',
- getid3_asf::Reserved_1 => 'Reserved_1',
- getid3_asf::Bandwidth_Sharing_Exclusive => 'Bandwidth_Sharing_Exclusive',
- getid3_asf::Bandwidth_Sharing_Partial => 'Bandwidth_Sharing_Partial',
- getid3_asf::JFIF_Media => 'JFIF_Media',
- getid3_asf::Stream_Properties_Object => 'Stream_Properties_Object',
- getid3_asf::Video_Media => 'Video_Media',
- getid3_asf::Audio_Spread => 'Audio_Spread',
- getid3_asf::Metadata_Object => 'Metadata_Object',
- getid3_asf::Payload_Ext_Syst_Sample_Duration => 'Payload_Ext_Syst_Sample_Duration',
- getid3_asf::Group_Mutual_Exclusion_Object => 'Group_Mutual_Exclusion_Object',
- getid3_asf::Extended_Content_Description_Object => 'Extended_Content_Description_Object',
- getid3_asf::Stream_Prioritization_Object => 'Stream_Prioritization_Object',
- getid3_asf::Payload_Ext_System_Content_Type => 'Payload_Ext_System_Content_Type',
- getid3_asf::Old_File_Properties_Object => 'Old_File_Properties_Object',
- getid3_asf::Old_ASF_Header_Object => 'Old_ASF_Header_Object',
- getid3_asf::Old_ASF_Data_Object => 'Old_ASF_Data_Object',
- getid3_asf::Index_Object => 'Index_Object',
- getid3_asf::Old_Stream_Properties_Object => 'Old_Stream_Properties_Object',
- getid3_asf::Old_Content_Description_Object => 'Old_Content_Description_Object',
- getid3_asf::Old_Script_Command_Object => 'Old_Script_Command_Object',
- getid3_asf::Old_Marker_Object => 'Old_Marker_Object',
- getid3_asf::Old_Component_Download_Object => 'Old_Component_Download_Object',
- getid3_asf::Old_Stream_Group_Object => 'Old_Stream_Group_Object',
- getid3_asf::Old_Scalable_Object => 'Old_Scalable_Object',
- getid3_asf::Old_Prioritization_Object => 'Old_Prioritization_Object',
- getid3_asf::Bitrate_Mutual_Exclusion_Object => 'Bitrate_Mutual_Exclusion_Object',
- getid3_asf::Old_Inter_Media_Dependency_Object => 'Old_Inter_Media_Dependency_Object',
- getid3_asf::Old_Rating_Object => 'Old_Rating_Object',
- getid3_asf::Index_Parameters_Object => 'Index_Parameters_Object',
- getid3_asf::Old_Color_Table_Object => 'Old_Color_Table_Object',
- getid3_asf::Old_Language_List_Object => 'Old_Language_List_Object',
- getid3_asf::Old_Audio_Media => 'Old_Audio_Media',
- getid3_asf::Old_Video_Media => 'Old_Video_Media',
- getid3_asf::Old_Image_Media => 'Old_Image_Media',
- getid3_asf::Old_Timecode_Media => 'Old_Timecode_Media',
- getid3_asf::Old_Text_Media => 'Old_Text_Media',
- getid3_asf::Old_MIDI_Media => 'Old_MIDI_Media',
- getid3_asf::Old_Command_Media => 'Old_Command_Media',
- getid3_asf::Old_No_Error_Concealment => 'Old_No_Error_Concealment',
- getid3_asf::Old_Scrambled_Audio => 'Old_Scrambled_Audio',
- getid3_asf::Old_No_Color_Table => 'Old_No_Color_Table',
- getid3_asf::Old_SMPTE_Time => 'Old_SMPTE_Time',
- getid3_asf::Old_ASCII_Text => 'Old_ASCII_Text',
- getid3_asf::Old_Unicode_Text => 'Old_Unicode_Text',
- getid3_asf::Old_HTML_Text => 'Old_HTML_Text',
- getid3_asf::Old_URL_Command => 'Old_URL_Command',
- getid3_asf::Old_Filename_Command => 'Old_Filename_Command',
- getid3_asf::Old_ACM_Codec => 'Old_ACM_Codec',
- getid3_asf::Old_VCM_Codec => 'Old_VCM_Codec',
- getid3_asf::Old_QuickTime_Codec => 'Old_QuickTime_Codec',
- getid3_asf::Old_DirectShow_Transform_Filter => 'Old_DirectShow_Transform_Filter',
- getid3_asf::Old_DirectShow_Rendering_Filter => 'Old_DirectShow_Rendering_Filter',
- getid3_asf::Old_No_Enhancement => 'Old_No_Enhancement',
- getid3_asf::Old_Unknown_Enhancement_Type => 'Old_Unknown_Enhancement_Type',
- getid3_asf::Old_Temporal_Enhancement => 'Old_Temporal_Enhancement',
- getid3_asf::Old_Spatial_Enhancement => 'Old_Spatial_Enhancement',
- getid3_asf::Old_Quality_Enhancement => 'Old_Quality_Enhancement',
- getid3_asf::Old_Number_of_Channels_Enhancement => 'Old_Number_of_Channels_Enhancement',
- getid3_asf::Old_Frequency_Response_Enhancement => 'Old_Frequency_Response_Enhancement',
- getid3_asf::Old_Media_Object => 'Old_Media_Object',
- getid3_asf::Mutex_Language => 'Mutex_Language',
- getid3_asf::Mutex_Bitrate => 'Mutex_Bitrate',
- getid3_asf::Mutex_Unknown => 'Mutex_Unknown',
- getid3_asf::Old_ASF_Placeholder_Object => 'Old_ASF_Placeholder_Object',
- getid3_asf::Old_Data_Unit_Extension_Object => 'Old_Data_Unit_Extension_Object',
- getid3_asf::Web_Stream_Format => 'Web_Stream_Format',
- getid3_asf::Payload_Ext_System_File_Name => 'Payload_Ext_System_File_Name',
- getid3_asf::Marker_Object => 'Marker_Object',
- getid3_asf::Timecode_Index_Parameters_Object => 'Timecode_Index_Parameters_Object',
- getid3_asf::Audio_Media => 'Audio_Media',
- getid3_asf::Media_Object_Index_Object => 'Media_Object_Index_Object',
- getid3_asf::Alt_Extended_Content_Encryption_Obj => 'Alt_Extended_Content_Encryption_Obj'
+ getid3_asf::Extended_Stream_Properties_Object => 'Extended_Stream_Properties_Object',
+ getid3_asf::Padding_Object => 'Padding_Object',
+ getid3_asf::Payload_Ext_Syst_Pixel_Aspect_Ratio => 'Payload_Ext_Syst_Pixel_Aspect_Ratio',
+ getid3_asf::Script_Command_Object => 'Script_Command_Object',
+ getid3_asf::No_Error_Correction => 'No_Error_Correction',
+ getid3_asf::Content_Branding_Object => 'Content_Branding_Object',
+ getid3_asf::Content_Encryption_Object => 'Content_Encryption_Object',
+ getid3_asf::Digital_Signature_Object => 'Digital_Signature_Object',
+ getid3_asf::Extended_Content_Encryption_Object => 'Extended_Content_Encryption_Object',
+ getid3_asf::Simple_Index_Object => 'Simple_Index_Object',
+ getid3_asf::Degradable_JPEG_Media => 'Degradable_JPEG_Media',
+ getid3_asf::Payload_Extension_System_Timecode => 'Payload_Extension_System_Timecode',
+ getid3_asf::Binary_Media => 'Binary_Media',
+ getid3_asf::Timecode_Index_Object => 'Timecode_Index_Object',
+ getid3_asf::Metadata_Library_Object => 'Metadata_Library_Object',
+ getid3_asf::Reserved_3 => 'Reserved_3',
+ getid3_asf::Reserved_4 => 'Reserved_4',
+ getid3_asf::Command_Media => 'Command_Media',
+ getid3_asf::Header_Extension_Object => 'Header_Extension_Object',
+ getid3_asf::Media_Object_Index_Parameters_Obj => 'Media_Object_Index_Parameters_Obj',
+ getid3_asf::Header_Object => 'Header_Object',
+ getid3_asf::Content_Description_Object => 'Content_Description_Object',
+ getid3_asf::Error_Correction_Object => 'Error_Correction_Object',
+ getid3_asf::Data_Object => 'Data_Object',
+ getid3_asf::Web_Stream_Media_Subtype => 'Web_Stream_Media_Subtype',
+ getid3_asf::Stream_Bitrate_Properties_Object => 'Stream_Bitrate_Properties_Object',
+ getid3_asf::Language_List_Object => 'Language_List_Object',
+ getid3_asf::Codec_List_Object => 'Codec_List_Object',
+ getid3_asf::Reserved_2 => 'Reserved_2',
+ getid3_asf::File_Properties_Object => 'File_Properties_Object',
+ getid3_asf::File_Transfer_Media => 'File_Transfer_Media',
+ getid3_asf::Old_RTP_Extension_Data => 'Old_RTP_Extension_Data',
+ getid3_asf::Advanced_Mutual_Exclusion_Object => 'Advanced_Mutual_Exclusion_Object',
+ getid3_asf::Bandwidth_Sharing_Object => 'Bandwidth_Sharing_Object',
+ getid3_asf::Reserved_1 => 'Reserved_1',
+ getid3_asf::Bandwidth_Sharing_Exclusive => 'Bandwidth_Sharing_Exclusive',
+ getid3_asf::Bandwidth_Sharing_Partial => 'Bandwidth_Sharing_Partial',
+ getid3_asf::JFIF_Media => 'JFIF_Media',
+ getid3_asf::Stream_Properties_Object => 'Stream_Properties_Object',
+ getid3_asf::Video_Media => 'Video_Media',
+ getid3_asf::Audio_Spread => 'Audio_Spread',
+ getid3_asf::Metadata_Object => 'Metadata_Object',
+ getid3_asf::Payload_Ext_Syst_Sample_Duration => 'Payload_Ext_Syst_Sample_Duration',
+ getid3_asf::Group_Mutual_Exclusion_Object => 'Group_Mutual_Exclusion_Object',
+ getid3_asf::Extended_Content_Description_Object => 'Extended_Content_Description_Object',
+ getid3_asf::Stream_Prioritization_Object => 'Stream_Prioritization_Object',
+ getid3_asf::Payload_Ext_System_Content_Type => 'Payload_Ext_System_Content_Type',
+ getid3_asf::Old_File_Properties_Object => 'Old_File_Properties_Object',
+ getid3_asf::Old_ASF_Header_Object => 'Old_ASF_Header_Object',
+ getid3_asf::Old_ASF_Data_Object => 'Old_ASF_Data_Object',
+ getid3_asf::Index_Object => 'Index_Object',
+ getid3_asf::Old_Stream_Properties_Object => 'Old_Stream_Properties_Object',
+ getid3_asf::Old_Content_Description_Object => 'Old_Content_Description_Object',
+ getid3_asf::Old_Script_Command_Object => 'Old_Script_Command_Object',
+ getid3_asf::Old_Marker_Object => 'Old_Marker_Object',
+ getid3_asf::Old_Component_Download_Object => 'Old_Component_Download_Object',
+ getid3_asf::Old_Stream_Group_Object => 'Old_Stream_Group_Object',
+ getid3_asf::Old_Scalable_Object => 'Old_Scalable_Object',
+ getid3_asf::Old_Prioritization_Object => 'Old_Prioritization_Object',
+ getid3_asf::Bitrate_Mutual_Exclusion_Object => 'Bitrate_Mutual_Exclusion_Object',
+ getid3_asf::Old_Inter_Media_Dependency_Object => 'Old_Inter_Media_Dependency_Object',
+ getid3_asf::Old_Rating_Object => 'Old_Rating_Object',
+ getid3_asf::Index_Parameters_Object => 'Index_Parameters_Object',
+ getid3_asf::Old_Color_Table_Object => 'Old_Color_Table_Object',
+ getid3_asf::Old_Language_List_Object => 'Old_Language_List_Object',
+ getid3_asf::Old_Audio_Media => 'Old_Audio_Media',
+ getid3_asf::Old_Video_Media => 'Old_Video_Media',
+ getid3_asf::Old_Image_Media => 'Old_Image_Media',
+ getid3_asf::Old_Timecode_Media => 'Old_Timecode_Media',
+ getid3_asf::Old_Text_Media => 'Old_Text_Media',
+ getid3_asf::Old_MIDI_Media => 'Old_MIDI_Media',
+ getid3_asf::Old_Command_Media => 'Old_Command_Media',
+ getid3_asf::Old_No_Error_Concealment => 'Old_No_Error_Concealment',
+ getid3_asf::Old_Scrambled_Audio => 'Old_Scrambled_Audio',
+ getid3_asf::Old_No_Color_Table => 'Old_No_Color_Table',
+ getid3_asf::Old_SMPTE_Time => 'Old_SMPTE_Time',
+ getid3_asf::Old_ASCII_Text => 'Old_ASCII_Text',
+ getid3_asf::Old_Unicode_Text => 'Old_Unicode_Text',
+ getid3_asf::Old_HTML_Text => 'Old_HTML_Text',
+ getid3_asf::Old_URL_Command => 'Old_URL_Command',
+ getid3_asf::Old_Filename_Command => 'Old_Filename_Command',
+ getid3_asf::Old_ACM_Codec => 'Old_ACM_Codec',
+ getid3_asf::Old_VCM_Codec => 'Old_VCM_Codec',
+ getid3_asf::Old_QuickTime_Codec => 'Old_QuickTime_Codec',
+ getid3_asf::Old_DirectShow_Transform_Filter => 'Old_DirectShow_Transform_Filter',
+ getid3_asf::Old_DirectShow_Rendering_Filter => 'Old_DirectShow_Rendering_Filter',
+ getid3_asf::Old_No_Enhancement => 'Old_No_Enhancement',
+ getid3_asf::Old_Unknown_Enhancement_Type => 'Old_Unknown_Enhancement_Type',
+ getid3_asf::Old_Temporal_Enhancement => 'Old_Temporal_Enhancement',
+ getid3_asf::Old_Spatial_Enhancement => 'Old_Spatial_Enhancement',
+ getid3_asf::Old_Quality_Enhancement => 'Old_Quality_Enhancement',
+ getid3_asf::Old_Number_of_Channels_Enhancement => 'Old_Number_of_Channels_Enhancement',
+ getid3_asf::Old_Frequency_Response_Enhancement => 'Old_Frequency_Response_Enhancement',
+ getid3_asf::Old_Media_Object => 'Old_Media_Object',
+ getid3_asf::Mutex_Language => 'Mutex_Language',
+ getid3_asf::Mutex_Bitrate => 'Mutex_Bitrate',
+ getid3_asf::Mutex_Unknown => 'Mutex_Unknown',
+ getid3_asf::Old_ASF_Placeholder_Object => 'Old_ASF_Placeholder_Object',
+ getid3_asf::Old_Data_Unit_Extension_Object => 'Old_Data_Unit_Extension_Object',
+ getid3_asf::Web_Stream_Format => 'Web_Stream_Format',
+ getid3_asf::Payload_Ext_System_File_Name => 'Payload_Ext_System_File_Name',
+ getid3_asf::Marker_Object => 'Marker_Object',
+ getid3_asf::Timecode_Index_Parameters_Object => 'Timecode_Index_Parameters_Object',
+ getid3_asf::Audio_Media => 'Audio_Media',
+ getid3_asf::Media_Object_Index_Object => 'Media_Object_Index_Object',
+ getid3_asf::Alt_Extended_Content_Encryption_Obj => 'Alt_Extended_Content_Encryption_Obj'
);
-
+
return @$lookup[$guid_string];
}
public static function ASFIndexObjectIndexTypeLookup($id) {
-
+
static $lookup = array (
1 => 'Nearest Past Data Packet',
2 => 'Nearest Past Media Object',
@@ -1748,7 +1748,7 @@ class getid3_asf extends getid3_handler
public static function GUIDtoBytestring($guid_string) {
-
+
// Microsoft defines these 16-byte (128-bit) GUIDs in the strangest way:
// first 4 bytes are in little-endian order
// next 2 bytes are appended in little-endian order
@@ -1786,7 +1786,7 @@ class getid3_asf extends getid3_handler
public static function BytestringToGUID($byte_string) {
-
+
$guid_string = str_pad(dechex(ord($byte_string{3})), 2, '0', STR_PAD_LEFT);
$guid_string .= str_pad(dechex(ord($byte_string{2})), 2, '0', STR_PAD_LEFT);
$guid_string .= str_pad(dechex(ord($byte_string{1})), 2, '0', STR_PAD_LEFT);
@@ -1814,18 +1814,18 @@ class getid3_asf extends getid3_handler
public static function FiletimeToUNIXtime($file_time, $round=true) {
-
+
// FILETIME is a 64-bit unsigned integer representing
// the number of 100-nanosecond intervals since January 1, 1601
// UNIX timestamp is number of seconds since January 1, 1970
// 116444736000000000 = 10000000 * 60 * 60 * 24 * 365 * 369 + 89 leap days
-
+
$time = ($file_time - 116444736000000000) / 10000000;
-
+
if ($round) {
return intval(round($time));
}
-
+
return $time;
}