$info['dss']['playtime_sec']=intval((substr($DSSheader,62,2)*3600)+(substr($DSSheader,64,2)*60)+substr($DSSheader,66,2));// approximate file playtime in HHMMSS
if($info['dss']['version']<=3){
$info['dss']['playtime_ms']=getid3_lib::LittleEndian2Int(substr($DSSheader,512,4));// exact file playtime in milliseconds. Has also been observed at offset 530 in one sample file, with something else (unknown) at offset 512
$info['dss']['sample_rate_index']=ord(substr($DSSheader,1538,1));// this isn't certain, this may or may not be where the sample rate info is stored, but it seems consistent on my small selection of sample files
$this->getid3->warning('DSS above version 3 not fully supported in this version of getID3. Any additional documentation or format specifications would be welcome. This file is version '.$info['dss']['version']);
$info['audio']['bits_per_sample']=16;// maybe, maybe not -- most compressed audio formats don't have a fixed bits-per-sample value, but this is a reasonable approximation
if(!empty($info['dss']['playtime_ms'])&&(floor($info['dss']['playtime_ms']/1000)==$info['dss']['playtime_sec'])){// *should* just be playtime_ms / 1000 but at least one sample file has playtime_ms at offset 530 instead of offset 512, so safety check
$this->getid3->warning('playtime_ms ('.number_format($info['dss']['playtime_ms']/1000,3).') does not match playtime_sec ('.number_format($info['dss']['playtime_sec']).') - using playtime_sec value');