Willkommen im cgboard - classic games Forum! Deine gemütliche Retro Gaming Community. Besuche uns auch im Discord Chat.

[Info] In Planung: Spezieller ISO-Komprimierer
#1
0
Morgen! Big Grin

Da ich jetzt drei Wochen Urlaub habe und sich einigen Usern hier und mir immer schon die Frage gestellt hat, was man überhaupt noch tun kann, um ISOs richtig gut komprimiert zu bekommen, habe ich die Idee gehabt, für genau diesen Zweck ein Tool zu schreiben.

Geplant ist eine Art Parser, der das ISO-Filesystem auseinandernimmt um so für jede einzelne Datei innerhalb des ISOs (und ggf. auch Datenblöcke innerhalb von Dateien) den am besten passenden Packer zu bestimmen, d.h. speziell für WAV-Files wird ein Audio-Komprimierer wie z.B. OptimFROG benutzt und die übrig gebliebenen Daten werden mit 7-ZIP oder UHARC gepackt.

Für Profis gibt es dann noch die Möglichkeit, über einen integrierten Hex-Editor Datenblöcke mit Audiodaten zu finden, die nicht in einem bekannten Dateiformat wie WAV vorliegen, und zu definieren, dass diese Blöcke mit OptimFROG komprimiert werden sollen.

Für Leute mit ganz starken CPUs und ganz viel Zeit wird es evtl. auch möglich sein, verschiedene Komprimierer an dieselben Daten ranzulassen um festzustellen, welcher die Daten am kleinsten bekommt.

Auf Wunsch lassen sich WAV-Files (später auch AU und andere unkomprimierte, gängige Soundformate) auch verlustbehaftet Komprimieren, z.B. mit MP3/OGG/APE oder sonstwas, wobei ich nicht wirklich ein Freund von solchen Kompressionsmethoden bin.

Resultat ist eine einzige große PIP-Datei (hab ich mal einfach so beschlossen, dass die so heisst), die alle komprimierten Daten und eine Art Skript enthält, das angibt, welche Daten von wo mit welchem Programm dekomprimiert und in das resultierende ISO-File wieder eingefügt werden sollen. Entpackt werden kann das ganze mit einem entsprechenden Entpacker, den ich dazu bastle oder per SFX-Modul.


Also wie ihr seht, es ist eine Menge geplant, aber das Geplante ist auf alle Fälle mit Hilfe der üblichen Kommandozeilen-Packer umsetzbar, und ich werde mir Stück für Stück vornehmen und sobald es ein erstes brauchbares Ergebnis gibt, hier veröffentlichen.


Auf die Idee gekommen bin ich dadurch, dass sich auf meiner frisch eingetroffenen Anvil of Dawn-CD zwei große Dateien befinden (zusammen etwa 136 MB), die nur Soundeffekte und Sprachausgabe enthalten.

Das Komprimieren der Sprachausgabedatei (RES.007, 117896 kb, 8-Bit Mono, 11.025 Hz) hat zu folgenden Ergebnissen geführt:
  • 60760 kb - 7-ZIP (Ultra)
  • 58073 kb - RAR (beste Komprimierung, Multimedia, Delta)
  • 50738 kb - UHA (PPZ, Multimedia)
  • 46030 kb - OptimFROG (Mode: HighNew, Optimize: Best)

Wären also hier schonmal locker etwa 4,7 Megabyte eingespart. Wenn man an FTP-Transfers denkt ist das nicht gerade unerheblich, und das erst recht, hätte man ursprünglich 7-ZIP zum Packen benutzt, das unglücklicherweise über keine integrierte Multimedia- bzw. Audio-Kompression verfügt, was sich gerade hier stark bemerkbar macht (sogar schlechter als RAR, 14730 kb(!) größer als die mit OptimFROG komprimierte Datei).

Falls euch noch brauchbare Ideen kommen werde ich diese gerne berücksichtigen, deshalb schonmal die doch so frühe Ankündigung. Für eventuelle Tips von Profis zur Verbesserung bin ich natürlich auch empfänglich.
[Bild: valid-german.png]
[Bild: logo.gif]
Zitieren
#2
0
Also ich finde das eine Klasse Idee, helfen kann ich nicht viel, aber weiss nicht ob man es dann noch kompitabel zu anderen Packern machen könnte.
Zitieren
#3
0
Also ich finde die Idee ja nicht schlecht und da kann man auch als Programmierer ne Menge lernen.
Aber irgendwie finde ich das ein bisschen übertrieben. Das soll dich jetzt daran hindern es zu programmieren und es ist auch keine Kritik, denn die Idee des ganzen ist ziemlich durchdacht und kann wirklich zum Erfolg führen.
Da ich leider auch von Programmiersprachen keinen Schimmer hab bleibt mir nichts anderes als dir viel Glück und Erfolg zu wünschen!
Zitieren
#4
0
Wenns Spass macht Big Grin Big Grin
Ich denke dabei aber an unerfahrenen Usern wie mich Big Grin die null Ahnung von Befehlszeilen-Packern und Programierung haben.
Es sollte also so gut wie alles selbstablaufend sein. Sonst befürchte ich dass dein wohlgemeintes Angebot zur Problemzone wird.
Zitieren
#5
0
Zur Info: Meine Planung wurde soeben durch die Tatsache durcheinandergeworfen, dass UHARC das Soundeffekt-File von Anvil of Dawn besser gepackt hat als OptimFROG. Deshalb darf ich jetzt nicht mehr annehmen, dass Soundfiles mit OptimFROG IMMER besser gepackt werden als mit UHARC.

Zudem habe ich noch DURILCA 0.04b und Slim! 0.23 mit in die Tests einbezogen und festgestellt, dass diese beiden ca. 2 bis 4-mal so lange zum Packen benötigen wie UHARC aber dafür deutlich bessere Kompression bieten. Da ich schließlich nur Support für die beiden anbieten werde und 7-Zip und UHARC nun ganz außen vor lasse, weil sie praktisch IMMER schlechter komprimieren, kann man davon ausgehen, dass das Packen im Allgemeinen rund 12-mal so lange dauern wird (Bruteforce-Analyse pro Packer + letztendliches echtes Packen)

Es wird also alles etwas komplizierter und undurchsichtiger als gedacht, trotzdem bleibt folgendes festzuhalten:


Ziel des Packers ist, ohne irgendwelche große Herumfrickelei durch den User eine bessere oder zumindest genauso gute Kompression für ISOs zu ermöglichen wie es gängige Packer wie 7-Zip und UHARC im Alleindurchgang schaffen würden.

Für den User wird das ganze am Ende so aussehen, dass er so gut wie keine Einstellungsmöglichkeiten hat, die nur zu der Unsicherheit führen, welche jetzt eigentlich benutzt werden muss, um die beste Kompression zu erzielen. Das Packen sowie das Entpacken werden voll automatisch durchgeführt. Während der beiden Vorgänge ist lediglich eine Fortschrittsanzeige mit ungefährer Restdauer zu sehen, auf Wunsch mit aufklappbarem Logfenster, damit interessierte User sehen, was eigentlich gerade passiert.


EDIT: Bastle gerade an einer Routine, die für 2KB-Blöcke erkennt, um was für einen Soundblock es sich handelt (8/16-Bit, Mono/Stereo) oder ob es ein Block mit anderen Daten ist.
[Bild: valid-german.png]
[Bild: logo.gif]
Zitieren
#6
0
EDIT: Kompatibel zu anderen Packern kann das Programm nicht werden. Sad

In Sachen Sounderkennung sieht es schon ganz gut aus:

Bisher steht ein Programm, dass große Files, z.B. ISO-Images nimmt, diese in 2KB-Blöcken auf mögliche Sounddaten untersucht, das Soundformat versucht zu erkennen und bei Verdacht sowohl OptimFROG (Soundkomprimierer) als auch DURILCA (allgemeiner Komprimierer) über den gefundenen Block laufen lässt um so festzustellen, ob eine Soundkompression wirklich Gewinn bringt.

Es kommt hier und da mal zu einem falschen Alarm, d.h. es wird von Sounddaten ausgegangen und der OptimFROG/DURILCA-Test beweist aber das Gegenteil.

