schorsch, Maniac: Nur eine Idee: Könnte man den DTS Stream nicht ähnlich wie bei einer Full featured in einen PCM Stream packen, so in der Art:
void cAudioEncapsulatorDTS::StartIECFrame(const uchar *buf, int length, uchar PTSflags, const uchar *PTSdata)
{
if (firstBurst) {
SendIECpause(1);
if (++firstBurst > 10) firstBurst = 0;
}
else {
uchar ac5_type = ((buf[4] & 0x01) << 6) | ((buf[5] >>2) & 0x3F);
uchar ac5_spdif_type;
switch(ac5_type) {
case 0x0F:
ac5_spdif_type = 0x0B; /* DTS */
break;
case 0x1F:
ac5_spdif_type = 0x0C; /* DTS */
break;
case 0x3F:
ac5_spdif_type = 0x0D; /* DTS */
break;
default:
ac5_spdif_type = 0x00; /* DTS */
esyslog("DTS: SPDIF type not detected: ac5 type = %X!\n", ac5_type);
break;
}
if (length > DTS_SIZE-IEC_HDR_SIZE) {
DEBUG("DTS: length too long %d\n",length);
return;
}
StartFrame(DTS_SIZE,PTSflags,PTSdata);
fillup = DTS_SIZE-IEC_HDR_SIZE-length;
// prepare IEC 60958 data frame
uchar burst[IEC_HDR_SIZE];
burst[0] = 0xF8;
burst[1] = 0x72;
burst[2] = 0x4E;
burst[3] = 0x1F;
burst[4] = 0x00;
burst[5] = ac5_spdif_type; /* DTS data */
burst[6] = ((length * >> 8 ) & 0xFF; /* ac5_length * 8 */
burst[7] = (length * & 0xFF;
PutData(burst,sizeof(burst));
}
}
und den Rest dem Receiver überlassen?
Gruß,
beta