AN OVERBROAD PATENT ON run-level encoding for video - This application from Cisco seeks to patent work that was previously published as open-source software! 10 minutes of your time can help narrow US patent applications before they become patents. Follow @askpatents on twitter to help.
Controversy is explained in full here:
QUESTION - Have you seen anything that was published before 12/30/2008 that discusses: Run-level coders for video
From x264.nl: A run-level coder is a function that takes an array of values and calculates the distances between nonzero values (runs) in the array, as well as the indices of the nonzero values (levels). This is necessary for practically any video format that makes use of run-level compression (H.264, MPEG-2, Theora, etc). Here's one of x264's unoptimized run-level coders.
This function is run often enough that high performance is very important. Naively, there is no obvious way to make use of SIMD in such an algorithm, so some trickery has to be used to write a fast assembly function for it. Near the end of 2008, I added optimized assembly implementations of two run-length coders (for block decimation and CAVLC) to x264.
So why the deja vu? Because this patent application was an exact, step-by-step description of the algorithm I came up with for decimate_score (and later coeff_level_run) in x264 in 2008!
- Publication Number: US 20100166076 A1
- Application Number: US 12/649,764
- Assignee: Tandberg Telecom (now Cisco)
- Prior Art Date: Seeking prior Art predating 12/30/2008
- Link to Google Prior Art Search - "Find Prior Art"
Claim 1 requires each and every step below:
A method for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture, the method comprising:
Packing, at a video processing apparatus, each quantized transform coefficients in a value interval [Max, Min] by setting all quantized transform coefficients greater than Max equal to Max, and all quantized transform coefficients less than Min equal to Min;
Reordering, at the video processing apparatus, the quantized transform coefficients according to a predefined order depending on respective positions in the block resulting in an array C of reordered quantized transform coefficients;
Masking, at the video processing apparatus, C by generating an array M containing ones in positions corresponding to positions of C having non-zero values, and zeros in positions corresponding to positions of C having zero values;
Generating, at the video processing apparatus, for each position containing a one in M, a run and a level representation by setting the level value equal to an occurring value in a corresponding position of C; and
Setting, at the video processing apparatus, for each position containing a one in M, the run value equal to the number of proceeding positions relative to a current position in M since a previous occurrence of one in M.