libavfilter/libmpcodecs/vf_fspp.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <math.h>
#include "config.h"
#include "mp_msg.h"
#include "cpudetect.h"
#include "img_format.h"
#include "mp_image.h"
#include "vf.h"
#include "vd_ffmpeg.h"
#include "libvo/fastmemcpy.h"
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "libavcodec/avcodec.h"
#include "libavcodec/dsputil.h"

Go to the source code of this file.

Data Structures

struct  vf_priv_s
 Stores persistant variables. More...

Defines

#define BLOCKSZ   12
#define store_slice_s   store_slice_mmx
#define store_slice2_s   store_slice2_mmx
#define mul_thrmat_s   mul_thrmat_mmx
#define column_fidct_s   column_fidct_mmx
#define row_idct_s   row_idct_mmx
#define row_fdct_s   row_fdct_mmx
#define DCTSIZE   8
#define DCTSIZE_S   "8"
#define FIX(x, s)   ((int) ((x) * (1<<s) + 0.5)&0xffff)
#define C64(x)   ((uint64_t)((x)|(x)<<16))<<32 | (uint64_t)(x) | (uint64_t)(x)<<16
#define FIX64(x, s)   C64(FIX(x,s))
#define MULTIPLY16H(x, k)   (((x)*(k))>>16)
#define THRESHOLD(r, x, t)   if(((unsigned)((x)+t))>t*2) r=(x);else r=0;
#define DESCALE(x, n)   (((x) + (1 << ((n)-1))) >> n)

Functions

static void store_slice_mmx (uint8_t *dst, int16_t *src, long dst_stride, long src_stride, long width, long height, long log2_scale)
static void store_slice2_mmx (uint8_t *dst, int16_t *src, long dst_stride, long src_stride, long width, long height, long log2_scale)
static void mul_thrmat_mmx (struct vf_priv_s *p, int q)
static void column_fidct_mmx (int16_t *thr_adr, DCTELEM *data, DCTELEM *output, int cnt)
static void row_idct_mmx (DCTELEM *workspace, int16_t *output_adr, int output_stride, int cnt)
static void row_fdct_mmx (DCTELEM *data, const uint8_t *pixels, int line_size, int cnt)
static void filter (struct vf_priv_s *p, uint8_t *dst, uint8_t *src, int dst_stride, int src_stride, int width, int height, uint8_t *qp_store, int qp_stride, int is_luma)
static int config (struct vf_instance *vf, int width, int height, int d_width, int d_height, unsigned int flags, unsigned int outfmt)
static void get_image (struct vf_instance *vf, mp_image_t *mpi)
static int put_image (struct vf_instance *vf, mp_image_t *mpi, double pts)
static void uninit (struct vf_instance *vf)
static int query_format (struct vf_instance *vf, unsigned int fmt)
static int control (struct vf_instance *vf, int request, void *data)
static int vf_open (vf_instance_t *vf, char *args)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_0_382683433)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_0_541196100)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_0_707106781)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_1_306562965)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_1_414213562_A)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_1_847759065)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_2_613125930)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_1_414213562)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_1_082392200)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_0_847759065)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_0_566454497)
 DECLARE_ASM_CONST (8, uint64_t, MM_FIX_0_198912367)
 DECLARE_ASM_CONST (8, uint64_t, MM_DESCALE_RND)
 DECLARE_ASM_CONST (8, uint64_t, MM_2)

Variables

static const short custom_threshold [64]
static const uint8_t dither [8][8]
const vf_info_t vf_info_fspp


Define Documentation

#define BLOCKSZ   12

Definition at line 61 of file vf_fspp.c.

Referenced by filter().

#define C64 (  )     ((uint64_t)((x)|(x)<<16))<<32 | (uint64_t)(x) | (uint64_t)(x)<<16

Definition at line 703 of file vf_fspp.c.

#define column_fidct_s   column_fidct_mmx

Definition at line 404 of file vf_fspp.c.

Referenced by filter().

#define DCTSIZE   8

Definition at line 699 of file vf_fspp.c.

#define DCTSIZE_S   "8"

Definition at line 700 of file vf_fspp.c.

Referenced by column_fidct_mmx(), row_fdct_mmx(), and row_idct_mmx().

#define DESCALE ( x,
 )     (((x) + (1 << ((n)-1))) >> n)

Definition at line 708 of file vf_fspp.c.

#define FIX ( x,
 )     ((int) ((x) * (1<<s) + 0.5)&0xffff)

Definition at line 702 of file vf_fspp.c.

#define FIX64 ( x,
 )     C64(FIX(x,s))

Definition at line 704 of file vf_fspp.c.

#define mul_thrmat_s   mul_thrmat_mmx

Definition at line 403 of file vf_fspp.c.

Referenced by filter(), and vf_open().

#define MULTIPLY16H ( x,
 )     (((x)*(k))>>16)

Definition at line 706 of file vf_fspp.c.

#define row_fdct_s   row_fdct_mmx

Definition at line 406 of file vf_fspp.c.

Referenced by filter().

#define row_idct_s   row_idct_mmx

Definition at line 405 of file vf_fspp.c.

Referenced by filter().

#define store_slice2_s   store_slice2_mmx

Definition at line 402 of file vf_fspp.c.

Referenced by filter().

#define store_slice_s   store_slice_mmx

Definition at line 401 of file vf_fspp.c.

Referenced by filter().

#define THRESHOLD ( r,
x,
t   )     if(((unsigned)((x)+t))>t*2) r=(x);else r=0;

Definition at line 707 of file vf_fspp.c.


Function Documentation

static void column_fidct_mmx ( int16_t thr_adr,
DCTELEM data,
DCTELEM output,
int  cnt 
) [static]

Definition at line 873 of file vf_fspp.c.

static int config ( struct vf_instance vf,
int  width,
int  height,
int  d_width,
int  d_height,
unsigned int  flags,
unsigned int  outfmt 
) [static]

Definition at line 489 of file vf_fspp.c.

static int control ( struct vf_instance vf,
int  request,
void *  data 
) [static]

Definition at line 613 of file vf_fspp.c.

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_2   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_DESCALE_RND   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_198912367   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_566454497   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_847759065   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_082392200   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_414213562   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_2_613125930   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_847759065   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_414213562_A   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_306562965   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_707106781   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_541196100   
)

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_382683433   
)

static void filter ( struct vf_priv_s p,
uint8_t *  dst,
uint8_t *  src,
int  dst_stride,
int  src_stride,
int  width,
int  height,
uint8_t *  qp_store,
int  qp_stride,
int  is_luma 
) [static]

Definition at line 409 of file vf_fspp.c.

static void get_image ( struct vf_instance vf,
mp_image_t mpi 
) [static]

Definition at line 503 of file vf_fspp.c.

static void mul_thrmat_mmx ( struct vf_priv_s p,
int  q 
) [static]

Definition at line 318 of file vf_fspp.c.

static int put_image ( struct vf_instance vf,
mp_image_t mpi,
double  pts 
) [static]

Definition at line 521 of file vf_fspp.c.

static int query_format ( struct vf_instance vf,
unsigned int  fmt 
) [static]

Definition at line 594 of file vf_fspp.c.

static void row_fdct_mmx ( DCTELEM data,
const uint8_t *  pixels,
int  line_size,
int  cnt 
) [static]

Definition at line 1940 of file vf_fspp.c.

static void row_idct_mmx ( DCTELEM workspace,
int16_t output_adr,
int  output_stride,
int  cnt 
) [static]

Definition at line 1673 of file vf_fspp.c.

static void store_slice2_mmx ( uint8_t *  dst,
int16_t src,
long  dst_stride,
long  src_stride,
long  width,
long  height,
long  log2_scale 
) [static]

Definition at line 251 of file vf_fspp.c.

static void store_slice_mmx ( uint8_t *  dst,
int16_t src,
long  dst_stride,
long  src_stride,
long  width,
long  height,
long  log2_scale 
) [static]

Definition at line 183 of file vf_fspp.c.

Referenced by vf_open().

static void uninit ( struct vf_instance vf  )  [static]

Definition at line 575 of file vf_fspp.c.

static int vf_open ( vf_instance_t vf,
char *  args 
) [static]

Definition at line 626 of file vf_fspp.c.


Variable Documentation

const short custom_threshold[64] [static]

Initial value:




{ 71, 296, 295, 237,  71,  40,  38,  19,
  245, 193, 185, 121, 102,  73,  53,  27,
  158, 129, 141, 107,  97,  73,  50,  26,
  102, 116, 109,  98,  82,  66,  45,  23,
  71,  94,  95,  81,  70,  56,  38,  20,
  56,  77,  74,  66,  56,  44,  30,  15,
  38,  53,  50,  45,  38,  30,  21,  11,
  20,  27,  26,  23,  20,  15,  11,   5
}

Definition at line 63 of file vf_fspp.c.

Referenced by vf_open().

const uint8_t dither[8][8] [static]

Initial value:

{
    {  0,  48,  12,  60,   3,  51,  15,  63, },
    { 32,  16,  44,  28,  35,  19,  47,  31, },
    {  8,  56,   4,  52,  11,  59,   7,  55, },
    { 40,  24,  36,  20,  43,  27,  39,  23, },
    {  2,  50,  14,  62,   1,  49,  13,  61, },
    { 34,  18,  46,  30,  33,  17,  45,  29, },
    { 10,  58,   6,  54,   9,  57,   5,  53, },
    { 42,  26,  38,  22,  41,  25,  37,  21, },
}

Definition at line 77 of file vf_fspp.c.

Referenced by ac3_decode_transform_coeffs_ch(), filter(), render_charset(), rv40_loop_filter(), store_slice2_mmx(), store_slice_c(), store_slice_mmx(), and yuv2yuvX_TMPL().

Initial value:

 {
    "fast simple postprocess",
    "fspp",
    "Michael Niedermayer, Nikolaj Poroshin",
    "",
    vf_open,
    NULL
}

Definition at line 682 of file vf_fspp.c.


Generated on Fri Oct 26 02:43:51 2012 for FFmpeg by  doxygen 1.5.8