View Full Version : idee x fare un codec audio.
ciao, mi sono imbattuto in questa cosa, è da tempo che mi interesso di codec, mi piacerebbe farne uno, anche semplice che comprime poco nn importa che diventi l'mp5! :D
programmare so fare ci mancherebbe dopo tutti questi anni di studio qualcosa saprò pur fare :D, sono già riuscito a leggere un file audio, che è composto da numeri con segno interi a 2 byte. ecco mi piacerebbe ridurre la spazio occupato da questo torrente di numeri!
chi mi dà qualche consiglio?
In pratica quello che hai fatto è un lettore PCM a 2 byte... descrivi l'onda come una funzione del tempo e per ogni istante temporale dai il valore dell'onda... ho capito bene?
Un primo passo è codificare solo la differenza di altezza... in genere le onde sonore hanno carattere passabasso, variano poco nel tempo. Se hai mai visto l'onda in un programma di editing saprai che sale e scende abbastanza dolcemente. Essendo le variazioni piccole si possono usare meno bit. Fregatura: può succedere che l'onda si metta ad andare su e giù con grossi sbalzi... quindi il delta di altezza deve prevedere tutta la gamma di valori, ma se allochi ogni volta abbastanza bit da codificare i salti non ci guadagni nulla... quindi o n° di bit variabile oppure dei grossi sbalzi te ne freghi (tanto in genere non li senti) e accetti una piccola perdita di qualità.
Questo è (circa) il DPCM. Poi c'è il DM (perchè non usare un bit appena?) e poi la codifica per trasformate (quella di MP3 e di un casino di altri formati) etc... :D :D
franklar
21-08-2004, 21:03
uhm... c'è già una marea di formati migliori dell'mp3 e nonostante tutto l'mp3 regna ancora :(
potresti studiarti i sorgenti di qualche formato libero, come l'ogg vorbis. Magari potresti contribuire allo sviluppo delle nuove release, se sei in gamba saresti sicuramente utile a tutti noi migliorando un software libero, piuttosto che mettendone in circolo uno nuovo ( a meno che tu non abbia già in mente qualcosa di notevole )
ciao
edivad82
22-08-2004, 02:04
Originariamente inviato da khri81
ciao, mi sono imbattuto in questa cosa, è da tempo che mi interesso di codec, mi piacerebbe farne uno, anche semplice che comprime poco nn importa che diventi l'mp5! :D
programmare so fare ci mancherebbe dopo tutti questi anni di studio qualcosa saprò pur fare :D, sono già riuscito a leggere un file audio, che è composto da numeri con segno interi a 2 byte. ecco mi piacerebbe ridurre la spazio occupato da questo torrente di numeri!
chi mi dà qualche consiglio?
ecco :D adesso che sai l'informatica puoi impararti anche la matematica e la statistica ;) :D e poi al codec :p
Ho provato a vedere qualcosa della teoria dell'ogg vorbis (la documentazione sul sito è fatta benissimo) ma è una mazzata :eek:
Pesca una marea di idee dall'mp3 migliorandole e aggiungendo parecchia flessibilità (ad esempio gestisce n flussi separati, può codificare Dolby 5.1, 6.1 etc.. :D), per ora usa ancora trasformate coseno (MDCT precisamente) ma il formato file prevede un ulteriore livello per sfruttare le wavelet...
Prima ancora di una conoscenza dell'informatica per metterci le mani serve una solid preparazione in teoria dei segnali :p
franklar
22-08-2004, 18:16
Originariamente inviato da Banus
Prima ancora di una conoscenza dell'informatica per metterci le mani serve una solid preparazione in teoria dei segnali :p
esatto ! ;) quindi prima faccio l'esame e poi magari ti do una mano :D
cmq c'è anche il musepack, che sarebbe un'evoluzione diretta dell'mp3. Mi pare che sia sotto licenza LGPL, quindi dovresti poter vedere i sorgenti, ma poi non conosco le particolari condizioni di tale licenza
grazie a tutti delle risp, sinceramente di idee ne ho molte, il problema è sempre metterle in pratica.
l'idea di usare n° di bit variabile mi era balzata alla testa da subito, ma il prob è riconoscere correttamente una sequenza di n bit differente, all'interno di un file! ci ho provato ma con scarsi risultati, molte volte il prog sbaglia a riconoscere i numeri purtroppo.
teoria dei segnali, l'ho già fatta all'univ, xò anche li metterla in pratica è tutt'altro che facile, ho provato a fare un prog che esegue l'analisi di freq, ma è lento purtroppo, la fa correttamente ma è lento :( .
poi avevo pure pensato di usare propio i sorgenti di ogg e magari modificare qualcosa, innanzitutto imparare qualcosa e poi fare qualche modifica.
dove potrei trovare i sorgenti di ogg?
edivad82
22-08-2004, 20:29
Originariamente inviato da khri81
dove potrei trovare i sorgenti di ogg?
:mbe: e dove se non http://www.vorbis.com/ :D
Su http://www.xiph.org/ogg/vorbis/docs.html viene descritta la teoria che sta dietro a Vorbis e la struttura del file (ogg e vorbis). E' più facile da capire del puro codice.. ;)
Per l'analisi dei segnali avevi usato la FFT? in genere per segnali non troppo estesi si riesce a fare l'analisi in realtime (molti programmi di editing audio lo fanno). Comunque ci sono librerie già pronte e ottimizzate, per cui non vale neppure la pena scriversi il codice da capo. Su:
http://support.intel.com/support/performancetools/libraries/ipp/ia/win/install.htm
trovi un po' di librerie di analisi e processamento dei segnali ottimizzate per Intel :D
si fft, ho usato un prog che ho dovuto fare x teoria dei segnali, che x quanto il mio prog fosse uno dei migliori tra quelli del mio corso (nn x vantarmi :sofico: ), risulta lentuccio nn sto parlando di un 486, ma di un pentium 2.8 Ghz!!! è propio vero quando dicono che l'esperienza è meglio della scuola! :(
ho dato un occhiata alla teoria che ci sta dietro il codec ogg!!!
mi sento un idiota in senso buono, nemmeno tra 100 anni sarei riuscito a fare qualcosa del genere! li nn si tratta di conoscere l'informatica e la matematica e basta, li si tratta di avere due @@ cosi e sapere un pò di informatica, matematica, fisica, teoria dei segnali, elettronica, ecc. :(
spoonman
23-08-2004, 23:20
Originariamente inviato da khri81
ho dato un occhiata alla teoria che ci sta dietro il codec ogg!!!
mi sento un idiota in senso buono, nemmeno tra 100 anni sarei riuscito a fare qualcosa del genere! li nn si tratta di conoscere l'informatica e la matematica e basta, li si tratta di avere due @@ cosi e sapere un pò di informatica, matematica, fisica, teoria dei segnali, elettronica, ecc. :(
...psicoacustica...
spostato nella sezione + consona ;)
MOVED!!
>bYeZ<
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.