FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
texturedsp.c File Reference
#include <stddef.h>
#include <stdint.h>
#include "libavutil/attributes.h"
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "texturedsp.h"

Go to the source code of this file.

Macros

#define RGBA(r, g, b, a)   ((r) | ((g) << 8) | ((b) << 16) | ((a) << 24))
 

Functions

static av_always_inline void extract_color (uint32_t colors[4], uint16_t color0, uint16_t color1, int dxtn, int alpha)
 
static void dxt1_block_internal (uint8_t *dst, ptrdiff_t stride, const uint8_t *block, uint8_t alpha)
 
static int dxt1_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a DXT1 texture and store the resulting RGBA pixels in 'dst'. More...
 
static int dxt1a_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a DXT1 with 1-bit alpha texture and store the resulting RGBA pixels in 'dst'. More...
 
static void dxt3_block_internal (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 
static av_always_inline void premult2straight (uint8_t *src)
 Convert a premultiplied alpha pixel to a straigth alpha pixel. More...
 
static int dxt2_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a DXT2 texture and store the resulting RGBA pixels in 'dst'. More...
 
static int dxt3_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a DXT3 texture and store the resulting RGBA pixels in 'dst'. More...
 
static void decompress_indices (uint8_t *dst, const uint8_t *src)
 Decompress a BC 16x3 index block stored as h g f e d c b a p o n m l k j i. More...
 
static void dxt5_block_internal (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 
static int dxt4_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a DXT4 texture and store the resulting RGBA pixels in 'dst'. More...
 
static int dxt5_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a DXT5 texture and store the resulting RGBA pixels in 'dst'. More...
 
static av_always_inline void ycocg2rgba (uint8_t *src, int scaled)
 Convert a YCoCg buffer to RGBA. More...
 
static int dxt5y_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a DXT5 texture with classic YCoCg and store the resulting RGBA pixels in 'dst'. More...
 
static int dxt5ys_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a DXT5 texture with scaled YCoCg and store the resulting RGBA pixels in 'dst'. More...
 
static void rgtc_block_internal (uint8_t *dst, ptrdiff_t stride, const uint8_t *block, const int *color_tab)
 
static void rgtc1_block_internal (uint8_t *dst, ptrdiff_t stride, const uint8_t *block, int sign)
 
static int rgtc1s_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a RGRC1 texture with signed components and store the resulting RGBA pixels in 'dst'. More...
 
static int rgtc1u_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a RGRC1 texture with unsigned components and store the resulting RGBA pixels in 'dst'. More...
 
static void rgtc2_block_internal (uint8_t *dst, ptrdiff_t stride, const uint8_t *block, int sign)
 
static int rgtc2s_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a RGRC2 texture with signed components and store the resulting RGBA pixels in 'dst'. More...
 
static int rgtc2u_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a RGRC2 texture with unsigned components and store the resulting RGBA pixels in 'dst'. More...
 
static int dxn3dc_block (uint8_t *dst, ptrdiff_t stride, const uint8_t *block)
 Decompress one block of a 3Dc texture with unsigned components and store the resulting RGBA pixels in 'dst'. More...
 
av_cold void ff_texturedsp_init (TextureDSPContext *c)
 

Macro Definition Documentation

#define RGBA (   r,
  g,
  b,
  a 
)    ((r) | ((g) << 8) | ((b) << 16) | ((a) << 24))

Definition at line 34 of file texturedsp.c.

Referenced by extract_color(), and rgtc_block_internal().

Function Documentation

static av_always_inline void extract_color ( uint32_t  colors[4],
uint16_t  color0,
uint16_t  color1,
int  dxtn,
int  alpha 
)
static

Definition at line 36 of file texturedsp.c.

Referenced by dxt1_block_internal(), dxt3_block_internal(), and dxt5_block_internal().

static void dxt1_block_internal ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block,
uint8_t  alpha 
)
inlinestatic

Definition at line 81 of file texturedsp.c.

Referenced by dxt1_block(), and dxt1a_block().

static int dxt1_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a DXT1 texture and store the resulting RGBA pixels in 'dst'.

Alpha component is fully opaque.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 111 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static int dxt1a_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a DXT1 with 1-bit alpha texture and store the resulting RGBA pixels in 'dst'.

Alpha is either fully opaque or fully transparent.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 128 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static void dxt3_block_internal ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
inlinestatic

Definition at line 135 of file texturedsp.c.

Referenced by dxt2_block(), and dxt3_block().

static av_always_inline void premult2straight ( uint8_t src)
static

Convert a premultiplied alpha pixel to a straigth alpha pixel.

Definition at line 167 of file texturedsp.c.

Referenced by dxt2_block(), and dxt4_block().

static int dxt2_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a DXT2 texture and store the resulting RGBA pixels in 'dst'.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 188 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static int dxt3_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a DXT3 texture and store the resulting RGBA pixels in 'dst'.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 212 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static void decompress_indices ( uint8_t dst,
const uint8_t src 
)
static

Decompress a BC 16x3 index block stored as h g f e d c b a p o n m l k j i.

Bits packed as | h | g | f | e | d | c | b | a | // Entry |765 432 107 654 321 076 543 210| // Bit |0000000000111111111112222222222| // Byte

into 16 8-bit indices.

Definition at line 233 of file texturedsp.c.

Referenced by dxt5_block_internal(), and rgtc_block_internal().

static void dxt5_block_internal ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
inlinestatic

Definition at line 249 of file texturedsp.c.

Referenced by dxt4_block(), dxt5_block(), dxt5y_block(), and dxt5ys_block().

static int dxt4_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a DXT4 texture and store the resulting RGBA pixels in 'dst'.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 307 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static int dxt5_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a DXT5 texture and store the resulting RGBA pixels in 'dst'.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 331 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static av_always_inline void ycocg2rgba ( uint8_t src,
int  scaled 
)
static

Convert a YCoCg buffer to RGBA.

Parameters
srcinput buffer.
scaledvariant with scaled chroma components and opaque alpha.

Definition at line 344 of file texturedsp.c.

Referenced by dxt5y_block(), and dxt5ys_block().

static int dxt5y_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a DXT5 texture with classic YCoCg and store the resulting RGBA pixels in 'dst'.

Alpha component is fully opaque.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 371 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static int dxt5ys_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a DXT5 texture with scaled YCoCg and store the resulting RGBA pixels in 'dst'.

Alpha component is fully opaque.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 395 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static void rgtc_block_internal ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block,
const int *  color_tab 
)
inlinestatic

Definition at line 410 of file texturedsp.c.

Referenced by rgtc1_block_internal().

static void rgtc1_block_internal ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block,
int  sign 
)
inlinestatic

Definition at line 434 of file texturedsp.c.

Referenced by rgtc1s_block(), rgtc1u_block(), and rgtc2_block_internal().

static int rgtc1s_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a RGRC1 texture with signed components and store the resulting RGBA pixels in 'dst'.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 483 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static int rgtc1u_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a RGRC1 texture with unsigned components and store the resulting RGBA pixels in 'dst'.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 499 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static void rgtc2_block_internal ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block,
int  sign 
)
inlinestatic

Definition at line 506 of file texturedsp.c.

Referenced by dxn3dc_block(), rgtc2s_block(), and rgtc2u_block().

static int rgtc2s_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a RGRC2 texture with signed components and store the resulting RGBA pixels in 'dst'.

Alpha is fully opaque.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 547 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static int rgtc2u_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a RGRC2 texture with unsigned components and store the resulting RGBA pixels in 'dst'.

Alpha is fully opaque.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 563 of file texturedsp.c.

Referenced by ff_texturedsp_init().

static int dxn3dc_block ( uint8_t dst,
ptrdiff_t  stride,
const uint8_t block 
)
static

Decompress one block of a 3Dc texture with unsigned components and store the resulting RGBA pixels in 'dst'.

Alpha is fully opaque.

Parameters
dstoutput buffer.
stridescanline in bytes.
blockblock to decompress.
Returns
how much texture data has been consumed.

Definition at line 579 of file texturedsp.c.

Referenced by ff_texturedsp_init().

av_cold void ff_texturedsp_init ( TextureDSPContext c)

Definition at line 595 of file texturedsp.c.

Referenced by dds_decode(), hap_init(), and txd_decode_frame().