=============================================
-SNOW Video Codec Specification Draft 20070103
+Snow Video Codec Specification Draft 20080110
=============================================
-Intro:
-======
-This Specification describes the snow syntax and semmantics as well as
-how to decode snow.
-The decoding process is precissely described and any compliant decoder
-MUST produce the exactly same output for a spec conformant snow stream.
-For encoding though any process which generates a stream compliant to
-the syntactical and semmantical requirements and which is decodeable by
+Introduction:
+=============
+This specification describes the Snow bitstream syntax and semantics as
+well as the formal Snow decoding process.
+
+The decoding process is described precisely and any compliant decoder
+MUST produce the exact same output for a spec-conformant Snow stream.
+For encoding, though, any process which generates a stream compliant to
+the syntactical and semantic requirements and which is decodable by
the process described in this spec shall be considered a conformant
-snow encoder.
+Snow encoder.
Definitions:
============
Range Coder:
============
-FIXME
+
+Binary Range Coder:
+-------------------
The implemented range coder is an adapted version based upon "Range encoding:
an algorithm for removing redundancy from a digitised message." by G. N. N.
Martin.
-The symbols encoded by the ffmpeg range coder are bits (0|1). The
+The symbols encoded by the Snow range coder are bits (0|1). The
associated probabilities are not fix but change depending on the symbol mix
seen so far.
bit seen | new state
----------+--------------------------------------------
+---------+-----------------------------------------------
0 | 256 - state_transition_table[256 - old_state];
1 | state_transition_table[ old_state];
226, 227, 227, 229, 229, 230, 231, 232, 234, 234, 235, 236, 237, 238, 239, 240,
241, 242, 243, 244, 245, 246, 247, 248, 248, 0, 0, 0, 0, 0, 0, 0};
+FIXME
+
+
+Range Coding of integers:
+-------------------------
+FIXME
+
Neighboring Blocks:
===================
up to 4 surrounding halfpel and fullpel points, again rounding should be to
nearest and halfway values rounded up
-compliant snow decoders MUST support 1-1/8 pel luma and 1/2-1/16 pel chroma
+compliant Snow decoders MUST support 1-1/8 pel luma and 1/2-1/16 pel chroma
interpolation at least
| + | + | + | + +1/2
-snows 9/7 Integer filter:
+Snow's 9/7 Integer filter:
1. s[i] -= (3*(s[i-1] + s[i+1]) + 4)>>3; for all even i < w
2. s[i] -= s[i-1] + s[i+1] ; for all odd i < w
3. s[i] += ( s[i-1] + s[i+1] + 4*s[i] + 8)>>4; for all even i < w