Talk:Adaptive differential pulse-code modulation: Difference between revisions

Content deleted Content added
Cewbot (talk | contribs)
m Maintain {{WPBS}} and vital articles: 1 WikiProject template. Create {{WPBS}}. Keep majority rating "Start" in {{WPBS}}. Remove 1 same rating as {{WPBS}} in {{WikiProject Telecommunications}}.
 
(2 intermediate revisions by one other user not shown)
Line 1:
{{WikiProject Telecommunicationsbanner shell|class=Start}}|
{{WikiProject Telecommunications }}
 
}}
== All wrong? ==
 
Line 38 ⟶ 39:
::More to the point, why are each of you guys' words separated with a huge and variable number of spaces in the Wiki editor? Is this some kind of espionage stenography thing?
 
::Anyway, the second contributor was pretty much right to my knowledge (but for the guess at the magnitude of each value; it's closer to being + or - an entire bit of magnitude for each value of the nibble, with a bit of stretch as it would otherwise compromise the dynamic range and frequency, and there's no "zero", just a positive or negative minimum value; I expect the values are carefully chosen so any given value can be represented with a short string of differentials, and asymmetrically so you don't get stuck in a buzzing loop with a nonzero DC signal. Simply dividing down to 32768/8 would be no good, that'd give you an effective resolution no better than 4-bit PCM for maximum frequency tones, and a need to go to quite a low freq (about 500Hz, on a phone line) to get even 8-bit equivalent (and 9-bit would put you below the start of the 300Hz filter rolloff), but with a lot of additional artefact noise *added*)
::Anyway, the second contributor was pretty much right to my knowledge - it works somewhat like error diffusion dithering for images, which gives lower apparent "noise" and a smoother overall signal in that ___domain much like ADPCM does for audio, vs simply quantising the original with fewer bits. In images, the differential part is missing (though that would certainly be an interesting thing to try, it would, like ADPCM, be only really useful as a final step and have a lot of generational propagation error if you tried to edit and re-encode a decoded copy), but you get some of the adaptive part if using a custom palette tuned to the individual image. The algorithm picks the closest colour to the first pixel on a line, records the error between the two, then adds that to (averages it with?) the next original pixel and repeats the process until it reaches the end of the line. Possibly also doing it vertically for the first pixel of the next line at least (actual 2D diffusion across the whole image is something I haven't seen, and really you'd want it to be bidirectional which causes all kinds of extra processing headache).
 
::AnywayThat is, the second contributor was pretty much right to my knowledge - it works somewhat like error diffusion dithering for images, which gives lower apparent "noise" and a smoother overall signal in that ___domain much like ADPCM does for audio, vs simply quantising the original with fewer bits. In images, the differential part is missing (though that would certainly be an interesting thing to try, it would, like ADPCM, be only really useful as a final step and have a lot of generational propagation error if you tried to edit and re-encode a decoded copy), but you get some of the adaptive part if using a custom palette tuned to the individual image. The algorithm picks the closest colour to the first pixel on a line, records the error between the two, then adds that to (averages it with?) the next original pixel and repeats the process until it reaches the end of the line. Possibly also doing it vertically for the first pixel of the next line at least (actual 2D diffusion across the whole image is something I haven't seen, and really you'd want it to be bidirectional which causes all kinds of extra processing headache).
 
::From which you get a dithered appearance rather naturally, kind-of regular patterns across solid colours (if it wasn't possible to assign a palette value to that exact colour and the "reduce bleed" button isn't clicked to make the output snap completely to a palette colour if within a certain range), and, at least theoretically, large blocks of plain colour remaining as such (...ditto).