Kwantyzacja nieliniowa w kodekach PCM - A-law i ?-law w praktyce

kodek PCM





Poprzedni Następny
Wiadomość
Spis treści
From: "Adam Przybyłek" <adampap_at_nospam_panda.bg.univ.gda.pl>
Subject: kodek PCM
Date: Wed, 17 May 2006 23:54:38 +0200


1. Czy w kodekach PCM wykorzystywany jest kwantyzator nieliniowy, czy uklad
kompresji polaczony z kwantyzatorem liniowym?

2. Czy dobrze rozumiem, ze standardy A-law i mi-Law opisuja charakterystyke
kompresora, a nie kwantyzatora nieliniowego?

Adam




Poprzedni Następny
Wiadomość
Spis treści
From: "PAndy" <pandrw_at_nospam_poczta.onet.pl>
Subject: Re: kodek PCM
Date: Thu, 18 May 2006 09:08:18 +0200



"Adam Przybyłek" <adampap_at_nospam_panda.bg.univ.gda.pl> wrote in message
news:e4g66g$t20$1_at_nospam_news.task.gda.pl...
1. Czy w kodekach PCM wykorzystywany jest kwantyzator nieliniowy, czy
uklad
kompresji polaczony z kwantyzatorem liniowym?

Oba rozwiazania sa stosowane przy czym wspolczesnie zazwyczaj
przetwornik A/C jest liniowy a konwersja skali liniowej na uLaw/ALaw
zajmuje sie DSP.

2. Czy dobrze rozumiem, ze standardy A-law i mi-Law opisuja
charakterystyke
kompresora, a nie kwantyzatora nieliniowego?

Tak, ale mozliwe jest zastosowanie kwantyzatora (przetwornika A/C) o
charakterystyce nieliniowej


Poprzedni Następny
Wiadomość
Spis treści
From: "Adam Przybyłek" <adampap_at_nospam_panda.bg.univ.gda.pl>
Subject: Re: kodek PCM
Date: Thu, 18 May 2006 11:46:09 +0200



Użytkownik "PAndy" <pandrw_at_nospam_poczta.onet.pl> napisał w wiadomości
news:e4h6gu$2hn$1_at_nospam_news.dialog.net.pl...

"Adam Przybyłek" <adampap_at_nospam_panda.bg.univ.gda.pl> wrote in message
news:e4g66g$t20$1_at_nospam_news.task.gda.pl...
1. Czy w kodekach PCM wykorzystywany jest kwantyzator nieliniowy, czy
uklad
kompresji polaczony z kwantyzatorem liniowym?

Oba rozwiazania sa stosowane przy czym wspolczesnie zazwyczaj
przetwornik A/C jest liniowy a konwersja skali liniowej na uLaw/ALaw
zajmuje sie DSP.

Przy standardzie A-law czasmi podaja funkcje:
f(x)=A|x| / ( 1 + lnA ) dla |x| < 1/A
f(x)=sgn(x) * ( 1 + ln(A|x|) ) / ( 1 + lnA ) dla 1/A < |x| <= 1

A czasmi pisza, ze obszar zmiennosci dzielony jest na 16 segmentow (8
dodatnich i 8 ujemnych). Kazdy kolejny segment jest 2 razy dluzszy od
poprzedniego, wewnatrz segmentu kwantyzacja liniowa na 16 poziomach, itd.
Wiec ten podzial jest tylko przyblizeniem funkcji f(x).

Czy mam to rozumiec tak, ze funkcja f(x) opisuje charakterystyke kompresora,
ktory zrealizowany jest jako uklad analogowy. A z kolei podzial na segmenty
to stosowany jest w przypadku ukladu DSP?




Poprzedni Następny
Wiadomość
Spis treści
From: "PAndy" <pandrw_at_nospam_poczta.onet.pl>
Subject: Re: kodek PCM
Date: Thu, 18 May 2006 12:41:23 +0200



"Adam Przybyłek" <adampap_at_nospam_panda.bg.univ.gda.pl> wrote in message
news:e4hfsj$qn3$1_at_nospam_news.task.gda.pl...
Przy standardzie A-law czasmi podaja funkcje:
f(x)=A|x| / ( 1 + lnA ) dla |x| < 1/A
f(x)=sgn(x) * ( 1 + ln(A|x|) ) / ( 1 + lnA ) dla 1/A < |x| <= 1

