HSCI Dateien IDX IFO ADD
Verfasst: Mo 5. Mai 2008, 16:08
Ich schreibe mir ein Programm mit dem ich die
".IDX, .IFO, .ADD" Dateien erstellen kann um meine
Video- Dateien auf den Topfield abzuspielen. Das
Projekt ist zum scheitern verurteilt wenn Topfield
keine Informationen über das Datei- Format
veröfentlicht !
Ich habe mir die Dateien mit einen Hex- Editor angesehen
um die Daten zu entschlüsseln. Eine PDF- Datei aus dem
Internet zeigt Informationen zum Topfield 5000-5800.
Wenn die Besitzer vom Topfield 7700-HSCI keine Daten
veröffentlichen, Dann können keine Programme programmiert
werden, die den Bedürfnissen der Besitzer entsprechen !
( Dateiname ändern, Werbung, Start u. Ende, u.s.w ... )
Auf Programme wie ProjectX, oder DVBCutt könnt
ihr lange warten. Die Projekte sind so gut wie Tot ! ?
Seht mal im SourceForge.net die Teilnehmer Zahlen !
Mein C++ Programm ist noch eine Baustelle - Beta- Test.
#####################################################
Topfield 7700 HSCI -- IDX --
In der Datei ist eine Sprung- Tabelle zum
auf und ab Spielen der Video- Dateien im Sekunden
Takt oder zum Springen an einer Position ?
Wird genutzt für Play- Zeit- Berechnung und zum
Synchronisieren der Start- und End- Position ?
32-Bit ( unsigned int, long, dword ) =
Playtime in Millisekunden. Addiert = 100-Ms o.99-Ms
16-Bit ( unsigned short, wchar, word ) =
Megabyte- Zähler = Mbz; if ( PakPos*188 >= 1048576 * Mbz+1 ) Mbz++;
16-Bit ( unsigned short, wchar, word ) =
Datei- Schnitt- Punkt = Dsp; if (Mbz == 1504) Dsp++; Mbz = 0;
64-Bit ( unsigned long long, int_64 ) =
Alle 100-Ms - Datei- Position / 188 Byte ( TS-Packs).
Die Topfield Hardware markiert inerhalb von 100-Ms ein
TS- Packet ohne eine bestimmte PID zu beachten ! Mit
Software berechnete Zeiteinteilung über PCR - PTS und DTS
kann man nicht die Position in der Datei bestimmen !
Die Hardware markiert nicht 100-Ms Playtime sondern schwankt
zwischen +20 bis -220 TS-Pakete um etwas zu korrigieren ? !
Ist eine Empfangs- Puffer- Position in Topfield Zeit ?
Kann berechnet werden .REC-Size / 188 / PlayTime-100-ms ?
Testdatei 127-Min * 600 = 76200 in der IDX = 76204 !
Der Mega- Byte- Zähler kann auch berechnet werden !
Wofür brauch der Topfield 7700-HSCI diese Datei ? ? ?
Das Update für Topfield 7700 HSCI v 7.00.72 PVR
enthält ein Bug in der IDX Datei ! Der Schnittpunkt
in der Daten- Liste wird falsch berechnet ( 1505 Mb ).
Der Megabyte Zähler ist 1 Mb zu groß ( == 1505 ) !
Das Update 7700 HSCI v 7.00.82 PVR korrigiert den Fehler.
Aus diesem Grund können alte Aufnahmen nicht gespielt werden.
#####################################################
Topfield 7700 HSCI -- IFO --
Im TS-Stream ( rec ) ist keine PAT enthalten !
( PAT Program Association Table TS- Program )
Diese Datei ist ein Ersatz für die PAT !
Größe : 4,23 KB (4.340 Bytes).
Pos. :
0x00 : 32-Bit = Anzahl der TabellenNr.u.PID's ( Max 25 )
0x04 : 32-Bit = Tabellen- Nummer ( für Video, Audio, TLX ... )
0x08 : 32-Bit = PID im TS- Stream ( 0x01ff, 0x0200, 0x0021 ... )
....
// TABLLE : ( Stream type assignments )
//...........: ( -> markiert meine Test-Datei )
//0x00000000 : ITU-T ISO Reserved
//0x00000001 : MPEG 1 Video (ISO-11172 Video)
//0x00000002 : -> MPEG 2 Video (H.262 ISO-13818-2 ISO-11172-2)
//0x00000003 : audio (ISO-11172 Audio)
//0x00000004 : audio (ISO- 13818-3 Audio)
//0x00000005 : -> audio (H.222.0 ISO-13818-1 private sections)
//0x00000006 : (H.222.0 ISO-13818-1 PES private data)?
//0x00000007 : -> TLX ( Video Text )(ISO-13522 MHEG)?
//0x00000008 : (H.222.0 ISO-13818-1 Annex A DSM-CC)?
//0x00000009 : ->PCR ( Program Clock Referenz )(H.222.1)?
//0x0000000A : ->AC 3 Audio (ISO-13818-6 type A)?
//0x0000000B : (ISO-13818-6 type B)?
//0x0000000C : (ISO-13818-6 type C)?
//0x0000000D : (ISO-13818-6 type D)?
//0x0000000E : (H.222.0 ISO-13818-1 auxiliary)?
//0x0000000F : (ISO-13818-7 Audio with ADTS tr.syntax)?
//0x00000010 : (ISO-14496-2 Visual)?
//0x00000011 : (ISO-14496-3 Audio LATM tr.syntax ISO-14496-3 / AMD 1)?
//0x00000012 : (ISO-14496-1 SL-packetized , FlexMux PES packets)?
//0x00000013 : (ISO-14496-1 SL-packetized , FlexMux ISO-14496 sections)?
//0x00000014 : (ISO-13818-6 Synchronized Download Protocol)?
//------------
//0x00000015 : ->PMT ( Program Map Tabelle, TVCT, EPG )
//............
//( ab 0x15 bis 0x7F : H.222.0 ISO-13818-1 Reserved )
//( ab 0x80 bis 0xFF : User Private Stream )
//( Die Tabelle ist nur ein Test und kann sich ändern )
Pos.:0x00D4 : es folgt ein 32-Bit-Zähler ( anzahl einträge )
gefolgt von 32-Bit Position oder 0xFFFFFFFF in Anzahl Zähler.
Danach werden Strings in der Datei geschpeichert mit der
Beschreibung des Fehlers oder "Unknow". Es folgen eine
Menge Nullen bis zum Ende der Datei für weitere Fehler ? !
#####################################################
Topfield 7700 HSCI -- ADD --
Größe : 2,57 KB (2.636 Bytes).
Pos.0x0000 : 16-Bit short Start-Zeit MJD
Pos.0x0002 : 08-Bit byte Start-Zeit Hour
Pos.0x0003 : 08-Bit byte Start-Zeit Minutes
Pos.0x0004 : 08-Bit byte Start-Zeit Secounds
Es folgen Nullen bis Pos.0x02E9
Pos.0x02EA : Jetzt kommt der Datei-
Pfad- Name: (/mount/Film/Horror/Killer.add). Die Länge
vom Namen ist bei Windows von einer DOS-Variablen
abhängig ( MAXPATH ). Topfields alte HD-PVR unterstützt
eine Dateinamen Länge von 96-Bytes. Ich vermute das hier
bis zu 294- Bytes für den USB- HD- Dateinamen reserviert
werden ? ( Speicher enthält Zufalls Zahlen und Werte )
Die Hardware öffnet die ADD Datei um den ADD- Datei-
Namen zu lesen ? ! Das ist wirklich ein Toller einfall !
Pos.0x0410 : Speicher ( 0 ) für 48 Bookmarks 32-Bit ?
Pos.0x04D0 : Topfield Header Infos :
Strings beginnen mit 0x05, endet nicht immer mit 0 !
typedef struct
{
char MagicNumber [6]; //(0x05,"TFrc",0)
word Version; //0x5000, 0x5010
byte reserved1 [2];
word RecDuration; //in minutes
word ServiceNr;
word ServiceType; //0=TV, 1=Radio
} tRECHeader;
typedef struct //DVB-s only
{
byte SatIndex; //PAT Prog.Num.?
byte reserved1;
word TPIdx:10;
word TunerNum:2;
word DelFlag:1;
word CASFlag:1;
word LockFlag:1;
word SkipFlag:1;
word ServiceID; // PAT S-ID
word PMTPID;
word PCRPID;
word VideoPID;
word AudioPID; // & Flag AC-3
char ServiceName [ ? ]; //(0x05,"Name")
} tRECServiceInfo5000;
typedef struct
{
byte SatIndex; //PAT Prog.Num.?
byte Polarization:1;
byte Mode:3; //0=Normal, 1=SmaTV
byte reserved1:4;
byte reserved2 [2];
dword Frequency; //in MHz
word SymbolRate; //in Khz
word TSID;
byte reserved3 [2];
word NetworkID;
} tRECTPInfoSat;
typedef struct
{
byte SatIndex; //PAT Prog.Num.?
byte reserved1;
word SeviceDuration; // Min.
dword EventID; // EPG
byte StartTimeMin;
byte StartTimeHour;
word StartTimeMJD;
byte EndTimeMin;
byte EndTimeHour;
word EndTimeMJD;
byte reserved2;
byte TextLength; // EventName
byte ParentalRate;
} tRECEventInfo;
char EventName [TextLength]; (0x05,"Dateiname")
char EventDescription [ ? ];
EPG Description [ ? ];
END;
#####################################################
Fazit:
IDX - Ist Programmiertechnischer Schwachsinn.
IFO - Warum eine Standart PAT wenn man eine IFO haben Kann.
ADD - Ohne Software unbrauchbar ! Alle Infos sind im TS -.REC.
Die Topfield Hardware brauch keine IDX-IFO-ADD- Datei um die
TS- Datei von der USB- HD abzuspielen. Die Daten werden nur
zur Fehler- Kontrolle der Beta- Software gespeichert um die
Programmierten Fehler mit PC- Software zu finden. Software
die Topfield den Kunden vorbehält dammit der Kunde dumm bleibt.
Solange das ein Beta-Test ist Programmiere ich mein Programm nicht !
".IDX, .IFO, .ADD" Dateien erstellen kann um meine
Video- Dateien auf den Topfield abzuspielen. Das
Projekt ist zum scheitern verurteilt wenn Topfield
keine Informationen über das Datei- Format
veröfentlicht !
Ich habe mir die Dateien mit einen Hex- Editor angesehen
um die Daten zu entschlüsseln. Eine PDF- Datei aus dem
Internet zeigt Informationen zum Topfield 5000-5800.
Wenn die Besitzer vom Topfield 7700-HSCI keine Daten
veröffentlichen, Dann können keine Programme programmiert
werden, die den Bedürfnissen der Besitzer entsprechen !
( Dateiname ändern, Werbung, Start u. Ende, u.s.w ... )
Auf Programme wie ProjectX, oder DVBCutt könnt
ihr lange warten. Die Projekte sind so gut wie Tot ! ?
Seht mal im SourceForge.net die Teilnehmer Zahlen !
Mein C++ Programm ist noch eine Baustelle - Beta- Test.
#####################################################
Topfield 7700 HSCI -- IDX --
In der Datei ist eine Sprung- Tabelle zum
auf und ab Spielen der Video- Dateien im Sekunden
Takt oder zum Springen an einer Position ?
Wird genutzt für Play- Zeit- Berechnung und zum
Synchronisieren der Start- und End- Position ?
32-Bit ( unsigned int, long, dword ) =
Playtime in Millisekunden. Addiert = 100-Ms o.99-Ms
16-Bit ( unsigned short, wchar, word ) =
Megabyte- Zähler = Mbz; if ( PakPos*188 >= 1048576 * Mbz+1 ) Mbz++;
16-Bit ( unsigned short, wchar, word ) =
Datei- Schnitt- Punkt = Dsp; if (Mbz == 1504) Dsp++; Mbz = 0;
64-Bit ( unsigned long long, int_64 ) =
Alle 100-Ms - Datei- Position / 188 Byte ( TS-Packs).
Die Topfield Hardware markiert inerhalb von 100-Ms ein
TS- Packet ohne eine bestimmte PID zu beachten ! Mit
Software berechnete Zeiteinteilung über PCR - PTS und DTS
kann man nicht die Position in der Datei bestimmen !
Die Hardware markiert nicht 100-Ms Playtime sondern schwankt
zwischen +20 bis -220 TS-Pakete um etwas zu korrigieren ? !
Ist eine Empfangs- Puffer- Position in Topfield Zeit ?
Kann berechnet werden .REC-Size / 188 / PlayTime-100-ms ?
Testdatei 127-Min * 600 = 76200 in der IDX = 76204 !
Der Mega- Byte- Zähler kann auch berechnet werden !
Wofür brauch der Topfield 7700-HSCI diese Datei ? ? ?
Das Update für Topfield 7700 HSCI v 7.00.72 PVR
enthält ein Bug in der IDX Datei ! Der Schnittpunkt
in der Daten- Liste wird falsch berechnet ( 1505 Mb ).
Der Megabyte Zähler ist 1 Mb zu groß ( == 1505 ) !
Das Update 7700 HSCI v 7.00.82 PVR korrigiert den Fehler.
Aus diesem Grund können alte Aufnahmen nicht gespielt werden.
#####################################################
Topfield 7700 HSCI -- IFO --
Im TS-Stream ( rec ) ist keine PAT enthalten !
( PAT Program Association Table TS- Program )
Diese Datei ist ein Ersatz für die PAT !
Größe : 4,23 KB (4.340 Bytes).
Pos. :
0x00 : 32-Bit = Anzahl der TabellenNr.u.PID's ( Max 25 )
0x04 : 32-Bit = Tabellen- Nummer ( für Video, Audio, TLX ... )
0x08 : 32-Bit = PID im TS- Stream ( 0x01ff, 0x0200, 0x0021 ... )
....
// TABLLE : ( Stream type assignments )
//...........: ( -> markiert meine Test-Datei )
//0x00000000 : ITU-T ISO Reserved
//0x00000001 : MPEG 1 Video (ISO-11172 Video)
//0x00000002 : -> MPEG 2 Video (H.262 ISO-13818-2 ISO-11172-2)
//0x00000003 : audio (ISO-11172 Audio)
//0x00000004 : audio (ISO- 13818-3 Audio)
//0x00000005 : -> audio (H.222.0 ISO-13818-1 private sections)
//0x00000006 : (H.222.0 ISO-13818-1 PES private data)?
//0x00000007 : -> TLX ( Video Text )(ISO-13522 MHEG)?
//0x00000008 : (H.222.0 ISO-13818-1 Annex A DSM-CC)?
//0x00000009 : ->PCR ( Program Clock Referenz )(H.222.1)?
//0x0000000A : ->AC 3 Audio (ISO-13818-6 type A)?
//0x0000000B : (ISO-13818-6 type B)?
//0x0000000C : (ISO-13818-6 type C)?
//0x0000000D : (ISO-13818-6 type D)?
//0x0000000E : (H.222.0 ISO-13818-1 auxiliary)?
//0x0000000F : (ISO-13818-7 Audio with ADTS tr.syntax)?
//0x00000010 : (ISO-14496-2 Visual)?
//0x00000011 : (ISO-14496-3 Audio LATM tr.syntax ISO-14496-3 / AMD 1)?
//0x00000012 : (ISO-14496-1 SL-packetized , FlexMux PES packets)?
//0x00000013 : (ISO-14496-1 SL-packetized , FlexMux ISO-14496 sections)?
//0x00000014 : (ISO-13818-6 Synchronized Download Protocol)?
//------------
//0x00000015 : ->PMT ( Program Map Tabelle, TVCT, EPG )
//............
//( ab 0x15 bis 0x7F : H.222.0 ISO-13818-1 Reserved )
//( ab 0x80 bis 0xFF : User Private Stream )
//( Die Tabelle ist nur ein Test und kann sich ändern )
Pos.:0x00D4 : es folgt ein 32-Bit-Zähler ( anzahl einträge )
gefolgt von 32-Bit Position oder 0xFFFFFFFF in Anzahl Zähler.
Danach werden Strings in der Datei geschpeichert mit der
Beschreibung des Fehlers oder "Unknow". Es folgen eine
Menge Nullen bis zum Ende der Datei für weitere Fehler ? !
#####################################################
Topfield 7700 HSCI -- ADD --
Größe : 2,57 KB (2.636 Bytes).
Pos.0x0000 : 16-Bit short Start-Zeit MJD
Pos.0x0002 : 08-Bit byte Start-Zeit Hour
Pos.0x0003 : 08-Bit byte Start-Zeit Minutes
Pos.0x0004 : 08-Bit byte Start-Zeit Secounds
Es folgen Nullen bis Pos.0x02E9
Pos.0x02EA : Jetzt kommt der Datei-
Pfad- Name: (/mount/Film/Horror/Killer.add). Die Länge
vom Namen ist bei Windows von einer DOS-Variablen
abhängig ( MAXPATH ). Topfields alte HD-PVR unterstützt
eine Dateinamen Länge von 96-Bytes. Ich vermute das hier
bis zu 294- Bytes für den USB- HD- Dateinamen reserviert
werden ? ( Speicher enthält Zufalls Zahlen und Werte )
Die Hardware öffnet die ADD Datei um den ADD- Datei-
Namen zu lesen ? ! Das ist wirklich ein Toller einfall !
Pos.0x0410 : Speicher ( 0 ) für 48 Bookmarks 32-Bit ?
Pos.0x04D0 : Topfield Header Infos :
Strings beginnen mit 0x05, endet nicht immer mit 0 !
typedef struct
{
char MagicNumber [6]; //(0x05,"TFrc",0)
word Version; //0x5000, 0x5010
byte reserved1 [2];
word RecDuration; //in minutes
word ServiceNr;
word ServiceType; //0=TV, 1=Radio
} tRECHeader;
typedef struct //DVB-s only
{
byte SatIndex; //PAT Prog.Num.?
byte reserved1;
word TPIdx:10;
word TunerNum:2;
word DelFlag:1;
word CASFlag:1;
word LockFlag:1;
word SkipFlag:1;
word ServiceID; // PAT S-ID
word PMTPID;
word PCRPID;
word VideoPID;
word AudioPID; // & Flag AC-3
char ServiceName [ ? ]; //(0x05,"Name")
} tRECServiceInfo5000;
typedef struct
{
byte SatIndex; //PAT Prog.Num.?
byte Polarization:1;
byte Mode:3; //0=Normal, 1=SmaTV
byte reserved1:4;
byte reserved2 [2];
dword Frequency; //in MHz
word SymbolRate; //in Khz
word TSID;
byte reserved3 [2];
word NetworkID;
} tRECTPInfoSat;
typedef struct
{
byte SatIndex; //PAT Prog.Num.?
byte reserved1;
word SeviceDuration; // Min.
dword EventID; // EPG
byte StartTimeMin;
byte StartTimeHour;
word StartTimeMJD;
byte EndTimeMin;
byte EndTimeHour;
word EndTimeMJD;
byte reserved2;
byte TextLength; // EventName
byte ParentalRate;
} tRECEventInfo;
char EventName [TextLength]; (0x05,"Dateiname")
char EventDescription [ ? ];
EPG Description [ ? ];
END;
#####################################################
Fazit:
IDX - Ist Programmiertechnischer Schwachsinn.
IFO - Warum eine Standart PAT wenn man eine IFO haben Kann.
ADD - Ohne Software unbrauchbar ! Alle Infos sind im TS -.REC.
Die Topfield Hardware brauch keine IDX-IFO-ADD- Datei um die
TS- Datei von der USB- HD abzuspielen. Die Daten werden nur
zur Fehler- Kontrolle der Beta- Software gespeichert um die
Programmierten Fehler mit PC- Software zu finden. Software
die Topfield den Kunden vorbehält dammit der Kunde dumm bleibt.
Solange das ein Beta-Test ist Programmiere ich mein Programm nicht !