PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sac (Lossless Audio Coding)


pest
2008-06-01, 10:31:14
Ok, da das mit Paq nicht so richtig funktioniert hat ;),
hier ein Bench mit meinem eigenen verlustfreien Audiopacker

Archiv laden: SacBench.rar (http://www.dateihochladen.de/load.php?id=3fb6542b8194ec7)

in ein eigenes Verzeichnis entpacken und "bench.bat" von der Kommandozeile aufrufen, dann die Zeit hier posten
<<bisher keine MT Unterstützung>>

zur Technik:
Sac verwendet die FP-Einheiten des Prozessors um eine kaskadierende LMS-Struktur aufzubauen
dabei wird für jedes Sample ein Prädikator bis zur Ordnung 1024 erstellt.
Zusätzlich werden in einem zweitem Schritt Parameter optimiert und anschließend der Fehler durch einen arithmetischen Kodierer geschickt.
Sac ist dabei auf dem Kompressionslevel von OptimFrog.

E8400@4GHz, WinXP32 SP2


Sac v0.0.6a4 - Lossless Audio Coder 06-07 pest (Jun 1 2008)

CPU: 4005 MHz
Open: 'seam.wav': ok (10595020 Bytes)
WAVE Codec: PCM (1411kbps)
44100Hz 16 Bit Stereo
2648744 Samples [00:01:00.062]
Create: 'seam.sac': ok
Mode: Lossless High
Framesize: 8 Sec (352800 Samples)
Optimize: Good Lss 12\6 (k 32) Lms 640
2648744/2648744: 100.0% (0.7x): 522.2kbps
Time: [00:01:21.984]
MD5: [8c4bfd38079915fbbc759a3934daf6e1]
Frames: 8 Ms: 100.0% L-R: 0.0% Mono: 0.0%
Ratio: 10595020 -> 3920882 Bytes = 37.007%

MrMostar
2008-06-01, 11:56:04
X2 4400+ 939



Sac v0.0.6a4 - Lossless Audio Coder 06-07 pest (Jun 1 2008)

CPU: -2147483648 MHz
Open: 'seam.wav': ok (10595020 Bytes)
WAVE Codec: PCM (1411kbps)
44100Hz 16 Bit Stereo
2648744 Samples [00:01:00.062]
Create: 'seam.sac': ok
Mode: Lossless High
Framesize: 8 Sec (352800 Samples)
Optimize: Good Lss 12\6 (k 32) Lms 640
2648744/2648744: 100.0% (0.2x): 522.2kbps
Time: [00:04:04.202]
MD5: [8c4bfd38079915fbbc759a3934daf6e1]
Frames: 8 Ms: 100.0% L-R: 0.0% Mono: 0.0%
Ratio: 10595020 -> 3920882 Bytes = 37.007%



edi: Beim ersten Durchlauf war die Taktfrequenz richtig (1001MHz), beim zweiten Durchlauf habe ich die Batch Datei in einem bereits offenen CMD Fenster gestartet, damit das Ergebnisfenster erhalten bleibt, leider mit seltsamer Fequenzanzeige.

pest
2008-06-01, 12:02:16
wenn die MHz falsch ausgelesen werden, ist die Messung fürn Popo, oder hat es tatsächlich 4Minuten gedauert?
benutzt du Vista?

pest
2008-06-01, 12:29:15
ich hab die Batchdatei jetzt so geändert das man sie nicht mehr von der Kommandozeile starten muss, damit das Ergebnis erhalten bleibt.
Wenn es trotzdem Probleme mit der CPUFrequenz gibt, werd ich das noch fixen, hab nur 5min investiert. Wenn überhaupt noch jmd. mitmachen will :tongue:

-=Popeye=-
2008-06-01, 12:35:43
Q6600@3GHz Vista64

Sac v0.0.6a4 - Lossless Audio Coder 06-07 pest (Jun 1 2008)

CPU: 3006 MHz
Open: 'seam.wav': ok (10595020 Bytes)
WAVE Codec: PCM (1411kbps)
44100Hz 16 Bit Stereo
2648744 Samples [00:01:00.062]
Create: 'seam.sac': ok
Mode: Lossless High
Framesize: 8 Sec (352800 Samples)
Optimize: Good Lss 12\6 (k 32) Lms 640
2648744/2648744: 100.0% (0.5x): 522.2kbps
Time: [00:02:06.254]
MD5: [8c4bfd38079915fbbc759a3934daf6e1]
Frames: 8 Ms: 100.0% L-R: 0.0% Mono: 0.0%
Ratio: 10595020 -> 3920882 Bytes = 37.007%

Ronny G.
2008-06-01, 15:48:52
Mein Ergebnis bei Q6600@3,6Ghz DDR800 4-4-4-12

MrMostar
2008-06-01, 16:52:56
wenn die MHz falsch ausgelesen werden, ist die Messung fürn Popo, oder hat es tatsächlich 4Minuten gedauert?
benutzt du Vista?

mit der neuen Version werden 0min angezeigt, aber 4 min dürfte hinkommen, deswegen jetzt einen Haufen Zeit zu investieren lohnt sich aber imo nicht ;)

