I am trying to understand a piece of coding technology and place it in its context, but I am unable to find any literature on the subject. It would be much appreciated if someone could point me in the right direction.

The technology relates to data (such as audio) encoding using differential pulse code modulation. I understand that it can be beneficial to use differential encoding if the difference between a list of values is rather small. With differential encoding, only the differences need to be encoded (which can save data, especially if the original values itself are large). I also understand that such a system can be improved further if the differential indices are encoded using Huffman encoding.

I am looking into optimizations that can be carried out on the differential values. For a frequency representation, for instance, there may be a lot of low original values after each other (and thus low differential values), but also a few high ones spaced apart, e.g. if the signal is harmonic. These high values will cause the corresponding differential values to be large too. That is because a high value between a number of low values requires a large positive differential value and a large negative value in order to represent the peak.

Encoding these large values is not efficient (encoding large values generally cost more bits). I understand that it may be possible to modify these differential values, so that the second differential value needed to represent a peak (i.e. the negative differential value) is algorithmically reduced in size (i.e. the negative value is increased, so that its absolute value is smaller).

I learned that this is done by checking whether a given differential value lies above a certain threshold (then there is a peak), and then adding a certain value to the next differential value (and thus making the next differential value less negative / a smaller absolute value).

The fun part is that this trick is lossless. If the modified differential values are stored/sent and are subsequently decoded, it is possible to obtain the original differential values: the decoder also checks in the same order whether a signaled (modified) differential value lies above a certain threshold. If it does, then the modification was applied in the encoder. Therefore, the decoder then reverses the operation, i.e. subtract a certain value from the next differential value. In doing so, it obtains the original differential value. This process is carried out for all values.

I am wondering if this kind of operation has a name and where I can find relevant literature on the subject. Any pointers in the right direction would be greatly appreciated!

Best regards, Sano



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.