postprocess_template.c File Reference


Detailed Description

mmx/mmx2/3dnow postprocess code.

Definition in file postprocess_template.c.

Go to the source code of this file.

Functions

static int RENAME() vertClassify (uint8_t src[], int stride, PPContext *c)
 Check if the middle 8x8 Block in the given 8x16 block is flat.
static void RENAME() doVertLowPass (uint8_t *src, int stride, PPContext *c)
 Do a vertical low pass filter on the 8x16 block (only write to the 8x8 block in the middle) using the 9-Tap Filter (1,1,2,2,4,2,2,1,1)/16.
static void RENAME() vertRK1Filter (uint8_t *src, int stride, int QP)
 Experimental implementation of the filter (Algorithm 1) described in a paper from Ramkishor & Karandikar values are correctly clipped (MMX2) values are wraparound (C) Conclusion: It is fast, but introduces ugly horizontal patterns if there is a continuous gradient.
static void RENAME() vertX1Filter (uint8_t *src, int stride, PPContext *co)
 Experimental Filter 1 will not damage linear gradients Flat blocks should look like they where passed through the (1,1,2,2,4,2,2,1,1) 9-Tap filter can only smooth blocks at the expected locations (it cannot smooth them if they did move) MMX2 version does correct clipping C version does not.
static void RENAME() doVertDefFilter (uint8_t src[], int stride, PPContext *c)
static void RENAME() dering (uint8_t src[], int stride, PPContext *c)
static void RENAME() deInterlaceInterpolateLinear (uint8_t src[], int stride)
 Deinterlaces the given block by linearly interpolating every second line.
static void RENAME() deInterlaceInterpolateCubic (uint8_t src[], int stride)
 Deinterlaces the given block by cubic interpolating every second line.
static void RENAME() deInterlaceFF (uint8_t src[], int stride, uint8_t *tmp)
 Deinterlaces the given block by filtering every second line with a (-1 4 2 4 -1) filter.
static void RENAME() deInterlaceL5 (uint8_t src[], int stride, uint8_t *tmp, uint8_t *tmp2)
 Deinterlaces the given block by filtering every line with a (-1 2 6 2 -1) filter.
static void RENAME() deInterlaceBlendLinear (uint8_t src[], int stride, uint8_t *tmp)
 Deinterlaces the given block by filtering all lines with a (1 2 1) filter.
static void RENAME() deInterlaceMedian (uint8_t src[], int stride)
 Deinterlaces the given block by applying a median filter to every second line.
static void RENAME() transpose1 (uint8_t *dst1, uint8_t *dst2, uint8_t *src, int srcStride)
 transposes and shift the given 8x8 Block into dst1 and dst2
static void RENAME() transpose2 (uint8_t *dst, int dstStride, uint8_t *src)
 transposes the given 8x8 block
static void RENAME() tempNoiseReducer (uint8_t *src, int stride, uint8_t *tempBlured, uint32_t *tempBluredPast, int *maxNoise)
static av_always_inline void
RENAME() 
do_a_deblock (uint8_t *src, int step, int stride, PPContext *c)
 accurate deblock filter
static void RENAME() postProcess (uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height, QP_STORE_T QPs[], int QPStride, int isColor, PPContext *c2)
 Filters array of bytes (Y or U or V values).
static void RENAME() blockCopy (uint8_t dst[], int dstStride, uint8_t src[], int srcStride, int levelFix, int64_t *packedOffsetAndScale)
 Copies a block from src to dst and fixes the blacklevel.
static void RENAME() duplicate (uint8_t src[], int stride)
 Duplicates the given 8 src pixels ? times upward.


Function Documentation

static int RENAME() vertClassify ( uint8_t  src[],
int  stride,
PPContext c 
) [inline, static]

Check if the middle 8x8 Block in the given 8x16 block is flat.

Definition at line 81 of file postprocess_template.c.

static void RENAME() doVertLowPass ( uint8_t *  src,
int  stride,
PPContext c 
) [inline, static]

Do a vertical low pass filter on the 8x16 block (only write to the 8x8 block in the middle) using the 9-Tap Filter (1,1,2,2,4,2,2,1,1)/16.

Definition at line 198 of file postprocess_template.c.

static void RENAME() vertRK1Filter ( uint8_t *  src,
int  stride,
int  QP 
) [inline, static]

Experimental implementation of the filter (Algorithm 1) described in a paper from Ramkishor & Karandikar values are correctly clipped (MMX2) values are wraparound (C) Conclusion: It is fast, but introduces ugly horizontal patterns if there is a continuous gradient.

0 8 16 24 x = 8 x/2 = 4 x/8 = 1 1 12 12 23

Definition at line 384 of file postprocess_template.c.

static void RENAME() vertX1Filter ( uint8_t *  src,
int  stride,
PPContext co 
) [inline, static]

Experimental Filter 1 will not damage linear gradients Flat blocks should look like they where passed through the (1,1,2,2,4,2,2,1,1) 9-Tap filter can only smooth blocks at the expected locations (it cannot smooth them if they did move) MMX2 version does correct clipping C version does not.

Definition at line 485 of file postprocess_template.c.