Sac v0.0.6a4 - Lossless Audio Coder 06-07 pest (Jun 1 2008)

CPU: -2147483648 MHz
Open: 'seam.wav': ok (10595020 Bytes)
WAVE Codec: PCM (1411kbps)
44100Hz 16 Bit Stereo
2648744 Samples [00:01:00.062]
Create: 'seam.sac': ok
Mode: Lossless High
Framesize: 8 Sec (352800 Samples)
Optimize: Good Lss 12\6 (k 32) Lms 640
2648744/2648744: 100.0% (0.0x): 522.2kbps
Time: [00:00:00]
MD5: [8c4bfd38079915fbbc759a3934daf6e1]
Frames: 8 Ms: 100.0% L-R: 0.0% Mono: 0.0%
Ratio: 10595020 -> 3920882 Bytes = 37.007%
Drücken Sie eine beliebige Taste . . .

pest
2008-06-01, 17:21:14
wenn es mehr sind, bei denen es nicht geht, investier' ich noch was ;)

der Packer skaliert direkt mit dem Takt, ein Q9xxx-Ergebnis fände ich noch schön
und btw.

wer die Stabilität testen will, trägt in der Batchdatei einfach statt "--high" "--insane" ein. Da hat sich Sac bei mir (OCCT stable) direkt mal verabschiedet.

GaryX
2008-06-04, 16:52:22
amd x2 6400
win xp x64

CPU: 3199 MHz
Open: 'seam.wav': ok (10595020 Bytes)
WAVE Codec: PCM (1411kbps)
44100Hz 16 Bit Stereo
2648744 Samples [00:01:00.062]
Create: 'seam.sac': ok
Mode: Lossless High
Framesize: 8 Sec (352800 Samples)
Optimize: Good Lss 12\6 (k 32) Lms 640
2648744/2648744: 100.0% (0.5x): 522.2kbps
Time: [00:02:12.308]
MD5: [8c4bfd38079915fbbc759a3934daf6e1]
Frames: 8 Ms: 100.0% L-R: 0.0% Mono:
Ratio: 10595020 -> 3920882 Bytes = 37.007%

pest
2008-06-04, 18:49:09
Die guten FP-Einheiten des X2 machen sich bezahlt :)

knallebumm
2008-06-04, 19:56:05
XP3200+
KT880

albix64
2009-04-25, 20:07:48
Ein Hobbyprojekt soll besser komprimieren als FLAC oder ALAC? Hast du auch Vergleichtests?

Frank1974
2009-04-25, 21:41:09
Q9650@2672MHz[8x334], 2x2048MB@DDR2-800, 5-5-5-12-2T, Vista64 Sp1
http://666kb.com/i/b8e6xowlj63jd198j.png

mfg
Frank

pest
2009-04-25, 22:00:29
Ein Hobbyprojekt soll besser komprimieren als FLAC oder ALAC? Hast du auch Vergleichtests?

es ist mit Aussahmen sogar der Beste ;)
Vergleichstests kann ich machen, wie gesagt das Projekt ist schon 1.5Jahre alt

Diarrhorus
2009-04-25, 22:03:31
Interessant.
Gibts auch irgendwo den Code? :tongue:

BlackBirdSR
2009-04-25, 22:33:29
Die guten FP-Einheiten des X2 machen sich bezahlt :)

Wenn du fast nur x87-Gleitkomma nutzt, erwarte ich für K8-K10 und Core2 eigentlich fast Gleichstand. Da hat keiner so richtig große Vorteile gegenüber dem Anderen.

Warum die Sache nicht vektorisieren? Oder reden wir hier schon von FP-SIMD? (SSE2)

Spasstiger
2009-04-25, 23:21:10
Ein Hobbyprojekt soll besser komprimieren als FLAC oder ALAC?
FLAC encodiert dafür um ein Vielfaches schneller.
Bei mir hat der Test von pest z.B. 2 Minuten und 4,5 Sekunden gebraucht (Core 2 Duo E4300 @ 3 GHz).
Die erzeugte Datei ist 3,73 MiB groß (Wav-Datei: 10,10 MiB).
Wenn ich die gleiche Wav-Datei mit FLAC Level 8 codiere, wird in weniger als 2 Sekunden eine 3,97 MiB große Datei generiert.

Und wenn ich in seine Wav-Datei einfach einen 440-Hz-Sinuston reinpacke, dann schneidet sein Encoder sogar noch weit besser ab als FLAC:
Sac: 10,10 MiB -> 1,25 MiB
FLAC: 10,10 MiB -> 1,96 MiB
Nur braucht Sac halt eine halbe Ewigkeit zum Encoden. Echtzeitencoding wäre nur mit Multicore-Unterstützung möglich.

pest
2009-04-26, 06:50:01
Interessant.
Gibts auch irgendwo den Code? :tongue:

wenn das Ding MP Unterstützung hat, wollte ich es sowieso als OpenSource laufen lassen
wenn du mir einen guten Grund nennst, kannst du den Code/Codeteile aber gern haben


Warum die Sache nicht vektorisieren? Oder reden wir hier schon von FP-SIMD? (SSE2)

ich habe damit experimentiert, hatte aber Rundungsprobleme
prinzipiell aber kein Problem, Sac wäre dann halt etwas schlechter
die Hauptrechenzeit wird beim Skalarprodukt verschwendet

das ganze ist eher Work in Progress (standing Progress ;))
Multikannalunterstützung ist auch nur rundimentär vorhanden, ohne echte Kopplungsstrategien

das Problem ist einfach das es viele Worst-Case Samples gibt, und was
bei dem einen funktioniert, verschlechtert die Sache woanders wieder
es gibt ca. 50 Konstanten die man anpassen kann ;)

Sac besitzt z.b. auch einen "Insane" Modus, der aber nicht immer besser ist
aufgrund meiner Optimierungsstrategie (die nur auf einem Teil optimiert).
Das kann man theoretisch aber mathematisch exakt lösen.


Nur braucht Sac halt eine halbe Ewigkeit zum Encoden. Echtzeitencoding wäre nur mit Multicore-Unterstützung möglich.

ja da bin ich halt stehengeblieben. Faktor 8-10 ist denke ich drinn (also SSE + MP)
aber da stand dann meine Überlegung das Ganze vielleicht Integer-Only zu machen, auch wegen der besseren Multiplattformfähigkeit

ich werde später mal ein paar Benches machen

albix64
2009-04-26, 10:09:18
Wenn du die Encoding-Geschwindigkeit verbessert, könnte ja wirklich etwas daraus werden.

PrefoX
2009-04-26, 10:20:19
Finde auch das du nen guten job bis dato gemacht hast aber setze wirklich deine prioritäten mal auf die encoding geschwindigkeit, dann wird das projekt vllt doch noch sehr populär :)

ich drück dir die daumen.

pest
2009-04-26, 10:24:19
das ist nett von euch gemeint :),
aber selbst Projekte die ihre Prioritäten auf das Verhältnis Kodierung/Speed gelegt haben sind kaum verbreitet, und mir ging es erstmal nur um Maximale Kompression
der Bedarf ist da leider nicht da

aber ich habe schon Lust bekommen, weiter zu machen, ein Foobar-PlugIn wäre z.b. sehr cool

immerhin schaffe ich mit meinem 4Ghz C2D 0.3x Echtzeit beim Kodieren :D

ich hatte vor geschätzten 10Jahren auch mal einen Packer der Besser und Schneller als das damalige WinRAR war...aber nunja...Hauptsache ich weiß das ich es kann ;)

pest
2009-04-26, 20:19:31
so, ich habe mal ein paar Läufe gemacht

http://www.abload.de/img/sac_vergleichhwu5.png

die Tabelle ist eigentlich selbst erklärend. Es wurde die maximal mögliche zur Verfügung stehende Kompression der Programme benutzt.
Die 46 Dateien sind ein bunter Mix aus Rock, Pop, Elektro und ein paar Worst-Case Samples

Die Dekodierzeit beim Original entspricht der Abspielzeit der 46 Dateien.
Die Dekodierzeit fehlt bei Insane weil ich die Dateien gleich wieder gelöscht habe, wahrscheinlich aus Verpeilung weil ich seit Freitag nicht gepennt habe ;(
dürfte aber max 2x die Dekodierzeit von --best haben.

Zu meiner Verteidung (bzgl. der Geschwindigkeit) muss ich sagen das der Algorithmus nur auf Funktionsfähigkeit implementiert wurde.
In den letzten Tagen der aktiven Entwicklung habe ich um ein paar kb rauszuquetschen noch den Kodierer 2x langsamer gemacht :|
Trotzdem erstaunlich das Sac besser als OFR ist und nicht viel langsamer im Höchsten Modus, obwohl OFR SSE benutzt.

Damals habe ich auch noch nicht studiert, und würde wohl heute (mit Mathekenntnissen) Einiges anders realisieren.

Es zeigt sich allerdings das sich der Mehrwert kaum lohnt, da Sac praktisch versucht Rauschen kleiner zu machen. Auf einen Codec der Kompromissbereit ist hatte ich aber damals wie heute keine Lust.

Ich warte ja immernoch darauf das MS anruft und mir 2Mio € für Sac gibt :D - das steht dann auch auf meinem Grabstein

Hobby
2009-04-30, 10:23:10
X2 4600+ - 2x2400

Ronny G.
2009-04-30, 10:43:40
System:
Q9550 E0@3,825Ghz@1,288V, Asus P5Q Pro,
4GB DDR2 900Mhz 4-4-4-15,
GTX280@756/1627/1350Mhz FW182.08,
Audigy2zs, XP

1:35,329min
http://www.abload.de/img/sacg8aw.jpg

Frank1974
2009-05-19, 03:06:29
Vergleich Vista64 - Win7 64bit

Q9650@3807MHz[9x423], 2x2048MB@DDR2-846, 5-5-5-12-2T

Vista64 - 1:27.003
http://666kb.com/i/b91qiz61gyy4xnst1.png

Win7 - 1:26.957
http://666kb.com/i/b91qlponq5b6mftsl.png

mfg
Frank