Trotzdem bleibt eine Trefferquote von gut 90%, nicht gefundene Sounddaten sind etweder sehr leise oder übersteuert und lassen sich daher mit normalen Komprimierungstools genausogut packen. Falscher Alarm wird bei etwa 2-3% ausgelöst.

Das ganze funktioniert bisher nur mit 8-Bit-Sounds, an 16-Bit wird später gearbeitet, ist aber schon mal eine gute Grundlage für das geplante ISO-Komprimier-Tool, bei dem dann auf Soundblöcke OptimFROG angewandt wird und auf alle anderen die üblichen Komprimierer.


EDIT:

Folgende Soundformate werden jetzt erkannt und voneinander unterschieden:
  • 8 Bit Mono Unsigned (Soundblaster-Standard)
  • 8 Bit Mono Signed (Amiga-Standard, findet aber zuweilen auch bei PC-Oldgames Verwendung)
  • 16 Bit Mono Signed (Standard)
  • 16 Bit Stereo Signed
Das ganze teste ich im Moment mit Avery Cardoza's Slam-Tilt Pinball. Auf der CD sind massig 16-Bit Sounds in Mono und Stereo enthalten. Wenn ich damit durch bin, werde ich kurz posten, was es für einen Komprimierungsgewinn (OptimFROG+7-Zip bzw. OptimFROG+UHARC, je nachdem was besser ist) gegenüber reinem 7-Zip und UHARC ergibt.


EDIT:

Bisherige Kompressionsergebnisse (in Bytes):
  • 100,0% - 572.796.928 - Ungepacktes ISO CD Image
  • _45,8% - 262.180.480 - 7-Zip
  • _44,9% - 257.383.809 - WinRAR
  • _41,0% - 234.580.337 - UHARC / WinUHA
  • _39,3% - 225.275.699 - OptimFROG bei Soundblöcken + 7-Zip bei verbleibenden
Und mal eben etwa 9 MB gespart bei rund 160 MB 16-Bit Sounddaten auf der CD. Die Einsparung ist bei weniger und 8-Bit Sounddaten natürlich entsprechend kleiner. Bei Oldgames ohne großen digitalen Soundtrack oder Sprachausgabe wird das ganze dann nicht so stark ins Gewicht fallen, das schonmal vorweg!

Aber schön zu sehen, dass die Fertigstellung des Programms anscheinend lohnen wird und damit vielleicht das ursprüngliche Dauerthema, welcher Packer mit welchen Einstellungen wohl am besten ist, vom Tisch ist.

Es scheint sich auch so langsam aber sicher zu bestätigen, dass UHARC in manchen Fällen allein wegen der Multimedia-Unterstützung 7-Zip enorm überlegen ist, aber auch nur, wenn auch eine entsprechende Menge Sound in den zu komprimierenden Daten vorhanden ist.


Also schonmal folgende Faustregel für zwischendurch:

7-Zip NICHT bei ISOs mit ner Menge Sounds drauf verwenden. Darunter fallen Games mit Sprachausgabe und Musik, die nicht als Audiotracks sondern als Dateien auf der CD vorhanden sind. Stattdessen in solchen Fällen lieber WinUHA oder sogar WinRAR verwenden!
[Bild: valid-german.png]
[Bild: logo.gif]
Zitieren
#7
0
Wenns dir Spaß macht, dann mach mal. Für mich käme verlustbehaftetes Komprimieren (Wav nach mp3 umwandeln) gar nicht in Frage da ich Zeugs verbreite um von meinen Originalen im Falle von Verlust 100-%-Mirrors zu haben bzw. anderen diese anzubieten versuche.
Falls deine anderen Methoden eine bessere Komprimierung zu erreichen erfolgreich sind (z.B. das durchmustern des Archives vor dem Packen) und du den Quelltext Open-Source verbreitest, kann ich mir gut vorstellen, dass so eine Komprimierungsmethode schnelle Verbreitung in allen gängigen Tools finden wird.
DFTT <°)))o><
Zitieren
#8
0
Einen offenen Source sowie eine offene Spezifikation für das resultierende File bzw. Archiv wird es geben. Ich mache im Prinzip bisher nichts anderes als sämtliche Daten auf mögliche Sounddaten hin zu überprüfen und als Sound identifizierte Daten mit OptimFROG statt mit 7-Zip zu komprimieren.

Später werden dann die OptimFROG- und die 7-Zip Daten wieder zu einer großen einzelnen Datei zusammengeführt. Beim Entpacken wird das große File wieder gesplittet, der OptimFROG-Teil mit OptimFROG entpackt, der 7-Zip-Teil mit 7-Zip und die entpackten Daten wieder in die richtige Reihenfolge gebracht um die Originaldaten zu erhalten.

MP3/OGG/MPC-Support kommt wenn überhaupt erst später, wobei ich eigentlich genau Deiner Meinung bin, dass verlustbehaftetes Komprimieren eigentlich fürn Eimer ist, so dass ich nochmal überdenken werde, MP3/OGG/MPC-Kompression überhaupt zu integrieren.
[Bild: valid-german.png]
[Bild: logo.gif]
Zitieren
#9
0
Es gibt keine verlustfreie Audiokompression. Das ist ein Widerspruch in sich selbst.
Zitieren
#10
0
Wieso?
[Bild: valid-german.png]
[Bild: logo.gif]
Zitieren
#11
0
Der ISO 9660-Parser ist soweit fertig. Damit ist es für den Packer möglich, Zugriff auf die einzelnen Dateien in dem Image zu bekommen.

Damit ist schonmal ein weiterer Kompressionsvorteil gewonnen:
Dateien mit gleicher Endung werden zusammenhängend komprimiert. Die üblichen Algorithmen komprimieren ähnliche Daten besser, wenn sie zusammenhängend sind. Und bei Daten aus Dateien mit gleicher Dateiendung sind Ähnlichkeiten wahrscheinlicher als wenn sich Dateiformate ständig abwechseln. Ein paar Megabyte lassen sich in manchen Fällen schon alleine durch diese Umstrukturierung rausholen.

Ein weiterer Vorteil ist, dass ich so direkten Zugriff auf Sounddateien bekomme und ich diese sofort mit OptimFROG komprimieren kann ohne die Daten vorher durch meinen doch sehr CPU-lastigen Analysierer jagen zu müssen um sie als Sound zu identifizieren. Außerdem ist es theoretisch damit möglich, verlustbehaftete Transformationen (MP3, OGG etc.) anzuwenden, falls jemand dann doch eine duetlich geringere Datenmenge statt Verlustfreiheit vorzieht.

Ein dritter Vorteil ist, dass ich zusätzlich noch Videofiles wie z.B. AVI in Video- und Audio-Spur zerlegen und die Audiospur besser (OptimFROG) komprimieren kann. Gerade bei älteren Spielen kommt es häufig vor, dass in AVI-Files unkomprimierte Audiospuren verwendet werden, so dass dieses Splitten nochmal einen deutlichen Vorteil bringen dürfte.

...
[Bild: valid-german.png]
[Bild: logo.gif]
Zitieren
#12
0
@Feltzkrone

deine idee ist absolut grandios!
mach weiter so und halt uns auf dem laufenden.



@XqWyZ

doch die gibt es:

FLAC, Monkey Audio, etc...

übersicht zu finden hier:
http://www.lossless-audio.com/comparison.htm

die sind allesamt verlustfrei.

was du meinst ist datenreduktion (mp3, mpc, aac, etc...).
hier werden die anteile der irrelevanten daten (für den menschen nicht hörbar durch maskierungseffekte, etc...) durch algorithmen weggerechnet.


gruß stevie
Zitieren
#13
0
Verlustfrei und Kompression sind zwei Dinge die man nicht vereinen kann, da sie gegensaetzlich sind! Man kann von verlustfreierer reden wenn man will, aber niemal von verlustfrei. Selbst eine Audio-CD ist nicht verlustfrei.
Zitieren
#14
0
eine kompression ansich versucht durch einen algorithmus gleiche datenwörter zu finden und dann diese nur einmal aufzuführen und auf die anderen stellen nur referenzieren. wie zb. bei zip, rar oder 7zip.
wie gesagt, was du meinst ist datenreduktion (minidisc, mp3, divx, etc...).
bei der komprimierung werden nur redundante informationen zusammgegefasst aber das quellmaterial nicht irreversibel verändert.

