[zxspectrum] Re: Perche` non turbo con decompressore Huffman?

  • From: Stefano Bodrato <stefano_bodrato@xxxxxxxxxxx>
  • To: "zxspectrum@xxxxxxxxxxxxx" <zxspectrum@xxxxxxxxxxxxx>
  • Date: Thu, 21 Feb 2013 12:05:19 +0100

>> il WAV di Jet Set Willy X lo trovi alla pagina dedicata 
>> http://ronja.twibright.com/jswx.php. Il loader implementa "solo" la 
>> codifica Manchester inversa che, stando a quanto scritto nei sorgenti, 
>> raggiunge i 16000 baud.
>> Il mio prototipo invece non l'ho ancora pubblicato... :(
 >
>16000 bauds sono davvero tanti, ma per questa velocita` hai bisogno di 
>un file wav da almeno 64000 campioni/sec. (Il file wav presente sul sito 
>e` a 96000 campioni/secondo.)
>Per i CD la velocita` massima probabilmente e` 11025 bauds.

Ma che meraviglia !
Effettivamente mi sembra che qui si siano spinti molto vicino al limite teorico.
Il wav è di 96000 campioni al secondo, giusto ?  Quindi sui CD non dovrebbe 
poter funzionare.
(   .. ne approfitto per rettificare.. i wav su cui lavoro io sono 
effettivamente di 44.100 a 8 bit, i tool con cui li ho maneggiati mi avevano 
confuso. )
Mi sembra che anche qui vengano usati tre stati, 2 semionde corte, una semionda 
corta e una lunga, due semionde lunghe.
La semionda corta pesa 3 campioni, quella lunga 6.  Considerato che il bit più 
veloce è di sei campioni: 96000/6 = 16000.. il conto è presto fatto.
Altra prova.. se il blocco dati è di 38K e lo stream dura 20 secondi.. la prova 
dei fatti direbbe che filiamo a 15000: un risultato di tutto rispetto !
Continuo però a pensare che il grosso dei numeri sia ottenuto con la forza 
bruta, ovvero strozzando i periodi del povero wav al limite estremo (se non mi 
confondo la frequenza più acuta è appunto di 16khz)
Volendo fare una previsione, con 4 campioni per un periodo completo i CD (44100 
campioni) potrebbero raggiungere in proporzione 10000 baud a parità di 
codifica.  La durata del flusso x il programma principale salirebbe a 30 
secondi.   Il file TAP è corrotto, quindi non posso applicare appmake alla 
cieca per fare un paragone; ma mi aspetterei un valore vicino ai 50 secondi, ma 
dipende molto da quando verrebbe compresso il blocco dati  ;)
 
 
>La parte "positiva" della velocita` da CD e` pero` che ci sono piu` di 
>100 cicli di CPU persi dall'algoritmo, che sembrano sufficienti per la 
>decompressione Huffman. Secondo dei miei calcoli approssimativi, 320 
>kbit (40kbytes) a 16000 bauds richiedono 20 secondi. Con la compressione 
>i 320 kbit diventano ~200kbit, che a 11025 bauds sono 18 secondi!
> 
>(Se poi si riuscisse a usare 4 simboli, anche se due piu` lenti, si 
>potrebbero ottenere 12.7 secondi... sogno?)

Oppure si potrebbe tentare di spingere la frequenza di picco con una semionda a 
20khz e una a 10khz, credo che lo spazio disponibile per i cicli macchina tra i 
due fronti sia sbilanciato  :P
 
 

                                          

Other related posts: