Parsen einer großen Matroska Datei

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Re: Parsen einer großen Matroska Datei

Beitragvon hubblec4 » 8. Jan 2018, 21:35 Re: Parsen einer großen Matroska Datei

Danke für die ausführliche Erklärung. Denke das habe ich soweit verstanden.

Da habe ich dann aber eine neue Überlegung:
Wenn ich durch die 8000 Cluster parse, muss bei TBufStream erst, immer etwas eingelesen werden in den Speicher(klar 1mb sind da mehr als aussreichend, denke das könnte man auf ein paar Bytes reduzieren).

Nachdem die Daten in den Speicher geladen wurden sind, werden sie von dort aus nochmals ausgelesen-> fürs parsen.

TFileStream springt doch nur an die gewünschte Postion in der Datei und liest dann die "paar" Bytes(meistens 8 ) aus. Das sollte doch schneller gehen, weil einmal "Einlesen in den Speicher" wegfällt., oder?
hubblec4
 
Beiträge: 201
Registriert: 25. Jan 2014, 17:50

Beitragvon wp_xyz » 8. Jan 2018, 23:01 Re: Parsen einer großen Matroska Datei

Ich habe keine Ahnung vom Matroska-Dateiformat. Wie groß ist denn so ein Cluster? 30GB/8000 = 4 MB? Wenn du diese jeweils komplett in einem Stück vom FileStream aus in einen Speicherblock einliest und dort den Parser laufen lässt, sehe ich keinen Vorteil des BufStream mehr. Sind die Cluster unabhängig voneinander? Wenn ja, könntest du noch Geschwindigkeit gewinnen, indem du für das Parsen eines Clusters einen eigenen Thread startest. Je nach Ausbau deiner Maschine hast du da mehrere zur Verfügung.
wp_xyz
 
Beiträge: 2619
Registriert: 8. Apr 2011, 08:01

Beitragvon hubblec4 » 9. Jan 2018, 00:54 Re: Parsen einer großen Matroska Datei

wp_xyz hat geschrieben:Ich habe keine Ahnung vom Matroska-Dateiformat.

Ich vermute mal aber das dir die VideoDatei Endung .mkv etwas sagt??
Aktuelle Matroska Specs https://matroska.org/technical/specs/index.html


wp_xyz hat geschrieben:Wie groß ist denn so ein Cluster? 30GB/8000 = 4 MB?

So ganz genau kann ich das nicht sagen, das ist eben alles abhängig davon was für Video, Audio, Sub Daten enthalten sind. Also wenige Bytes bis vielleicht 20 mb.

wp_xyz hat geschrieben:Wenn du diese jeweils komplett in einem Stück vom FileStream aus in einen Speicherblock einliest und dort den Parser laufen lässt, sehe ich keinen Vorteil des BufStream mehr.

Yupp, sehe ich auch so.

wp_xyz hat geschrieben:Sind die Cluster unabhängig voneinander? Wenn ja, könntest du noch Geschwindigkeit gewinnen, indem du für das Parsen eines Clusters einen eigenen Thread startest. Je nach Ausbau deiner Maschine hast du da mehrere zur Verfügung.

Die Cluster sind gereiht, dennoch könnte man dessen gesamten Byte Inhalt in einer Klasse "lagern" welche im eigenen Thread den Cluster parst.
Das ist vielleicht mal in ferner Zukunft der Fall, aber vorerst parse ich lediglich 3 Zeitstempel und ein paar andere Kleinigkeiten(EBML-ID, Cluster-Size, FirstSubElementPos).

Das geht alles fix, da anfangs nur Basis Daten "an-geparst" werden und dann später bei gewissen Clustern etwas intensiver geschaut wird. Ein Cluster besteht aus Unterelementen mit weiteren Elementen usw...

EDIT: Die Daten innerhalb des Clusters scheinen nicht das Problem zu sein, ich vermute mal es geht nur um die Anzahl der Cluster, wodurch das ERSTE parsen so lange dauert (Cache Problem wegen Windows). Bei kleineren Dateien mit 1000 oder 500 Clustern gehts super schnell.

Ich muss meinen Parser dann noch auf Linux testen, bin gespannt wie es sich dort verhält.
hubblec4
 
Beiträge: 201
Registriert: 25. Jan 2014, 17:50

Beitragvon hubblec4 » 13. Jan 2018, 20:06 Re: Parsen einer großen Matroska Datei

Ich muss doch nochmal etwas nachfragen.

Ich wollte herausfinden ob das "lange erste" parsen abhängig von der Cluster Anzahl ist. Dazu habe ich in einer Matroska Datei mal 10000 Kapitel eingefügt.
Das Parsen dauert etwas mehr als 50ms aber eben keine 30 Sekunden.

Kapitel sind im Prinzip genauso aufgebaut wie die Cluster. Allerdings sage ich jetzt mal mit meinem Leihenhaften Wissen, das dort die Daten/Bytes enger beieinander liegen.

In den Clustern gibt es Bild und Audio Daten, wo durch die Cluster "weiter verstreut" auf der Festplatte liegen.

Kann es damit zusammenhängen? (Oder völlig falsch gedacht)
hubblec4
 
Beiträge: 201
Registriert: 25. Jan 2014, 17:50

• Themenende •
Vorherige

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried