FFmpeg  4.0
Macros | Functions | Variables
intrax8dsp.c File Reference

IntraX8 frame subdecoder image manipulation routines. More...

#include "intrax8dsp.h"
#include "libavutil/common.h"

Go to the source code of this file.

Macros

#define area1   (0)
 
#define area2   (8)
 
#define area3   (8 + 8)
 
#define area4   (8 + 8 + 1)
 
#define area5   (8 + 8 + 1 + 8)
 
#define area6   (8 + 8 + 1 + 16)
 

Functions

static void x8_setup_spatial_compensation (uint8_t *src, uint8_t *dst, ptrdiff_t stride, int *range, int *psum, int edges)
 Collect statistics and prepare the edge pixels required by the other spatial compensation functions. More...
 
static void spatial_compensation_0 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_1 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_2 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_3 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_4 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_5 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_6 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_7 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_8 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_9 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_10 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void spatial_compensation_11 (uint8_t *src, uint8_t *dst, ptrdiff_t stride)
 
static void x8_loop_filter (uint8_t *ptr, const ptrdiff_t a_stride, const ptrdiff_t b_stride, int quant)
 
static void x8_h_loop_filter (uint8_t *src, ptrdiff_t stride, int qscale)
 
static void x8_v_loop_filter (uint8_t *src, ptrdiff_t stride, int qscale)
 
av_cold void ff_intrax8dsp_init (IntraX8DSPContext *dsp)
 

Variables

static const uint16_t zero_prediction_weights [64 *2]
 

Detailed Description

IntraX8 frame subdecoder image manipulation routines.

Definition in file intrax8dsp.c.

Macro Definition Documentation

◆ area1

#define area1   (0)

Definition at line 43 of file intrax8dsp.c.

Referenced by spatial_compensation_8(), and x8_setup_spatial_compensation().

◆ area2

#define area2   (8)

◆ area3

#define area3   (8 + 8)

◆ area4

#define area4   (8 + 8 + 1)

◆ area5

#define area5   (8 + 8 + 1 + 8)

Definition at line 47 of file intrax8dsp.c.

Referenced by x8_setup_spatial_compensation().

◆ area6

#define area6   (8 + 8 + 1 + 16)

Definition at line 48 of file intrax8dsp.c.

Referenced by spatial_compensation_4(), and x8_setup_spatial_compensation().

Function Documentation

◆ x8_setup_spatial_compensation()

static void x8_setup_spatial_compensation ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride,
int range,
int psum,
int  edges 
)
static

Collect statistics and prepare the edge pixels required by the other spatial compensation functions.

Parameters
srcpointer to the beginning of the processed block
dstpointer to emu_edge, edge pixels are stored the way other compensation routines do.
linesizebyte offset between 2 vertical pixels in the source image
rangepointer to the variable where the edge pixel range is to be stored (max-min values)
psumpointer to the variable where the edge pixel sum is to be stored
edgesInforms this routine that the block is on an image border, so it has to interpolate the missing edge pixels. and some of the edge pixels should be interpolated, the flag has the following meaning: 1 - mb_x==0 - first block in the row, interpolate area #1,#2,#3; 2 - mb_y==0 - first row, interpolate area #3,#4,#5,#6; note: 1|2 - mb_x==mb_y==0 - first block, use 0x80 value for all areas; 4 - mb_x>= (mb_width-1) last block in the row, interpolate area #5;

Definition at line 65 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_0()

static void spatial_compensation_0 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 163 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_1()

static void spatial_compensation_1 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 215 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_2()

static void spatial_compensation_2 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 226 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_3()

static void spatial_compensation_3 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 237 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_4()

static void spatial_compensation_4 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 248 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_5()

static void spatial_compensation_5 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 259 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_6()

static void spatial_compensation_6 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 274 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_7()

static void spatial_compensation_7 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 285 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_8()

static void spatial_compensation_8 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 300 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_9()

static void spatial_compensation_9 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 311 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_10()

static void spatial_compensation_10 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 322 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ spatial_compensation_11()

static void spatial_compensation_11 ( uint8_t src,
uint8_t dst,
ptrdiff_t  stride 
)
static

Definition at line 333 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ x8_loop_filter()

static void x8_loop_filter ( uint8_t ptr,
const ptrdiff_t  a_stride,
const ptrdiff_t  b_stride,
int  quant 
)
static

Definition at line 344 of file intrax8dsp.c.

Referenced by x8_h_loop_filter(), and x8_v_loop_filter().

◆ x8_h_loop_filter()

static void x8_h_loop_filter ( uint8_t src,
ptrdiff_t  stride,
int  qscale 
)
static

Definition at line 438 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ x8_v_loop_filter()

static void x8_v_loop_filter ( uint8_t src,
ptrdiff_t  stride,
int  qscale 
)
static

Definition at line 443 of file intrax8dsp.c.

Referenced by ff_intrax8dsp_init().

◆ ff_intrax8dsp_init()

av_cold void ff_intrax8dsp_init ( IntraX8DSPContext dsp)

Definition at line 448 of file intrax8dsp.c.

Referenced by ff_intrax8_common_init().

Variable Documentation

◆ zero_prediction_weights

const uint16_t zero_prediction_weights[64 *2]
static
Initial value:
= {
640, 640, 669, 480, 708, 354, 748, 257,
792, 198, 760, 143, 808, 101, 772, 72,
480, 669, 537, 537, 598, 416, 661, 316,
719, 250, 707, 185, 768, 134, 745, 97,
354, 708, 416, 598, 488, 488, 564, 388,
634, 317, 642, 241, 716, 179, 706, 132,
257, 748, 316, 661, 388, 564, 469, 469,
543, 395, 571, 311, 655, 238, 660, 180,
198, 792, 250, 719, 317, 634, 395, 543,
469, 469, 507, 380, 597, 299, 616, 231,
161, 855, 206, 788, 266, 710, 340, 623,
411, 548, 455, 455, 548, 366, 576, 288,
122, 972, 159, 914, 211, 842, 276, 758,
341, 682, 389, 584, 483, 483, 520, 390,
110, 1172, 144, 1107, 193, 1028, 254, 932,
317, 846, 366, 731, 458, 611, 499, 499,
}

Definition at line 144 of file intrax8dsp.c.

Referenced by spatial_compensation_0().