xine-lib: xine-lib-1.2.13/src/post/deinterlace/plugins/vfir.c File Reference

xine-lib 1.2.13-20230125hg15249

Functions | Variables
vfir.c File Reference
`#include <stdio.h>`
`#include <stdint.h>`
`#include <xine/attributes.h>`
`#include <xine/xineutils.h>`
`#include "xine_mmx.h"`
`#include "speedy.h"`
`#include "deinterlace.h"`
`#include "plugins.h"`

## Functions
static void | deinterlace_line (uint8_t *dst, uint8_t *lum_m4, uint8_t *lum_m3, uint8_t *lum_m2, uint8_t *lum_m1, uint8_t *lum, int size)
static void | deinterlace_scanline_vfir (uint8_t *output, deinterlace_scanline_data_t *data, int width)
static void | copy_scanline (uint8_t *output, deinterlace_scanline_data_t *data, int width)
const deinterlace_method_t * | vfir_get_method (void)

## Variables
static const deinterlace_method_t | vfirmethod

## Function Documentation

## ◆ copy_scanline()

static void copy_scanline | ( | uint8_t * | output,
|  | deinterlace_scanline_data_t * | data,
|  | int | width )
| static

References blit_packed422_scanline, deinterlace_scanline_data_s::m0, and width.

## ◆ deinterlace_line()

static void deinterlace_line | ( | uint8_t * | dst,
|  | uint8_t * | lum_m4,
|  | uint8_t * | lum_m3,
|  | uint8_t * | lum_m2,
|  | uint8_t * | lum_m1,
|  | uint8_t * | lum,
|  | int | size )
| static

This file contains code from ffmpeg, see http://ffmpeg.org/

Originated in imgconvert.c: Misc image convertion routines Copyright (c) 2001, 2002, 2003 Fabrice Bellard.

tvtime port Copyright (C) 2003 Billy Biggs vekto.nosp@m.r@du.nosp@m.mbter.nosp@m.m.ne.nosp@m.t.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. The MPEG2 spec uses a slightly harsher filter, they specify [-1 8 2 8 -1]. ffmpeg uses a similar filter but with more of a tendancy to blur than to use the local information. The filter taps here are: [-1 4 2 4 -1].

C implementation.

References emms, movd_m2r, movd_r2m, movq_m2r, packuswb_r2r, paddw_r2r, psllw_i2r, psrlw_i2r, psubusw_r2r, punpcklbw_r2r, pxor_r2r, and mmx_t::uw.

Referenced by deinterlace_scanline_vfir().

## ◆ deinterlace_scanline_vfir()

static void deinterlace_scanline_vfir | ( | uint8_t * | output,
|  | deinterlace_scanline_data_t * | data,
|  | int | width )
| static

References deinterlace_scanline_data_s::b0, deinterlace_scanline_data_s::bb1, deinterlace_line(), deinterlace_scanline_data_s::m1, deinterlace_scanline_data_s::t0, deinterlace_scanline_data_s::tt1, and width.

## ◆ vfir_get_method()

const deinterlace_method_t * vfir_get_method | ( | void |  | ) |

References vfirmethod.

Referenced by deinterlace_init_plugin().

## Variable Documentation

## ◆ vfirmethod

const deinterlace_method_t vfirmethod
| static

Initial value:
=
{
"Vertical Blend (ffmpeg)",
"Vertical",
1,
0,
0,
1,
deinterlace_scanline_vfir,
copy_scanline,
0,
0,
"Avoids flicker by blurring consecutive frames of input. Use this if you "
"want to run your monitor at an arbitrary refresh rate and not use much "
"CPU, and are willing to sacrifice detail.\n"
"\n"
"Vertical mode blurs favouring the most recent field for less visible "
"trails. From the deinterlacer filter in ffmpeg."
}
deinterlace_scanline_vfir
static void deinterlace_scanline_vfir(uint8_t *output, deinterlace_scanline_data_t *data, int width)
Definition vfir.c:117
copy_scanline
static void copy_scanline(uint8_t *output, deinterlace_scanline_data_t *data, int width)
Definition vfir.c:124

Referenced by vfir_get_method().