die gepackten daten sind ABSOLUT verlusstfrei, da sie sonst später nicht mehr funktionieren würden.
wenn dem nicht so wäre, dann könntest du keine einzige exe-datei mehr ausführen, da sie schlichtweg kaputt wäre.

eine cd ist überhaupt nicht komprimiert, sie ist digitalisiert und damit gehen eben abtastrate und bittiefe einher. das hat aber nichts mit komprimierung zu tun, sondern ist ein effekt der digitalisierung, die ja eine begrenzte (wertediskrete) anzahl an stufungen abverlangt.
bei der digitalisierung wird ja nichts komprimiert, also zusammengefasst.


gruß stevie
Zitieren
#15
0
natuerlich gehen beim packen keine daten verloren wie du auch richtig begruendest. ich rede hier von kompression (mp3, divx) oder auch "verlustfreier" kompression ala flac oder so. dort sind informationen nicht mehr enthalten also verloren. natuerlich ist dieser verlust ziemlich klien und niemand wird ihn wirklich feststellen. aber es ist einer da. und natuerlich ist eine cd nicht verlustfrei. das audio material wurde 100% mit mehr als ~1411,2kbit (44,1 kHz, 16-Bit) und 2 Kanälen aufgenommen. Wurde dann aber auf diesen Standard heruntergerechnet.
Zitieren
#16
0
Mensch XqWyZ... - Das ist doch haarspalterisches Kindsgedöns! Ey, fass ich nich... Teufel

CSX.
[SIZE="16"][COLOR="RoyalBlue"]"Zwei Luxusartikel habe ich mir immer geleistet - Zeit und Charakter."[/COLOR][/SIZE] - Oskar Werner
Zitieren
#17
0
kompression = packen.
FLAC ist definitiv verlusstfrei. er heisst nicht ohne grund Free Losless Audio Codec. das ist kein marketing trick, sondern das ist so! Wink
die information sind zu 100% enthalten und können auch zu 100% wieder hergestellt werden. nur bei einer datenreduktion (mp3, divx) ist das nicht der fall.

quelle FLAC website: http://flac.sourceforge.net/features.html

Lossless: The encoding of audio (PCM) data incurs no loss of information, and the decoded audio is bit-for-bit identical to what went into the encoder. Each frame contains a 16-bit CRC of the frame data for detecting transmission errors. The integrity of the audio data is further insured by storing an MD5 signature of the original unencoded audio data in the file header, which can be compared against later during decoding or testing.

eine cd ist nicht verlustfrei genau, aber die parameter sind so gewählt, dass sie unser (schlechtes) gehör überlisten. unser gehör nimmt im besten falle (babyalter) 22 khz wahr. damit aliasing-artifakte vermieden werden können hat der gute shannon herausgefunden, dass die abtastrate für samples >2*nutzfrequenz sein muss. ergo 44,1 khz.
mit 16 bit dynamikumfang ist alles fern ab von klassik auch gut bedient.
da heute eh jeder song im radio durch limiter, compressor und sonstige dynamikprozessoren gejagt wird.

gruß stevie
Zitieren
#18
0
Zitat:Original von Camillo
Mensch XqWyZ... - Das ist doch haarspalterisches Kindsgedöns! Ey, fass ich nich... Teufel

CSX.
Irgendwie muss man sich die Langeweile doch vertreiben.


@Stevie: Interessant. Kann ich aber irgendwie ned richtig glauben. Aber wenns funtkioniert hab ich mich wohl geirrt! Man lernt nie aus.
Zitieren
#19
0
hallo XqWyZ!

ich würde dich doch nicht anlügen Zunge raus
hier nochmal ein link:

http://de.wikipedia.org/wiki/Audiokompression

man lernt nie aus: gutes motto!


gruß stevie
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  [Info] extremer Komprimierer Corsafahrer 12 3.473 28.02.2006, 00:31
Letzter Beitrag: Camillo

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste