...kleiner Basic-Kurs wenns erlaubt ist.

  • Hallo,


    ich moecht mich hier mal ein bisschen durchfragen, einfach so.


    Im Moment wuerde mich interessieren wie die Datei index.vdr aufgebaut ist, was ich daraus lesen kann, bzw. wozu ich die verwenden kann.


    ...und kann ich dem vdr klarmachen das er die 2GB beschraenkung lassen soll??



    chab

    [falls ich mich in diesen Ausfuehrungen irre, moechte ich um nachsichtige Unterstuetzung bei der Korrektur gebeten haben]

  • Hi,


    Zitat

    Original von chabayo
    Im Moment wuerde mich interessieren wie die Datei index.vdr aufgebaut ist, was ich daraus lesen kann, bzw. wozu ich die verwenden kann.


    ...und kann ich dem vdr klarmachen das er die 2GB beschraenkung lassen soll??


    Die Datei index.vdr ist eine Lookup Tabelle der Speicherpositionen der Frames in den VDR-Stream Dateien (00x.vdr). Über diese Datei spult der VDR vor- und rückwärts oder führt Schnitte aus.


    Die Datei ist nichts weiter als ein flaches Array vieler Indexeinträge mit folgenden Struktur eines Indexeintrages.

    Code
    struct tIndex 
    { int offset;  //(signed 31bit/4byte) Speicherposition des Frame, relativ zum Dateianfang der jeweiligen Datei
       uchar type;  //8bit/1byte) Type des Frames (I, P, B) nur an I-Frames kann geschnitten oder gespult werden.
       uchar number; //(8bit/1byte) Nummer der Datei (00x.vdr) in der das Frame zu finden ist.
       short reserved; //(16bit/2byte) 
    };


    Weitere Detail sind in recording.c/.h zu finden.


    Die 2GB kommt durch die Definition des der Variablen offset, da diese Vorzeichenbehaftet ist kann sie max. 2^31 (2147483648) also 2GB speichern.


    Ohne Programmänderungen ist das 2GB Limit nicht aufhebar.


    Ich denke, es müsste relative einfach möglich sein dieses Limit auf 4GB anzuheben.
    wenn an allen Stellen der Verwendung des tIndex.offset der Typ statt signed int als Variabletyp unsigned int verwendet wird. Allerdings limitiert die BS-Funktionen zum lseek ebenfalls auf 2GB.


    Sinnvoll wäre gleich der Einsatz von int64 und lseek64 dann liegt das Limit bei 2^63 8589934592GB pro Datei ... :D
    Allerdings sind dann die alten Dateien index.vdr nicht mehr kompatibel.




    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




    Andreas

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!