User Tools

Site Tools


atrac3p:serialized_envelope_x_coordinates

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
atrac3p:serialized_envelope_x_coordinates [2010/07/21 16:55] – Add bit layout megadiscmanatrac3p:serialized_envelope_x_coordinates [2010/10/25 11:32] (current) – Mode 3/master has bit count - 1 megadiscman
Line 12: Line 12:
  
 === 1 (on slave channel): Variable length encoding using difference to master channel === === 1 (on slave channel): Variable length encoding using difference to master channel ===
-The Y values for the envelopes in the slave channel are stored as variable-length-encoded differences to the Y-values of the master channel. If an envelope in the slave channel has more points than the corresponding envelope in the master channel, the missing values are assumed as 7. Difference application wraps around at 15. The slave channel should not have more envelopes than the master channel.+The X value for the first point is stored as difference to the X value of the first point in the master channel, assuming 0 if the master channel has no point; difference application wraps around after 31. This difference value is variable-length encoded. Each further X value that has an associated X value (with the same point number) in the master channel is encoded depending on whether it is an upwards or downwards step. For upwards stepsa bit indicates whether the X value should be cloned or it is stored like in mode 0, while for downwards step, the difference is stored to the master channel X value. The remaining template-less X values are encoded like in mode 1 on the master channel.
  
 === 2 (on master channel): Variable length encoding using difference between envelopes === === 2 (on master channel): Variable length encoding using difference between envelopes ===
-The first envelope is stored as in mode 0. The X coordinates of the later envelopes are stored as difference to the X coordinate of the corresponding point (with the same index) of the directly preceding envelope. In case that point is not present, it is assumed as zero for the first point in the envelope or as the previously read X value of the current envelope for later points.+The envelope for band 0 is stored as in mode 0 (that means: if band 0 has no envelope, no envelope is stored that way!). The X coordinates of the later envelopes are stored as difference to the X coordinate of the corresponding point (with the same index) of the directly preceding envelope. Application of deltas wraps around. Different trees are used for increasing or decreasing slope of the envelope, the first point is defined to be handled like on a decreasing slope. In case that the directly preceeding envelope has no point with the same index, it is assumed as zero for the first point in the envelope or as the previously read X value of the current envelope for later points.
  
 === 2 (on slave channel): Either VLC with difference between points or clone from master === === 2 (on slave channel): Either VLC with difference between points or clone from master ===
Line 55: Line 55:
 === Encoding mode 1 on slave channel: variable length encoding; difference to master === === Encoding mode 1 on slave channel: variable length encoding; difference to master ===
   * for each envelope with at least one point:   * for each envelope with at least one point:
-    * one code from [[envelope trees#delta x to master tree]]+    * one code from [[envelope trees#delta x to master tree]]
     * for each further point that has an associated master point     * for each further point that has an associated master point
       * if the associated Y coordinate is lower than the pevious Y coordinate       * if the associated Y coordinate is lower than the pevious Y coordinate
Line 71: Line 71:
   * First envelope as in mode 0   * First envelope as in mode 0
   * For each remaining envelope with at least one point   * For each remaining envelope with at least one point
 +    * one code from [[envelope x trees#delta x to previous band for decreasing y tree]]
     * for each further point that has an associated point in the previous band     * for each further point that has an associated point in the previous band
       * if the associated Y coordinate is lower than the pevious Y coordinate       * if the associated Y coordinate is lower than the pevious Y coordinate
-        * one code from [[envelope x trees#delta x to prev band down tree]]+        * one code from [[envelope x trees#delta x to previous band for decreasing y tree]]
       * otherwise, i.e. if the associated Y coordinate is higher than the previous Y coordinate       * otherwise, i.e. if the associated Y coordinate is higher than the previous Y coordinate
-        * one code from [[envelope x trees#delta x to prev band up tree]]+        * one code from [[envelope x trees#delta x to previous band for increasing y tree]]
     * for each remaining point (in excess of master points) (this is like mode1/master)     * for each remaining point (in excess of master points) (this is like mode1/master)
       * if the associated Y coordinate is lower than the previous Y coordinate       * if the associated Y coordinate is lower than the previous Y coordinate
Line 95: Line 96:
           * one code from the [[envelope x trees#delta x for increasing y tree]]           * one code from the [[envelope x trees#delta x for increasing y tree]]
 === Encoding mode 3 on master channel: base/difference === === Encoding mode 3 on master channel: base/difference ===
-  * 2 bits: diffence bit count (call it //n//)+  * 2 bits: diffence bit count - 1 (call it //n-1//)
   * 5 bits: base X position   * 5 bits: base X position
   * for each point in each envelope   * for each point in each envelope
     * //n// bits: difference between desired X coordinate and (base X coordinate + current point number in the envelope)     * //n// bits: difference between desired X coordinate and (base X coordinate + current point number in the envelope)
  
atrac3p/serialized_envelope_x_coordinates.1279731352.txt.gz · Last modified: 2010/07/21 16:55 by megadiscman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki