getID3() by James Heinrich info@.nosp@m.geti.nosp@m.d3.or.nosp@m.g //
More...
|
const | syncword = "\x7F\xFE\x80\x01" |
| Default DTS syncword used in native .cpt or .dts formats. More...
|
|
◆ Analyze()
Definition at line 39 of file module.audio.dts.php.
References $info, $sync, getid3_lib\BigEndian2Bin(), getid3_handler\error(), getid3_handler\fread(), getid3_handler\fseek(), getid3_handler\isDependencyFor(), getid3_lib\PrintHexBytes(), and readBinData().
40 $info = &$this->getid3->info;
41 $info[
'fileformat'] =
'dts';
44 $DTSheader = $this->
fread(20);
47 $sync = substr($DTSheader, 0, 4);
48 if (($encoding = array_search(
$sync, self::$syncwords)) !==
false) {
51 $this->readBinDataOffset = 32;
57 $this->readBinDataOffset = 0;
61 unset(
$info[
'fileformat']);
68 for ($word_offset = 0; $word_offset <= strlen($DTSheader); $word_offset += 2) {
93 $info[
'dts'][
'flags'][
'embedded_downmix'] = (bool) $this->
readBinData($fhBS, 1);
99 $info[
'dts'][
'flags'][
'extended_coding'] = (bool) $this->
readBinData($fhBS, 1);
100 $info[
'dts'][
'flags'][
'audio_sync_insertion'] = (bool) $this->
readBinData($fhBS, 1);
102 $info[
'dts'][
'flags'][
'predictor_history'] = (bool) $this->
readBinData($fhBS, 1);
103 if (
$info[
'dts'][
'flags'][
'crc_present']) {
106 $info[
'dts'][
'flags'][
'mri_perfect_reconst'] = (bool) $this->
readBinData($fhBS, 1);
111 $info[
'dts'][
'flags'][
'front_sum_diff'] = (bool) $this->
readBinData($fhBS, 1);
112 $info[
'dts'][
'flags'][
'surround_sum_diff'] = (bool) $this->
readBinData($fhBS, 1);
116 $info[
'dts'][
'bitrate'] = self::bitrateLookup(
$info[
'dts'][
'raw'][
'bitrate']);
117 $info[
'dts'][
'bits_per_sample'] = self::bitPerSampleLookup(
$info[
'dts'][
'raw'][
'bits_per_sample']);
118 $info[
'dts'][
'sample_rate'] = self::sampleRateLookup(
$info[
'dts'][
'raw'][
'sample_frequency']);
119 $info[
'dts'][
'dialog_normalization'] = self::dialogNormalization(
$info[
'dts'][
'raw'][
'dialog_normalization'],
$info[
'dts'][
'raw'][
'encoder_soft_version']);
120 $info[
'dts'][
'flags'][
'lossless'] = ((
$info[
'dts'][
'raw'][
'bitrate'] == 31) ?
true :
false);
121 $info[
'dts'][
'bitrate_mode'] = ((
$info[
'dts'][
'raw'][
'bitrate'] == 30) ?
'vbr' :
'cbr');
122 $info[
'dts'][
'channels'] = self::numChannelsLookup(
$info[
'dts'][
'raw'][
'channel_arrangement']);
123 $info[
'dts'][
'channel_arrangement'] = self::channelArrangementLookup(
$info[
'dts'][
'raw'][
'channel_arrangement']);
125 $info[
'audio'][
'dataformat'] =
'dts';
126 $info[
'audio'][
'lossless'] =
$info[
'dts'][
'flags'][
'lossless'];
127 $info[
'audio'][
'bitrate_mode'] =
$info[
'dts'][
'bitrate_mode'];
128 $info[
'audio'][
'bits_per_sample'] =
$info[
'dts'][
'bits_per_sample'];
129 $info[
'audio'][
'sample_rate'] =
$info[
'dts'][
'sample_rate'];
130 $info[
'audio'][
'channels'] =
$info[
'dts'][
'channels'];
131 $info[
'audio'][
'bitrate'] =
$info[
'dts'][
'bitrate'];
132 if (isset(
$info[
'avdataend']) && !empty(
$info[
'dts'][
'bitrate']) && is_numeric(
$info[
'dts'][
'bitrate'])) {
133 $info[
'playtime_seconds'] = (
$info[
'avdataend'] -
$info[
'avdataoffset']) / (
$info[
'dts'][
'bitrate'] / 8);
134 if (($encoding == 2) || ($encoding == 3)) {
136 $info[
'playtime_seconds'] *= (14 / 16);
readBinData($bin, $length)
static BigEndian2Bin($byteword)
static PrintHexBytes($string, $hex=true, $spaces=true, $htmlencoding='UTF-8')
fseek($bytes, $whence=SEEK_SET)
◆ bitPerSampleLookup()
static getid3_dts::bitPerSampleLookup |
( |
|
$index | ) |
|
|
static |
◆ bitrateLookup()
static getid3_dts::bitrateLookup |
( |
|
$index | ) |
|
|
static |
◆ channelArrangementLookup()
static getid3_dts::channelArrangementLookup |
( |
|
$index | ) |
|
|
static |
Definition at line 257 of file module.audio.dts.php.
References $index.
258 static $lookup = array(
260 1 =>
'A + B (dual mono)',
261 2 =>
'L + R (stereo)',
262 3 =>
'(L+R) + (L-R) (sum-difference)',
263 4 =>
'LT + RT (left and right total)',
266 7 =>
'C + L + R + S',
267 8 =>
'L + R + SL + SR',
268 9 =>
'C + L + R + SL + SR',
269 10 =>
'CL + CR + L + R + SL + SR',
270 11 =>
'C + L + R+ LR + RR + OV',
271 12 =>
'CF + CR + LF + RF + LR + RR',
272 13 =>
'CL + C + CR + L + R + SL + SR',
273 14 =>
'CL + CR + L + R + SL1 + SL2 + SR1 + SR2',
274 15 =>
'CL + C+ CR + L + R + SL + S + SR',
276 return (isset($lookup[
$index]) ? $lookup[$index] :
'user-defined');
◆ dialogNormalization()
static getid3_dts::dialogNormalization |
( |
|
$index, |
|
|
|
$version |
|
) |
| |
|
static |
◆ numChannelsLookup()
static getid3_dts::numChannelsLookup |
( |
|
$index | ) |
|
|
static |
◆ readBinData()
getid3_dts::readBinData |
( |
|
$bin, |
|
|
|
$length |
|
) |
| |
|
private |
◆ sampleRateLookup()
static getid3_dts::sampleRateLookup |
( |
|
$index | ) |
|
|
static |
◆ $readBinDataOffset
getid3_dts::$readBinDataOffset = 0 |
|
private |
◆ $syncwords
Initial value:= array(
0 => "\x7F\xFE\x80\x01",
1 => "\xFE\x7F\x01\x80",
2 => "\x1F\xFF\xE8\x00",
3 => "\xFF\x1F\x00\xE8")
Possible syncwords indicating bitstream encoding.
Definition at line 33 of file module.audio.dts.php.
Referenced by getid3_riff\ParseRIFF().
◆ syncword
const getid3_dts::syncword = "\x7F\xFE\x80\x01" |
The documentation for this class was generated from the following file: