FFmpeg
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
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 "av_helpers.h"
#include "libvo/fastmemcpy.h"
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "libavutil/x86/asm.h"
#include "libavcodec/avcodec.h"
#include "libavcodec/dsputil.h"

Go to the source code of this file.

Data Structures

struct  vf_priv_s
 

Macros

#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, int16_t *data, int16_t *output, int cnt)
 
static void row_idct_mmx (int16_t *workspace, int16_t *output_adr, int output_stride, int cnt)
 
static void row_fdct_mmx (int16_t *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_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 ff_vf_info_fspp
 
uint64_t ff_MM_FIX_0_541196100 =FIX64(0.541196100, 14)
 
uint64_t ff_MM_FIX_0_707106781 =FIX64(0.707106781, 14)
 

Macro Definition Documentation

#define BLOCKSZ   12

Definition at line 62 of file vf_fspp.c.

Referenced by filter().

#define store_slice_s   store_slice_mmx

Definition at line 402 of file vf_fspp.c.

Referenced by filter().

#define store_slice2_s   store_slice2_mmx

Definition at line 403 of file vf_fspp.c.

Referenced by filter().

#define mul_thrmat_s   mul_thrmat_mmx

Definition at line 404 of file vf_fspp.c.

Referenced by filter(), and vf_open().

#define column_fidct_s   column_fidct_mmx

Definition at line 405 of file vf_fspp.c.

Referenced by filter().

#define row_idct_s   row_idct_mmx

Definition at line 406 of file vf_fspp.c.

Referenced by filter().

#define row_fdct_s   row_fdct_mmx

Definition at line 407 of file vf_fspp.c.

Referenced by filter().

#define DCTSIZE   8

Definition at line 700 of file vf_fspp.c.

#define DCTSIZE_S   "8"

Definition at line 701 of file vf_fspp.c.

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

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

Definition at line 703 of file vf_fspp.c.

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

Definition at line 704 of file vf_fspp.c.

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

Definition at line 705 of file vf_fspp.c.

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

Definition at line 707 of file vf_fspp.c.

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

Definition at line 708 of file vf_fspp.c.

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

Definition at line 709 of file vf_fspp.c.

Function Documentation

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 184 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 252 of file vf_fspp.c.

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

Definition at line 319 of file vf_fspp.c.

static void column_fidct_mmx ( int16_t *  thr_adr,
int16_t *  data,
int16_t *  output,
int  cnt 
)
static

Definition at line 874 of file vf_fspp.c.

static void row_idct_mmx ( int16_t *  workspace,
int16_t *  output_adr,
int  output_stride,
int  cnt 
)
static

Definition at line 1674 of file vf_fspp.c.

static void row_fdct_mmx ( int16_t *  data,
const uint8_t pixels,
int  line_size,
int  cnt 
)
static

Definition at line 1941 of file vf_fspp.c.

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 410 of file vf_fspp.c.

Referenced by put_image().

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 490 of file vf_fspp.c.

Referenced by vf_open().

static void get_image ( struct vf_instance *  vf,
mp_image_t mpi 
)
static

Definition at line 504 of file vf_fspp.c.

Referenced by vf_open().

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

Definition at line 522 of file vf_fspp.c.

Referenced by vf_open().

static void uninit ( struct vf_instance *  vf)
static

Definition at line 576 of file vf_fspp.c.

Referenced by vf_open().

static int query_format ( struct vf_instance *  vf,
unsigned int  fmt 
)
static

Definition at line 595 of file vf_fspp.c.

Referenced by vf_open().

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

Definition at line 614 of file vf_fspp.c.

Referenced by vf_open().

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

Definition at line 627 of file vf_fspp.c.

DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_382683433   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_306562965   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_414213562_A   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_847759065   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_2_613125930   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_414213562   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_1_082392200   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_847759065   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_566454497   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_FIX_0_198912367   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_DESCALE_RND   
)
DECLARE_ASM_CONST ( ,
uint64_t  ,
MM_2   
)

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 64 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 78 of file vf_fspp.c.

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

const vf_info_t ff_vf_info_fspp
Initial value:
= {
"fast simple postprocess",
"fspp",
"Michael Niedermayer, Nikolaj Poroshin",
"",
}

Definition at line 683 of file vf_fspp.c.

uint64_t ff_MM_FIX_0_541196100 =FIX64(0.541196100, 14)

Definition at line 714 of file vf_fspp.c.

Referenced by column_fidct_mmx(), and row_fdct_mmx().

uint64_t ff_MM_FIX_0_707106781 =FIX64(0.707106781, 14)

Definition at line 715 of file vf_fspp.c.

Referenced by column_fidct_mmx(), and row_fdct_mmx().