Index
Wirbel (Diskussion | Beiträge) (→Probleme) |
Wirbel (Diskussion | Beiträge) |
||
Zeile 5: | Zeile 5: | ||
struct tIndex | struct tIndex | ||
− | { int offset; //(signed 32bit/4byte) Speicherposition des Frame, relativ zum Dateianfang der jeweiligen Datei | + | { int offset; //(signed 32bit/4byte) Speicherposition des Frame, relativ zum Dateianfang der jeweiligen Datei, verweist auf PES header |
− | uchar type; //(8bit/1byte) Type des Frames (I, P, B) nur an I-Frames kann geschnitten oder können beim Spulen ansprungen werden. | + | uchar type; //(8bit/1byte) Type des Frames (no frame=0, I=1, P=2, B=3) nur an I-Frames kann geschnitten oder können beim Spulen ansprungen werden. |
uchar number; //(8bit/1byte) Nummer der Datei (00x.vdr) in der das Frame zu finden ist. | uchar number; //(8bit/1byte) Nummer der Datei (00x.vdr) in der das Frame zu finden ist. | ||
short reserved; //(16bit/2byte) | short reserved; //(16bit/2byte) | ||
Zeile 12: | Zeile 12: | ||
Bedingt durch die vorzeichenbehaftete Definition der Variablen ''offset'' ergibt sich eine Größenbegrenzung der VDR-Stream-Dateien (00x.vdr) von max. 2^31, also 2.147.483.648 Bytes (2GB). | Bedingt durch die vorzeichenbehaftete Definition der Variablen ''offset'' ergibt sich eine Größenbegrenzung der VDR-Stream-Dateien (00x.vdr) von max. 2^31, also 2.147.483.648 Bytes (2GB). | ||
− | |||
'''Beispiel einer zusätzlichen Anwendung''': | '''Beispiel einer zusätzlichen Anwendung''': |
Version vom 19. April 2008, 14:56 Uhr
Die Indexdatei index.vdr wird automatisch vom VDR für jede Aufzeichnung erstellt. Über diese Indexdatei spult der VDR vor- und rückwärts oder führt Schnitte aus. Soll die Indexdatei neu erstellt werden, hilft das Tool genindex.
Die Datei index.vdr ist eine Lookup-Tabelle der Speicherpositionen der Frames in den VDR-Stream Dateien (00x.vdr). Die Datei selber ist ein flaches Array vieler Indexeinträge mit folgender Struktur des jeweiligen Indexeintrages. Jeder Indexeintrag hat die Gesamtgröße von acht Bytes.
struct tIndex { int offset; //(signed 32bit/4byte) Speicherposition des Frame, relativ zum Dateianfang der jeweiligen Datei, verweist auf PES header uchar type; //(8bit/1byte) Type des Frames (no frame=0, I=1, P=2, B=3) nur an I-Frames kann geschnitten oder können beim Spulen ansprungen werden. uchar number; //(8bit/1byte) Nummer der Datei (00x.vdr) in der das Frame zu finden ist. short reserved; //(16bit/2byte) };
Bedingt durch die vorzeichenbehaftete Definition der Variablen offset ergibt sich eine Größenbegrenzung der VDR-Stream-Dateien (00x.vdr) von max. 2^31, also 2.147.483.648 Bytes (2GB).
Beispiel einer zusätzlichen Anwendung:
- Dateigröße der index.vdr / 8 Byte = Anzahl der Frames der Aufnahme
- Anzahl der Frames der Aufnahme / 25 = Länge der Aufnahme in Sekunden
- Größe der index.vdr in Bytes / 12000 = Länge der Aufnahme in Minuten
Probleme
Diese Größenberechnung funktioniert allerdings nicht für Radioaufnahmen. Denn nur in Videoaufnahmen finden sich die I-Frames, für die die obigen Berechnungen gelten. Deshalb ist die angegebenen Spieldauer und damit auch die Spulgeschwindigkeiten bei vdr falsch.
Eine korrigierte index.vdr wird mit dem Audioindexer-patch erstellt, so dass auch Radioaufnahmen korrekt funktionieren.