A czasmi pisza, ze obszar zmiennosci dzielony jest na 16 segmentow (8
dodatnich i 8 ujemnych). Kazdy kolejny segment jest 2 razy dluzszy od
poprzedniego, wewnatrz segmentu kwantyzacja liniowa na 16 poziomach,
itd.
Wiec ten podzial jest tylko przyblizeniem funkcji f(x).

Czy mam to rozumiec tak, ze funkcja f(x) opisuje charakterystyke
kompresora,
ktory zrealizowany jest jako uklad analogowy. A z kolei podzial na
segmenty
to stosowany jest w przypadku ukladu DSP?

Moze to nie taka odpowiedz jakiej sie spodziewasz ale po prostu sprawdz
konkretne zrodla i algorytmy....
Jest wiele mozliwosci realizacji takiego kodeka.


Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_xnospamx_at_nospam_poczta.onet.pl>
Subject: Re: kodek PCM
Date: Thu, 18 May 2006 15:21:50 +0200


On Thu, 18 May 2006 11:46:09 +0200, Adam Przybyłek wrote:
Przy standardzie A-law czasmi podaja funkcje:
f(x)=A|x| / ( 1 + lnA ) dla |x| < 1/A
f(x)=sgn(x) * ( 1 + ln(A|x|) ) / ( 1 + lnA ) dla 1/A < |x| <= 1

A czasmi pisza, ze obszar zmiennosci dzielony jest na 16 segmentow (8
dodatnich i 8 ujemnych). Kazdy kolejny segment jest 2 razy dluzszy od
poprzedniego, wewnatrz segmentu kwantyzacja liniowa na 16 poziomach, itd.
Wiec ten podzial jest tylko przyblizeniem funkcji f(x).

Czy mam to rozumiec tak, ze funkcja f(x) opisuje charakterystyke kompresora,
ktory zrealizowany jest jako uklad analogowy. A z kolei podzial na segmenty
to stosowany jest w przypadku ukladu DSP?

DSP to szumne slowo - wystarczy dekoder i multiplekser, albo pamiec
ROM. I podejrzewam ze wszystkie implementacje tak wlasnie robia.
Zrobienie analogowego kompresora/ekspandera o precyzyjnej ch-ce
bedzie za trudne :-)

Jakbys nie patrzyl, to taka cyfrowa implementacje mozna traktowac
zarowno jako kompresor+DAC, jak i "nieliniowy DAC" - o ile to oznacza
to co sie domyslam :-)

A moze najlepsza nazwa to bylaby DAC+kompresor :-)

J.


Poprzedni Następny
Wiadomość
Spis treści
From: "PAndy" <pandrw_at_nospam_poczta.onet.pl>
Subject: Re: kodek PCM
Date: Fri, 19 May 2006 09:51:06 +0200



"J.F." <jfox_xnospamx_at_nospam_poczta.onet.pl> wrote in message
news:p0io62tsciidmt6it166p9kek737vffnv3_at_nospam_4ax.com...

DSP to szumne slowo - wystarczy dekoder i multiplekser, albo pamiec
ROM. I podejrzewam ze wszystkie implementacje tak wlasnie robia.
Zrobienie analogowego kompresora/ekspandera o precyzyjnej ch-ce
bedzie za trudne :-)

Jakbys nie patrzyl, to taka cyfrowa implementacje mozna traktowac
zarowno jako kompresor+DAC, jak i "nieliniowy DAC" - o ile to oznacza
to co sie domyslam :-)

A moze najlepsza nazwa to bylaby DAC+kompresor :-)

Szczegoly implementacji np tu:

http://focus.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=spra163a&fileType=pdf

zazwyczaj dekodowanie robi sie na LUT (8 bitow wchodzi a14/16 wychodzi)
bo potrzeba malo RAM a niektore procki maja nawet wbudowane w ROM dwa
LUT'y wlasnie do dekodowania uLaw/ALaw ale enkodowanie jest troche
bardziej skomplikowane...