atarionline.pl LZ4 na atari - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthorxxl
    • CommentTime7 Oct 2013 zmieniony
     
    ->link<-

    napisalem dekompresor LZ4 pod xbiosa



    dekompresor jest dosc szybki, malo zajmuje (zalezy - ok. 140 bajtow), dane zrodlowe nie znajduja sie w pamieci tylko w pliku, dekompresor nie potrzebuje tez bufora, i wlasciwie nie zajmuje tez strony zero :-)
    • 2: CommentAuthormuffy
    • CommentTime7 Oct 2013
     
    Jako że w temacie kompresji (i dekompresji tudzież) utknąłem w pewnym momencie, a nie było jeszcze tej metody na A8, to zapytuję. Jaki jest stopień kompresji np. plików graficznych i tekstowych i ileż cykli potrzeba na dekompresję np. plik tekstowy czysty 760 bajtów. (jakikolwiek).
    No i czy jest jakaś wersja depakera LZ4 do osadzenia w 1 pliku z danymi i programem. (do dowolnego dosa)
    • 3:
       
      CommentAuthorlaoo
    • CommentTime7 Oct 2013
     
    Właśnie pracuję teraz nad ładowaniem core'a FPGA Rapidusa z flashu, którego jest 256 kB, a rdzeń zajmuje 340884 bajty :)
    Wymyśliłem do tego celu dedykowany format kompresji, ale zapałałem teraz nadzieją, że to będzie lepsze. Niestety nie jest. Może dlatego, że moja kompresja specjalizuje się w kompresowaniu dużych połaci bajtów $00 i $FF przy stosunkowo dużej powtarzalności blisko sąsiadujących bloków (takie są rdzenie FPGA).
    Mam dwa różne rdzenie, które mój kompresor (którego można jeszcze podrasować o parę procent) kompresuje do 39993 oraz 40437 bajtów. LZ4 zrobił z tego 44098 oraz 44731 bajtów. Dekompresja (332 kB) trwa dokładnie 2.5 sekundy. Używa 5 zmiennych na stronie zerowej oraz 256 bajtów bufora na "notatki".
    Podejrzewam jednak, że ten LZ4 wyjdzie na prowadzenie, gdy zawartość rdzenia się bardziej skomplikuje i będzie w środku mniej jednolitych bloków.
    • 4: CommentAuthorxxl
    • CommentTime7 Oct 2013
     
    stopien kompresji przykladowo:
    druid z 7684 do 5870
    jaskinia z 7684 do 4934
    loading z 7684 do 871
    mostek z 7684 do 3942
    portret z 7684 do 5832
    spoon z 7684 do 1090

    pod linkiem, ktory dalem masz LZ4 pod windowsa mozesz sprawdzic. w testach wychodzi ze ma jeden z najszybszych dekompresorow.
    • 5:
       
      CommentAuthorlaoo
    • CommentTime7 Oct 2013 zmieniony
     
    Poprawiam się i zwracam honor :) Zauważyłem, że kompresor ma opcję "High compression", która kompresuje do 32724 oraz 32895 bajtów.

    XXL: jakbym podesłał Ci pliczek byłbyś w stanie określić jak szybko twój dekompresor by go rozpakował? Dekompresja jest uproszczona, bo trzeba zapisywać do jednego rejestru, więc odpada zabawa w przesuwanie wskaźnika wyjściowego (ale to oznacza, że nie ma się historii rozkompresowanych danych).
    • 6: CommentAuthorxxl
    • CommentTime7 Oct 2013 zmieniony
     
    a dane zrodlowe gdzie leza, w pamieci czy na dysku?

    moge sprawdzic. mozesz go spakowac na najwyzszym stopniu kompresji.

    ---
    zaraz... to kupa. dekompresor jest szybki bo moze kopiowac to co wczesniej odpakowal - w Twoim przypadku raczej sie nie nadaje.
    • 7:
       
      CommentAuthorlaoo
    • CommentTime7 Oct 2013
     
    Tak właśnie myślałem, że potrzebuje jednak jakiegoś bufora :)
    Teoretycznie można byłoby dzielić rdzeń na bloki po np. 16 kB i trzymać rozpakowany wynik w pamięci, ale to już bardzo komplikowałoby sprawę i obniżało poziom kompresji.

    W każdym bądź razie wysłałem Ci info na maila. Przyjrzę się temu formatowi. Może da się coś z niego wycisnąć.
    • 8: CommentAuthorpin
    • CommentTime7 Oct 2013
     
    ... przepraszam, że wtrącę niepotrzebną dygresję w ten wątek ale uważam że w znacznej części użycie dekompresora w przypadku A8 to (nie biorąc pod uwagę SIO) to strata czasu. Załadowanie takiego obrazka może zająć w najgorszym przypadku 0.1s (PBI). Chyba, że komuś faktycznie zależy, by ugnieść się w 64k i by chodziło to sensownie ze stacji. W takim przypadku tematu nie było ;)
    • 9: CommentAuthorxxl
    • CommentTime8 Oct 2013
     
    Z tym dekompresorem na twoim sprzecie nadal bedzie sie ladowal w 0.1 s, ale oprocz tego zmiesci sie na karcie, a jak ktos bedzie chcial to i na dyskietce a przy okazji zaladuje sie szybciej :)
    • 10:
       
      CommentAuthorxeen
    • CommentTime8 Oct 2013
     
    \o/

    To daje sporo nowych możliwości. Chylę czoła.
    • 11: CommentAuthorxxl
    • CommentTime8 Oct 2013
     
    Fox robil kiedys testy exomizera i deflatera ->link<-
    dzis w takich samych warunkach przeprowadzilem testy LZ4

    gpl3.txt - 35147 bajtów

    exomizer - 12382 bajty + depaker 1 strona =~ 12.3 KB, rozpakowanie 128 ramek (2.6 sekundy)

    deflate - 11559 bajtów + depaker 2 strony =~ 11.8 KB, rozpakowanie 179 ramek (3.6 sekundy)

    LZ4 - 15622 bajtow + depaker <150 bajtow =~ 15.3 KB, rozpakowanie 55 ramek (1,1 sekundy)
    • 12: CommentAuthor0xF
    • CommentTime8 Oct 2013
     
    Możnaby jeszcze spróbować Snappy
    • 13: CommentAuthorpin
    • CommentTime8 Oct 2013
     
    @XXL - no to jeśli to jest aż tak szybkie, to zwracam honor, bo faktycznie w przypadku carta ma to znaczenie ze względu na jego pojemność.
    • 14: CommentAuthorxxl
    • CommentTime10 Oct 2013
     
    dekompresor ma 132 bajty

    ->link<-
    • 15:
       
      CommentAuthorjhusak
    • CommentTime11 Oct 2013 zmieniony
     
    A kiedy będzie 128?

    A tak naprawdę to świetna nowina!

    Jaka była rola 0xF w projekcie?
    • 16: CommentAuthor0xF
    • CommentTime11 Oct 2013
     
    Cięcie bajtów i cykli. :)
    • 17: CommentAuthorxxl
    • CommentTime11 Oct 2013
     
    > A kiedy będzie 128?

    jesli umiescisz procke na stronie zero to zajmie 118 bajtow ;-)
    • 18: CommentAuthor0xF
    • CommentTime11 Oct 2013
     
    Nie trzeba tak radykalnie. Gdyby użyć zmiennych na stronie zero, np. src i token, to już by pewnie weszło w 128.
    • 19: CommentAuthorxxl
    • CommentTime11 Oct 2013
     
    przyklad uzycia: ->link<-
    • 20: CommentAuthornodez
    • CommentTime11 Oct 2013 zmieniony
     
    z tego co wiem to bracia komodorowcy juz sie tym lz4 zainteresowali :)
    • 21: CommentAuthorwegi
    • CommentTime24 Jan 2015
     
    Podziękowania za udostępnienie depakera lz4. W zamian załączam testy kilku cruncherów na moim wrednym pliku. Do odtworzenia przykładów z d64 potrzebny będzie Hoxs64 lub Vice z włączoną true drive emulation. Co do krótkości depakera nadmienię że to trochę ściemnianie, bo np. Do bongo najkrótsza wersja zajęła mi zdaje się $d4 bajtów i dalej można by go skracać gdyby założyć że dane są RAW. Niemniej jednak gdzieś trzeba podać depack addres, ustawić pointery. Czy robi to depaker, czy user i tak zejdzie na to kilka bajtów, ja wolę wygodę i jak mam plik spakowany, to już się nie interesuję gdzie go zdepakować, to zmartwienie depakera.