Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../ID3
File: module.audio-video.matroska.php
$info['matroska']['comments']['picture'][] = array('data' => $entry['FileData'], 'image_mime' => $entry['FileMimeType'], 'filename' => $entry['FileName']);
[500] Fix | Delete
}
[501] Fix | Delete
}
[502] Fix | Delete
}
[503] Fix | Delete
[504] Fix | Delete
// determine mime type
[505] Fix | Delete
if (!empty($info['video']['streams'])) {
[506] Fix | Delete
$info['mime_type'] = ($info['matroska']['doctype'] == 'webm' ? 'video/webm' : 'video/x-matroska');
[507] Fix | Delete
} elseif (!empty($info['audio']['streams'])) {
[508] Fix | Delete
$info['mime_type'] = ($info['matroska']['doctype'] == 'webm' ? 'audio/webm' : 'audio/x-matroska');
[509] Fix | Delete
} elseif (isset($info['mime_type'])) {
[510] Fix | Delete
unset($info['mime_type']);
[511] Fix | Delete
}
[512] Fix | Delete
[513] Fix | Delete
// use _STATISTICS_TAGS if available to set audio/video bitrates
[514] Fix | Delete
if (!empty($info['matroska']['tags'])) {
[515] Fix | Delete
$_STATISTICS_byTrackUID = array();
[516] Fix | Delete
foreach ($info['matroska']['tags'] as $key1 => $value1) {
[517] Fix | Delete
if (!empty($value1['Targets']['TagTrackUID'][0]) && !empty($value1['SimpleTag'])) {
[518] Fix | Delete
foreach ($value1['SimpleTag'] as $key2 => $value2) {
[519] Fix | Delete
if (!empty($value2['TagName']) && isset($value2['TagString'])) {
[520] Fix | Delete
$_STATISTICS_byTrackUID[$value1['Targets']['TagTrackUID'][0]][$value2['TagName']] = $value2['TagString'];
[521] Fix | Delete
}
[522] Fix | Delete
}
[523] Fix | Delete
}
[524] Fix | Delete
}
[525] Fix | Delete
foreach (array('audio','video') as $avtype) {
[526] Fix | Delete
if (!empty($info[$avtype]['streams'])) {
[527] Fix | Delete
foreach ($info[$avtype]['streams'] as $trackUID => $trackdata) {
[528] Fix | Delete
if (!isset($trackdata['bitrate']) && !empty($_STATISTICS_byTrackUID[$trackUID]['BPS'])) {
[529] Fix | Delete
$info[$avtype]['streams'][$trackUID]['bitrate'] = (int) $_STATISTICS_byTrackUID[$trackUID]['BPS'];
[530] Fix | Delete
@$info[$avtype]['bitrate'] += $info[$avtype]['streams'][$trackUID]['bitrate'];
[531] Fix | Delete
}
[532] Fix | Delete
}
[533] Fix | Delete
}
[534] Fix | Delete
}
[535] Fix | Delete
}
[536] Fix | Delete
[537] Fix | Delete
return true;
[538] Fix | Delete
}
[539] Fix | Delete
[540] Fix | Delete
/**
[541] Fix | Delete
* @param array $info
[542] Fix | Delete
*/
[543] Fix | Delete
private function parseEBML(&$info) {
[544] Fix | Delete
// http://www.matroska.org/technical/specs/index.html#EBMLBasics
[545] Fix | Delete
$this->current_offset = $info['avdataoffset'];
[546] Fix | Delete
[547] Fix | Delete
while ($this->getEBMLelement($top_element, $info['avdataend'])) {
[548] Fix | Delete
switch ($top_element['id']) {
[549] Fix | Delete
[550] Fix | Delete
case EBML_ID_EBML:
[551] Fix | Delete
$info['matroska']['header']['offset'] = $top_element['offset'];
[552] Fix | Delete
$info['matroska']['header']['length'] = $top_element['length'];
[553] Fix | Delete
[554] Fix | Delete
while ($this->getEBMLelement($element_data, $top_element['end'], true)) {
[555] Fix | Delete
switch ($element_data['id']) {
[556] Fix | Delete
[557] Fix | Delete
case EBML_ID_EBMLVERSION:
[558] Fix | Delete
case EBML_ID_EBMLREADVERSION:
[559] Fix | Delete
case EBML_ID_EBMLMAXIDLENGTH:
[560] Fix | Delete
case EBML_ID_EBMLMAXSIZELENGTH:
[561] Fix | Delete
case EBML_ID_DOCTYPEVERSION:
[562] Fix | Delete
case EBML_ID_DOCTYPEREADVERSION:
[563] Fix | Delete
$element_data['data'] = getid3_lib::BigEndian2Int($element_data['data']);
[564] Fix | Delete
break;
[565] Fix | Delete
[566] Fix | Delete
case EBML_ID_DOCTYPE:
[567] Fix | Delete
$element_data['data'] = getid3_lib::trimNullByte($element_data['data']);
[568] Fix | Delete
$info['matroska']['doctype'] = $element_data['data'];
[569] Fix | Delete
$info['fileformat'] = $element_data['data'];
[570] Fix | Delete
break;
[571] Fix | Delete
[572] Fix | Delete
default:
[573] Fix | Delete
$this->unhandledElement('header', __LINE__, $element_data);
[574] Fix | Delete
break;
[575] Fix | Delete
}
[576] Fix | Delete
[577] Fix | Delete
unset($element_data['offset'], $element_data['end']);
[578] Fix | Delete
$info['matroska']['header']['elements'][] = $element_data;
[579] Fix | Delete
}
[580] Fix | Delete
break;
[581] Fix | Delete
[582] Fix | Delete
case EBML_ID_SEGMENT:
[583] Fix | Delete
$info['matroska']['segment'][0]['offset'] = $top_element['offset'];
[584] Fix | Delete
$info['matroska']['segment'][0]['length'] = $top_element['length'];
[585] Fix | Delete
[586] Fix | Delete
while ($this->getEBMLelement($element_data, $top_element['end'])) {
[587] Fix | Delete
if ($element_data['id'] != EBML_ID_CLUSTER || !$this->hide_clusters) { // collect clusters only if required
[588] Fix | Delete
$info['matroska']['segments'][] = $element_data;
[589] Fix | Delete
}
[590] Fix | Delete
switch ($element_data['id']) {
[591] Fix | Delete
[592] Fix | Delete
case EBML_ID_SEEKHEAD: // Contains the position of other level 1 elements.
[593] Fix | Delete
[594] Fix | Delete
while ($this->getEBMLelement($seek_entry, $element_data['end'])) {
[595] Fix | Delete
switch ($seek_entry['id']) {
[596] Fix | Delete
[597] Fix | Delete
case EBML_ID_SEEK: // Contains a single seek entry to an EBML element
[598] Fix | Delete
while ($this->getEBMLelement($sub_seek_entry, $seek_entry['end'], true)) {
[599] Fix | Delete
[600] Fix | Delete
switch ($sub_seek_entry['id']) {
[601] Fix | Delete
[602] Fix | Delete
case EBML_ID_SEEKID:
[603] Fix | Delete
$seek_entry['target_id'] = self::EBML2Int($sub_seek_entry['data']);
[604] Fix | Delete
$seek_entry['target_name'] = self::EBMLidName($seek_entry['target_id']);
[605] Fix | Delete
break;
[606] Fix | Delete
[607] Fix | Delete
case EBML_ID_SEEKPOSITION:
[608] Fix | Delete
$seek_entry['target_offset'] = $element_data['offset'] + getid3_lib::BigEndian2Int($sub_seek_entry['data']);
[609] Fix | Delete
break;
[610] Fix | Delete
[611] Fix | Delete
default:
[612] Fix | Delete
$this->unhandledElement('seekhead.seek', __LINE__, $sub_seek_entry); }
[613] Fix | Delete
break;
[614] Fix | Delete
}
[615] Fix | Delete
if (!isset($seek_entry['target_id'])) {
[616] Fix | Delete
$this->warning('seek_entry[target_id] unexpectedly not set at '.$seek_entry['offset']);
[617] Fix | Delete
break;
[618] Fix | Delete
}
[619] Fix | Delete
if (($seek_entry['target_id'] != EBML_ID_CLUSTER) || !$this->hide_clusters) { // collect clusters only if required
[620] Fix | Delete
$info['matroska']['seek'][] = $seek_entry;
[621] Fix | Delete
}
[622] Fix | Delete
break;
[623] Fix | Delete
[624] Fix | Delete
default:
[625] Fix | Delete
$this->unhandledElement('seekhead', __LINE__, $seek_entry);
[626] Fix | Delete
break;
[627] Fix | Delete
}
[628] Fix | Delete
}
[629] Fix | Delete
break;
[630] Fix | Delete
[631] Fix | Delete
case EBML_ID_TRACKS: // A top-level block of information with many tracks described.
[632] Fix | Delete
$info['matroska']['tracks'] = $element_data;
[633] Fix | Delete
[634] Fix | Delete
while ($this->getEBMLelement($track_entry, $element_data['end'])) {
[635] Fix | Delete
switch ($track_entry['id']) {
[636] Fix | Delete
[637] Fix | Delete
case EBML_ID_TRACKENTRY: //subelements: Describes a track with all elements.
[638] Fix | Delete
[639] Fix | Delete
while ($this->getEBMLelement($subelement, $track_entry['end'], array(EBML_ID_VIDEO, EBML_ID_AUDIO, EBML_ID_CONTENTENCODINGS, EBML_ID_CODECPRIVATE))) {
[640] Fix | Delete
switch ($subelement['id']) {
[641] Fix | Delete
[642] Fix | Delete
case EBML_ID_TRACKUID:
[643] Fix | Delete
$track_entry[$subelement['id_name']] = getid3_lib::PrintHexBytes($subelement['data'], true, false);
[644] Fix | Delete
break;
[645] Fix | Delete
case EBML_ID_TRACKNUMBER:
[646] Fix | Delete
case EBML_ID_TRACKTYPE:
[647] Fix | Delete
case EBML_ID_MINCACHE:
[648] Fix | Delete
case EBML_ID_MAXCACHE:
[649] Fix | Delete
case EBML_ID_MAXBLOCKADDITIONID:
[650] Fix | Delete
case EBML_ID_DEFAULTDURATION: // nanoseconds per frame
[651] Fix | Delete
$track_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']);
[652] Fix | Delete
break;
[653] Fix | Delete
[654] Fix | Delete
case EBML_ID_TRACKTIMECODESCALE:
[655] Fix | Delete
$track_entry[$subelement['id_name']] = getid3_lib::BigEndian2Float($subelement['data']);
[656] Fix | Delete
break;
[657] Fix | Delete
[658] Fix | Delete
case EBML_ID_CODECID:
[659] Fix | Delete
case EBML_ID_LANGUAGE:
[660] Fix | Delete
case EBML_ID_NAME:
[661] Fix | Delete
case EBML_ID_CODECNAME:
[662] Fix | Delete
$track_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']);
[663] Fix | Delete
break;
[664] Fix | Delete
[665] Fix | Delete
case EBML_ID_CODECPRIVATE:
[666] Fix | Delete
$track_entry[$subelement['id_name']] = $this->readEBMLelementData($subelement['length'], true);
[667] Fix | Delete
break;
[668] Fix | Delete
[669] Fix | Delete
case EBML_ID_FLAGENABLED:
[670] Fix | Delete
case EBML_ID_FLAGDEFAULT:
[671] Fix | Delete
case EBML_ID_FLAGFORCED:
[672] Fix | Delete
case EBML_ID_FLAGLACING:
[673] Fix | Delete
case EBML_ID_CODECDECODEALL:
[674] Fix | Delete
$track_entry[$subelement['id_name']] = (bool) getid3_lib::BigEndian2Int($subelement['data']);
[675] Fix | Delete
break;
[676] Fix | Delete
[677] Fix | Delete
case EBML_ID_VIDEO:
[678] Fix | Delete
[679] Fix | Delete
while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) {
[680] Fix | Delete
switch ($sub_subelement['id']) {
[681] Fix | Delete
[682] Fix | Delete
case EBML_ID_PIXELWIDTH:
[683] Fix | Delete
case EBML_ID_PIXELHEIGHT:
[684] Fix | Delete
case EBML_ID_PIXELCROPBOTTOM:
[685] Fix | Delete
case EBML_ID_PIXELCROPTOP:
[686] Fix | Delete
case EBML_ID_PIXELCROPLEFT:
[687] Fix | Delete
case EBML_ID_PIXELCROPRIGHT:
[688] Fix | Delete
case EBML_ID_DISPLAYWIDTH:
[689] Fix | Delete
case EBML_ID_DISPLAYHEIGHT:
[690] Fix | Delete
case EBML_ID_DISPLAYUNIT:
[691] Fix | Delete
case EBML_ID_ASPECTRATIOTYPE:
[692] Fix | Delete
case EBML_ID_STEREOMODE:
[693] Fix | Delete
case EBML_ID_OLDSTEREOMODE:
[694] Fix | Delete
$track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
[695] Fix | Delete
break;
[696] Fix | Delete
[697] Fix | Delete
case EBML_ID_FLAGINTERLACED:
[698] Fix | Delete
$track_entry[$sub_subelement['id_name']] = (bool)getid3_lib::BigEndian2Int($sub_subelement['data']);
[699] Fix | Delete
break;
[700] Fix | Delete
[701] Fix | Delete
case EBML_ID_GAMMAVALUE:
[702] Fix | Delete
$track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Float($sub_subelement['data']);
[703] Fix | Delete
break;
[704] Fix | Delete
[705] Fix | Delete
case EBML_ID_COLOURSPACE:
[706] Fix | Delete
$track_entry[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']);
[707] Fix | Delete
break;
[708] Fix | Delete
[709] Fix | Delete
default:
[710] Fix | Delete
$this->unhandledElement('track.video', __LINE__, $sub_subelement);
[711] Fix | Delete
break;
[712] Fix | Delete
}
[713] Fix | Delete
}
[714] Fix | Delete
break;
[715] Fix | Delete
[716] Fix | Delete
case EBML_ID_AUDIO:
[717] Fix | Delete
[718] Fix | Delete
while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) {
[719] Fix | Delete
switch ($sub_subelement['id']) {
[720] Fix | Delete
[721] Fix | Delete
case EBML_ID_CHANNELS:
[722] Fix | Delete
case EBML_ID_BITDEPTH:
[723] Fix | Delete
$track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
[724] Fix | Delete
break;
[725] Fix | Delete
[726] Fix | Delete
case EBML_ID_SAMPLINGFREQUENCY:
[727] Fix | Delete
case EBML_ID_OUTPUTSAMPLINGFREQUENCY:
[728] Fix | Delete
$track_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Float($sub_subelement['data']);
[729] Fix | Delete
break;
[730] Fix | Delete
[731] Fix | Delete
case EBML_ID_CHANNELPOSITIONS:
[732] Fix | Delete
$track_entry[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']);
[733] Fix | Delete
break;
[734] Fix | Delete
[735] Fix | Delete
default:
[736] Fix | Delete
$this->unhandledElement('track.audio', __LINE__, $sub_subelement);
[737] Fix | Delete
break;
[738] Fix | Delete
}
[739] Fix | Delete
}
[740] Fix | Delete
break;
[741] Fix | Delete
[742] Fix | Delete
case EBML_ID_CONTENTENCODINGS:
[743] Fix | Delete
[744] Fix | Delete
while ($this->getEBMLelement($sub_subelement, $subelement['end'])) {
[745] Fix | Delete
switch ($sub_subelement['id']) {
[746] Fix | Delete
[747] Fix | Delete
case EBML_ID_CONTENTENCODING:
[748] Fix | Delete
[749] Fix | Delete
while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], array(EBML_ID_CONTENTCOMPRESSION, EBML_ID_CONTENTENCRYPTION))) {
[750] Fix | Delete
switch ($sub_sub_subelement['id']) {
[751] Fix | Delete
[752] Fix | Delete
case EBML_ID_CONTENTENCODINGORDER:
[753] Fix | Delete
case EBML_ID_CONTENTENCODINGSCOPE:
[754] Fix | Delete
case EBML_ID_CONTENTENCODINGTYPE:
[755] Fix | Delete
$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
[756] Fix | Delete
break;
[757] Fix | Delete
[758] Fix | Delete
case EBML_ID_CONTENTCOMPRESSION:
[759] Fix | Delete
[760] Fix | Delete
while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) {
[761] Fix | Delete
switch ($sub_sub_sub_subelement['id']) {
[762] Fix | Delete
[763] Fix | Delete
case EBML_ID_CONTENTCOMPALGO:
[764] Fix | Delete
$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_sub_subelement['data']);
[765] Fix | Delete
break;
[766] Fix | Delete
[767] Fix | Delete
case EBML_ID_CONTENTCOMPSETTINGS:
[768] Fix | Delete
$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = $sub_sub_sub_subelement['data'];
[769] Fix | Delete
break;
[770] Fix | Delete
[771] Fix | Delete
default:
[772] Fix | Delete
$this->unhandledElement('track.contentencodings.contentencoding.contentcompression', __LINE__, $sub_sub_sub_subelement);
[773] Fix | Delete
break;
[774] Fix | Delete
}
[775] Fix | Delete
}
[776] Fix | Delete
break;
[777] Fix | Delete
[778] Fix | Delete
case EBML_ID_CONTENTENCRYPTION:
[779] Fix | Delete
[780] Fix | Delete
while ($this->getEBMLelement($sub_sub_sub_subelement, $sub_sub_subelement['end'], true)) {
[781] Fix | Delete
switch ($sub_sub_sub_subelement['id']) {
[782] Fix | Delete
[783] Fix | Delete
case EBML_ID_CONTENTENCALGO:
[784] Fix | Delete
case EBML_ID_CONTENTSIGALGO:
[785] Fix | Delete
case EBML_ID_CONTENTSIGHASHALGO:
[786] Fix | Delete
$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_sub_subelement['data']);
[787] Fix | Delete
break;
[788] Fix | Delete
[789] Fix | Delete
case EBML_ID_CONTENTENCKEYID:
[790] Fix | Delete
case EBML_ID_CONTENTSIGNATURE:
[791] Fix | Delete
case EBML_ID_CONTENTSIGKEYID:
[792] Fix | Delete
$track_entry[$sub_subelement['id_name']][$sub_sub_subelement['id_name']][$sub_sub_sub_subelement['id_name']] = $sub_sub_sub_subelement['data'];
[793] Fix | Delete
break;
[794] Fix | Delete
[795] Fix | Delete
default:
[796] Fix | Delete
$this->unhandledElement('track.contentencodings.contentencoding.contentcompression', __LINE__, $sub_sub_sub_subelement);
[797] Fix | Delete
break;
[798] Fix | Delete
}
[799] Fix | Delete
}
[800] Fix | Delete
break;
[801] Fix | Delete
[802] Fix | Delete
default:
[803] Fix | Delete
$this->unhandledElement('track.contentencodings.contentencoding', __LINE__, $sub_sub_subelement);
[804] Fix | Delete
break;
[805] Fix | Delete
}
[806] Fix | Delete
}
[807] Fix | Delete
break;
[808] Fix | Delete
[809] Fix | Delete
default:
[810] Fix | Delete
$this->unhandledElement('track.contentencodings', __LINE__, $sub_subelement);
[811] Fix | Delete
break;
[812] Fix | Delete
}
[813] Fix | Delete
}
[814] Fix | Delete
break;
[815] Fix | Delete
[816] Fix | Delete
default:
[817] Fix | Delete
$this->unhandledElement('track', __LINE__, $subelement);
[818] Fix | Delete
break;
[819] Fix | Delete
}
[820] Fix | Delete
}
[821] Fix | Delete
[822] Fix | Delete
$info['matroska']['tracks']['tracks'][] = $track_entry;
[823] Fix | Delete
break;
[824] Fix | Delete
[825] Fix | Delete
default:
[826] Fix | Delete
$this->unhandledElement('tracks', __LINE__, $track_entry);
[827] Fix | Delete
break;
[828] Fix | Delete
}
[829] Fix | Delete
}
[830] Fix | Delete
break;
[831] Fix | Delete
[832] Fix | Delete
case EBML_ID_INFO: // Contains miscellaneous general information and statistics on the file.
[833] Fix | Delete
$info_entry = array();
[834] Fix | Delete
[835] Fix | Delete
while ($this->getEBMLelement($subelement, $element_data['end'], true)) {
[836] Fix | Delete
switch ($subelement['id']) {
[837] Fix | Delete
[838] Fix | Delete
case EBML_ID_TIMECODESCALE:
[839] Fix | Delete
$info_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']);
[840] Fix | Delete
break;
[841] Fix | Delete
[842] Fix | Delete
case EBML_ID_DURATION:
[843] Fix | Delete
$info_entry[$subelement['id_name']] = getid3_lib::BigEndian2Float($subelement['data']);
[844] Fix | Delete
break;
[845] Fix | Delete
[846] Fix | Delete
case EBML_ID_DATEUTC:
[847] Fix | Delete
$info_entry[$subelement['id_name']] = getid3_lib::BigEndian2Int($subelement['data']);
[848] Fix | Delete
$info_entry[$subelement['id_name'].'_unix'] = self::EBMLdate2unix($info_entry[$subelement['id_name']]);
[849] Fix | Delete
break;
[850] Fix | Delete
[851] Fix | Delete
case EBML_ID_SEGMENTUID:
[852] Fix | Delete
case EBML_ID_PREVUID:
[853] Fix | Delete
case EBML_ID_NEXTUID:
[854] Fix | Delete
$info_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']);
[855] Fix | Delete
break;
[856] Fix | Delete
[857] Fix | Delete
case EBML_ID_SEGMENTFAMILY:
[858] Fix | Delete
$info_entry[$subelement['id_name']][] = getid3_lib::trimNullByte($subelement['data']);
[859] Fix | Delete
break;
[860] Fix | Delete
[861] Fix | Delete
case EBML_ID_SEGMENTFILENAME:
[862] Fix | Delete
case EBML_ID_PREVFILENAME:
[863] Fix | Delete
case EBML_ID_NEXTFILENAME:
[864] Fix | Delete
case EBML_ID_TITLE:
[865] Fix | Delete
case EBML_ID_MUXINGAPP:
[866] Fix | Delete
case EBML_ID_WRITINGAPP:
[867] Fix | Delete
$info_entry[$subelement['id_name']] = getid3_lib::trimNullByte($subelement['data']);
[868] Fix | Delete
$info['matroska']['comments'][strtolower($subelement['id_name'])][] = $info_entry[$subelement['id_name']];
[869] Fix | Delete
break;
[870] Fix | Delete
[871] Fix | Delete
case EBML_ID_CHAPTERTRANSLATE:
[872] Fix | Delete
$chaptertranslate_entry = array();
[873] Fix | Delete
[874] Fix | Delete
while ($this->getEBMLelement($sub_subelement, $subelement['end'], true)) {
[875] Fix | Delete
switch ($sub_subelement['id']) {
[876] Fix | Delete
[877] Fix | Delete
case EBML_ID_CHAPTERTRANSLATEEDITIONUID:
[878] Fix | Delete
$chaptertranslate_entry[$sub_subelement['id_name']][] = getid3_lib::BigEndian2Int($sub_subelement['data']);
[879] Fix | Delete
break;
[880] Fix | Delete
[881] Fix | Delete
case EBML_ID_CHAPTERTRANSLATECODEC:
[882] Fix | Delete
$chaptertranslate_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
[883] Fix | Delete
break;
[884] Fix | Delete
[885] Fix | Delete
case EBML_ID_CHAPTERTRANSLATEID:
[886] Fix | Delete
$chaptertranslate_entry[$sub_subelement['id_name']] = getid3_lib::trimNullByte($sub_subelement['data']);
[887] Fix | Delete
break;
[888] Fix | Delete
[889] Fix | Delete
default:
[890] Fix | Delete
$this->unhandledElement('info.chaptertranslate', __LINE__, $sub_subelement);
[891] Fix | Delete
break;
[892] Fix | Delete
}
[893] Fix | Delete
}
[894] Fix | Delete
$info_entry[$subelement['id_name']] = $chaptertranslate_entry;
[895] Fix | Delete
break;
[896] Fix | Delete
[897] Fix | Delete
default:
[898] Fix | Delete
$this->unhandledElement('info', __LINE__, $subelement);
[899] Fix | Delete
break;
[900] Fix | Delete
}
[901] Fix | Delete
}
[902] Fix | Delete
$info['matroska']['info'][] = $info_entry;
[903] Fix | Delete
break;
[904] Fix | Delete
[905] Fix | Delete
case EBML_ID_CUES: // A top-level element to speed seeking access. All entries are local to the segment. Should be mandatory for non "live" streams.
[906] Fix | Delete
if ($this->hide_clusters) { // do not parse cues if hide clusters is "ON" till they point to clusters anyway
[907] Fix | Delete
$this->current_offset = $element_data['end'];
[908] Fix | Delete
break;
[909] Fix | Delete
}
[910] Fix | Delete
$cues_entry = array();
[911] Fix | Delete
[912] Fix | Delete
while ($this->getEBMLelement($subelement, $element_data['end'])) {
[913] Fix | Delete
switch ($subelement['id']) {
[914] Fix | Delete
[915] Fix | Delete
case EBML_ID_CUEPOINT:
[916] Fix | Delete
$cuepoint_entry = array();
[917] Fix | Delete
[918] Fix | Delete
while ($this->getEBMLelement($sub_subelement, $subelement['end'], array(EBML_ID_CUETRACKPOSITIONS))) {
[919] Fix | Delete
switch ($sub_subelement['id']) {
[920] Fix | Delete
[921] Fix | Delete
case EBML_ID_CUETRACKPOSITIONS:
[922] Fix | Delete
$cuetrackpositions_entry = array();
[923] Fix | Delete
[924] Fix | Delete
while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], true)) {
[925] Fix | Delete
switch ($sub_sub_subelement['id']) {
[926] Fix | Delete
[927] Fix | Delete
case EBML_ID_CUETRACK:
[928] Fix | Delete
case EBML_ID_CUECLUSTERPOSITION:
[929] Fix | Delete
case EBML_ID_CUEBLOCKNUMBER:
[930] Fix | Delete
case EBML_ID_CUECODECSTATE:
[931] Fix | Delete
$cuetrackpositions_entry[$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
[932] Fix | Delete
break;
[933] Fix | Delete
[934] Fix | Delete
default:
[935] Fix | Delete
$this->unhandledElement('cues.cuepoint.cuetrackpositions', __LINE__, $sub_sub_subelement);
[936] Fix | Delete
break;
[937] Fix | Delete
}
[938] Fix | Delete
}
[939] Fix | Delete
$cuepoint_entry[$sub_subelement['id_name']][] = $cuetrackpositions_entry;
[940] Fix | Delete
break;
[941] Fix | Delete
[942] Fix | Delete
case EBML_ID_CUETIME:
[943] Fix | Delete
$cuepoint_entry[$sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_subelement['data']);
[944] Fix | Delete
break;
[945] Fix | Delete
[946] Fix | Delete
default:
[947] Fix | Delete
$this->unhandledElement('cues.cuepoint', __LINE__, $sub_subelement);
[948] Fix | Delete
break;
[949] Fix | Delete
}
[950] Fix | Delete
}
[951] Fix | Delete
$cues_entry[] = $cuepoint_entry;
[952] Fix | Delete
break;
[953] Fix | Delete
[954] Fix | Delete
default:
[955] Fix | Delete
$this->unhandledElement('cues', __LINE__, $subelement);
[956] Fix | Delete
break;
[957] Fix | Delete
}
[958] Fix | Delete
}
[959] Fix | Delete
$info['matroska']['cues'] = $cues_entry;
[960] Fix | Delete
break;
[961] Fix | Delete
[962] Fix | Delete
case EBML_ID_TAGS: // Element containing elements specific to Tracks/Chapters.
[963] Fix | Delete
$tags_entry = array();
[964] Fix | Delete
[965] Fix | Delete
while ($this->getEBMLelement($subelement, $element_data['end'], false)) {
[966] Fix | Delete
switch ($subelement['id']) {
[967] Fix | Delete
[968] Fix | Delete
case EBML_ID_TAG:
[969] Fix | Delete
$tag_entry = array();
[970] Fix | Delete
[971] Fix | Delete
while ($this->getEBMLelement($sub_subelement, $subelement['end'], false)) {
[972] Fix | Delete
switch ($sub_subelement['id']) {
[973] Fix | Delete
[974] Fix | Delete
case EBML_ID_TARGETS:
[975] Fix | Delete
$targets_entry = array();
[976] Fix | Delete
[977] Fix | Delete
while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], true)) {
[978] Fix | Delete
switch ($sub_sub_subelement['id']) {
[979] Fix | Delete
[980] Fix | Delete
case EBML_ID_TARGETTYPEVALUE:
[981] Fix | Delete
$targets_entry[$sub_sub_subelement['id_name']] = getid3_lib::BigEndian2Int($sub_sub_subelement['data']);
[982] Fix | Delete
$targets_entry[strtolower($sub_sub_subelement['id_name']).'_long'] = self::TargetTypeValue($targets_entry[$sub_sub_subelement['id_name']]);
[983] Fix | Delete
break;
[984] Fix | Delete
[985] Fix | Delete
case EBML_ID_TARGETTYPE:
[986] Fix | Delete
$targets_entry[$sub_sub_subelement['id_name']] = $sub_sub_subelement['data'];
[987] Fix | Delete
break;
[988] Fix | Delete
[989] Fix | Delete
case EBML_ID_TAGTRACKUID:
[990] Fix | Delete
case EBML_ID_TAGEDITIONUID:
[991] Fix | Delete
case EBML_ID_TAGCHAPTERUID:
[992] Fix | Delete
case EBML_ID_TAGATTACHMENTUID:
[993] Fix | Delete
$targets_entry[$sub_sub_subelement['id_name']][] = getid3_lib::PrintHexBytes($sub_sub_subelement['data'], true, false);
[994] Fix | Delete
break;
[995] Fix | Delete
[996] Fix | Delete
default:
[997] Fix | Delete
$this->unhandledElement('tags.tag.targets', __LINE__, $sub_sub_subelement);
[998] Fix | Delete
break;
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function