Lines Matching defs:block

2  * Texture block compression
174 static unsigned int match_colors(const uint8_t *block, ptrdiff_t stride,
201 dots[k++] = block[0 + x * 4 + y * stride] * dirr +
202 block[1 + x * 4 + y * stride] * dirg +
203 block[2 + x * 4 + y * stride] * dirb;
237 static void optimize_colors(const uint8_t *block, ptrdiff_t stride,
253 const uint8_t *bp = &block[ch];
275 int r = block[x * 4 + stride * y + 0] - mu[0];
276 int g = block[x * 4 + stride * y + 1] - mu[1];
277 int b = block[x * 4 + stride * y + 2] - mu[2];
326 mind = maxd = block[0] * v_r + block[1] * v_g + block[2] * v_b;
327 minp = maxp = block;
330 int dot = block[x * 4 + y * stride + 0] * v_r +
331 block[x * 4 + y * stride + 1] * v_g +
332 block[x * 4 + y * stride + 2] * v_b;
336 minp = block + x * 4 + y * stride;
339 maxp = block + x * 4 + y * stride;
348 /* Try to optimize colors to suit block contents better, by solving
350 static int refine_colors(const uint8_t *block, ptrdiff_t stride,
372 r += block[0 + x * 4 + y * stride];
373 g += block[1 + x * 4 + y * stride];
374 b += block[2 + x * 4 + y * stride];
395 int r = block[0 + x * 4 + y * stride];
396 int g = block[1 + x * 4 + y * stride];
397 int b = block[2 + x * 4 + y * stride];
439 /* Check if input block is a constant color */
440 static int constant_color(const uint8_t *block, ptrdiff_t stride)
443 uint32_t first = AV_RL32(block);
447 if (first != AV_RL32(block + x * 4 + y * stride))
453 static void compress_color(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
457 int constant = constant_color(block, stride);
461 int r = block[0];
462 int g = block[1];
463 int b = block[2];
471 optimize_colors(block, stride, &max16, &min16);
473 mask = match_colors(block, stride, max16, min16);
478 refine = refine_colors(block, stride, &max16, &min16, mask);
481 mask = match_colors(block, stride, max16, min16);
487 /* Finally write the color block */
499 static void compress_alpha(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
510 mn = mx = block[3];
513 int val = block[3 + x * 4 + y * stride];
532 * fgiesen.wordpress.com/2009/12/15/dxt5-alpha-block-index-determination */
544 int alp = block[3 + x * 4 + y * stride] * 7 + bias;
593 * Compress one block of RGBA pixels in a DXT1 texture and store the
598 * @param block block to compress.
601 static int dxt1_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
603 compress_color(dst, stride, block);
609 * Compress one block of RGBA pixels in a DXT5 texture and store the
614 * @param block block to compress.
617 static int dxt5_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
619 compress_alpha(dst, stride, block);
620 compress_color(dst + 8, stride, block);
626 * Compress one block of RGBA pixels in a DXT5-YCoCg texture and store the
631 * @param block block to compress.
634 static int dxt5ys_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
642 rgba2ycocg(reorder + x * 4 + y * 16, block + x * 4 + y * stride);
651 * Compress one block of RGBA pixels in a RGTC1U texture and store the
656 * @param block block to compress.
659 static int rgtc1u_alpha_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
661 compress_alpha(dst, stride, block);