arm_jit_swscale.c File Reference

Include dependency graph for arm_jit_swscale.c:


Data Structures

struct  SwsContextArmJit

Defines

#define INSTRUCTIONS_CACHE_SIZE   32768
#define FMT_OMAPFB_YUV422   1
#define FMT_OMAPFB_YUV420   2
#define INTERPOLATE_COPY_FIRST   0
#define INTERPOLATE_AVERAGE_1_3   1
#define INTERPOLATE_AVERAGE_2_2   2
#define INTERPOLATE_AVERAGE_3_1   3
#define SRC_Y   0
#define SRC_U   1

Functions

void __clear_cache (char *beg, char *end)
static int get_pix (int quality, int orig_w, int dest_w, int x, int *p1, int *p2)
 Get two nearest pixels from the source image.
static uint32_t * generate_arm_cmd_ldrb_r_r_offs (uint32_t *cmdbuffer, int dstreg, int basereg, int offset)
static uint32_t * generate_arm_cmd_add_r_r_r_lsl (uint32_t *cmdbuffer, int dstreg, int r1, int r2, int r2_shift)
static uint32_t * generate_arm_cmd_mov_r_r_lsr (uint32_t *cmdbuffer, int dstreg, int r, int shift)
static uint32_t * generate_32bit_scaled_data_write (uint32_t *p, int quality, int orig_w, int dest_w, int buf1reg, int size1, int offs1, int buf2reg, int size2, int offs2, int buf3reg, int size3, int offs3, int buf4reg, int size4, int offs4)
 Generation of 32-bit output scaled data.
static int generate_yuv420p_to_yuyv422_line_scaler (uint32_t *cmdbuffer, int maxcmdcount, int orig_w, int dest_w, int quality)
 Scaler code should assume: r0 - y plane r1 - u plane r2 - v plane r3 - destination buffer r4 - result for storage into output buffer r5, r6 - source data for y1 calculation r7, r8 - source data for u calculation r9, r10 - source data for y2 calculation r11, r12 - source data for v calculation r14 (lr) - accumulator.
static int generate_yuv420p_to_yuv420_line_scaler (uint32_t *cmdbuffer, int maxcmdcount, int orig_w, int dest_w, int quality)
static struct SwsContextArmJitsws_arm_jit_create_scaler_internal (int source_w, int source_h, int target_w, int target_h, int quality, int fmt)
struct SwsContextArmJitsws_arm_jit_create_omapfb_yuv422_scaler (int source_w, int source_h, int target_w, int target_h, int quality)
struct SwsContextArmJitsws_arm_jit_create_omapfb_yuv420_scaler (int source_w, int source_h, int target_w, int target_h, int quality)
struct SwsContextArmJitsws_arm_jit_create_omapfb_yuv420_scaler_armv6 (int source_w, int source_h, int target_w, int target_h, int quality)
void sws_arm_jit_free (SwsContextArmJit *context)
static int sws_arm_jit_vscaleonly_internal (SwsContextArmJit *context, uint8_t *src[], int srcStride[], uint8_t *dst[], int dstStride[])
static int sws_arm_jit_scale_internal (SwsContextArmJit *context, uint8_t *src[], int srcStride[], uint8_t *dst[], int dstStride[])
int sws_arm_jit_scale (SwsContextArmJit *context, uint8_t *src[], int srcStride[], int y, int h, uint8_t *dst[], int dstStride[])

Define Documentation

#define FMT_OMAPFB_YUV420   2

#define FMT_OMAPFB_YUV422   1

#define INSTRUCTIONS_CACHE_SIZE   32768

#define INTERPOLATE_AVERAGE_1_3   1

Referenced by get_pix().

#define INTERPOLATE_AVERAGE_2_2   2

#define INTERPOLATE_AVERAGE_3_1   3

Referenced by get_pix().

#define INTERPOLATE_COPY_FIRST   0

#define SRC_U   1

#define SRC_Y   0


Function Documentation

void __clear_cache ( char *  beg,
char *  end 
)

static uint32_t* generate_32bit_scaled_data_write ( uint32_t *  p,
int  quality,
int  orig_w,
int  dest_w,
int  buf1reg,
int  size1,
int  offs1,
int  buf2reg,
int  size2,
int  offs2,
int  buf3reg,
int  size3,
int  offs3,
int  buf4reg,
int  size4,
int  offs4 
) [static]

Generation of 32-bit output scaled data.

Parameters:
quality - scaling quality level
buf1reg - register that holds a pointer to the buffer with data for the first output byte
buf2reg - register that holds a pointer to the buffer with data for the second output byte
buf3reg - register that holds a pointer to the buffer with data for the third output byte
buf4reg - register that holds a pointer to the buffer with data for the fourth output byte

References generate_arm_cmd_add_r_r_r_lsl(), generate_arm_cmd_ldrb_r_r_offs(), generate_arm_cmd_mov_r_r_lsr(), get_pix(), INTERPOLATE_AVERAGE_2_2, and INTERPOLATE_COPY_FIRST.

Referenced by generate_yuv420p_to_yuv420_line_scaler(), and generate_yuv420p_to_yuyv422_line_scaler().

static uint32_t* generate_arm_cmd_add_r_r_r_lsl ( uint32_t *  cmdbuffer,
int  dstreg,
int  r1,
int  r2,
int  r2_shift 
) [static]

static uint32_t* generate_arm_cmd_ldrb_r_r_offs ( uint32_t *  cmdbuffer,
int  dstreg,
int  basereg,
int  offset 
) [static]

static uint32_t* generate_arm_cmd_mov_r_r_lsr ( uint32_t *  cmdbuffer,
int  dstreg,
int  r,
int  shift 
) [static]

static int generate_yuv420p_to_yuv420_line_scaler ( uint32_t *  cmdbuffer,
int  maxcmdcount,
int  orig_w,
int  dest_w,
int  quality 
) [static]

static int generate_yuv420p_to_yuyv422_line_scaler ( uint32_t *  cmdbuffer,
int  maxcmdcount,
int  orig_w,
int  dest_w,
int  quality 
) [static]

Scaler code should assume: r0 - y plane r1 - u plane r2 - v plane r3 - destination buffer r4 - result for storage into output buffer r5, r6 - source data for y1 calculation r7, r8 - source data for u calculation r9, r10 - source data for y2 calculation r11, r12 - source data for v calculation r14 (lr) - accumulator.

Parameters:
cmdbuffer - bugger for dynamically generated code
Returns:
- number of instructions generated

References generate_32bit_scaled_data_write(), i, and INSTRUCTIONS_CACHE_SIZE.

Referenced by sws_arm_jit_create_scaler_internal().

static int get_pix ( int  quality,
int  orig_w,
int  dest_w,
int  x,
int *  p1,
int *  p2 
) [inline, static]

Get two nearest pixels from the source image.

Todo:
get rid of the floating point math

References INTERPOLATE_AVERAGE_1_3, INTERPOLATE_AVERAGE_2_2, INTERPOLATE_AVERAGE_3_1, and INTERPOLATE_COPY_FIRST.

Referenced by generate_32bit_scaled_data_write(), and sws_arm_jit_create_scaler_internal().

struct SwsContextArmJit* sws_arm_jit_create_omapfb_yuv420_scaler ( int  source_w,
int  source_h,
int  target_w,
int  target_h,
int  quality 
) [read]

struct SwsContextArmJit* sws_arm_jit_create_omapfb_yuv420_scaler_armv6 ( int  source_w,
int  source_h,
int  target_w,
int  target_h,
int  quality 
) [read]

struct SwsContextArmJit* sws_arm_jit_create_omapfb_yuv422_scaler ( int  source_w,
int  source_h,
int  target_w,
int  target_h,
int  quality 
) [read]

static struct SwsContextArmJit* sws_arm_jit_create_scaler_internal ( int  source_w,
int  source_h,
int  target_w,
int  target_h,
int  quality,
int  fmt 
) [static, read]

void sws_arm_jit_free ( SwsContextArmJit context  ) 

int sws_arm_jit_scale ( SwsContextArmJit context,
uint8_t *  src[],
int  srcStride[],
int  y,
int  h,
uint8_t *  dst[],
int  dstStride[] 
)

static int sws_arm_jit_scale_internal ( SwsContextArmJit context,
uint8_t *  src[],
int  srcStride[],
uint8_t *  dst[],
int  dstStride[] 
) [static]

static int sws_arm_jit_vscaleonly_internal ( SwsContextArmJit context,
uint8_t *  src[],
int  srcStride[],
uint8_t *  dst[],
int  dstStride[] 
) [static]


Generated on Tue May 25 08:05:30 2010 for VLC by  doxygen 1.5.6