static void RENAME() doVertDefFilter ( uint8_t  src[],
int  stride,
PPContext c 
) [inline, static]

Definition at line 614 of file postprocess_template.c.

static void RENAME() dering ( uint8_t  src[],
int  stride,
PPContext c 
) [inline, static]

Definition at line 1186 of file postprocess_template.c.

static void RENAME() deInterlaceInterpolateLinear ( uint8_t  src[],
int  stride 
) [inline, static]

Deinterlaces the given block by linearly interpolating every second line.

will be called for every 8x8 block and can read & write from line 4-15 lines 0-3 have been passed through the deblock / dering filters allready, but can be read too lines 4-12 will be read into the deblocking filter and should be deinterlaced

Definition at line 1552 of file postprocess_template.c.

static void RENAME() deInterlaceInterpolateCubic ( uint8_t  src[],
int  stride 
) [inline, static]

Deinterlaces the given block by cubic interpolating every second line.

will be called for every 8x8 block and can read & write from line 4-15 lines 0-3 have been passed through the deblock / dering filters allready, but can be read too lines 4-12 will be read into the deblocking filter and should be deinterlaced this filter will read lines 3-15 and write 7-13

Definition at line 1605 of file postprocess_template.c.

static void RENAME() deInterlaceFF ( uint8_t  src[],
int  stride,
uint8_t *  tmp 
) [inline, static]

Deinterlaces the given block by filtering every second line with a (-1 4 2 4 -1) filter.

will be called for every 8x8 block and can read & write from line 4-15 lines 0-3 have been passed through the deblock / dering filters allready, but can be read too lines 4-12 will be read into the deblocking filter and should be deinterlaced this filter will read lines 4-13 and write 5-11

Definition at line 1670 of file postprocess_template.c.

static void RENAME() deInterlaceL5 ( uint8_t  src[],
int  stride,
uint8_t *  tmp,
uint8_t *  tmp2 
) [inline, static]

Deinterlaces the given block by filtering every line with a (-1 2 6 2 -1) filter.

will be called for every 8x8 block and can read & write from line 4-15 lines 0-3 have been passed through the deblock / dering filters allready, but can be read too lines 4-12 will be read into the deblocking filter and should be deinterlaced this filter will read lines 4-13 and write 4-11

Definition at line 1750 of file postprocess_template.c.

static void RENAME() deInterlaceBlendLinear ( uint8_t  src[],
int  stride,
uint8_t *  tmp 
) [inline, static]

Deinterlaces the given block by filtering all lines with a (1 2 1) filter.

will be called for every 8x8 block and can read & write from line 4-15 lines 0-3 have been passed through the deblock / dering filters allready, but can be read too lines 4-12 will be read into the deblocking filter and should be deinterlaced this filter will read lines 4-13 and write 4-11

Definition at line 1852 of file postprocess_template.c.

static void RENAME() deInterlaceMedian ( uint8_t  src[],
int  stride 
) [inline, static]

Deinterlaces the given block by applying a median filter to every second line.

will be called for every 8x8 block and can read & write from line 4-15, lines 0-3 have been passed through the deblock / dering filters allready, but can be read too lines 4-12 will be read into the deblocking filter and should be deinterlaced

Definition at line 1953 of file postprocess_template.c.

static void RENAME() transpose1 ( uint8_t *  dst1,
uint8_t *  dst2,
uint8_t *  src,
int  srcStride 
) [inline, static]

transposes and shift the given 8x8 Block into dst1 and dst2

Definition at line 2076 of file postprocess_template.c.

static void RENAME() transpose2 ( uint8_t *  dst,
int  dstStride,
uint8_t *  src 
) [inline, static]

transposes the given 8x8 block

Definition at line 2161 of file postprocess_template.c.

static void RENAME() tempNoiseReducer ( uint8_t *  src,
int  stride,
uint8_t *  tempBlured,
uint32_t tempBluredPast,
int *  maxNoise 
) [inline, static]

Definition at line 2241 of file postprocess_template.c.

static av_always_inline void RENAME() do_a_deblock ( uint8_t *  src,
int  step,
int  stride,
PPContext c 
) [static]

accurate deblock filter

Definition at line 2649 of file postprocess_template.c.

static void RENAME() postProcess ( uint8_t  src[],
int  srcStride,
uint8_t  dst[],
int  dstStride,
int  width,
int  height,
QP_STORE_T  QPs[],
int  QPStride,
int  isColor,
PPContext c 
) [static]

Filters array of bytes (Y or U or V values).

static void RENAME() blockCopy ( uint8_t  dst[],
int  dstStride,
uint8_t  src[],
int  srcStride,
int  levelFix,
int64_t packedOffsetAndScale 
) [inline, static]

Copies a block from src to dst and fixes the blacklevel.

levelFix == 0 -> do not touch the brighness & contrast

Definition at line 3192 of file postprocess_template.c.

static void RENAME() duplicate ( uint8_t  src[],
int  stride 
) [inline, static]

Duplicates the given 8 src pixels ? times upward.

Definition at line 3323 of file postprocess_template.c.

Referenced by AutoExpire::ExpireEpisodesOverMax(), and if().


Generated on Sat Dec 18 05:15:55 2010 for MythTV by  doxygen 1.5.5