xine-lib: xine-lib-1.2.12/src/post/deinterlace/deinterlace.h File Reference

xine-lib 1.2.12

Data Structures | Typedefs | Functions
deinterlace.h File Reference
`#include <stdint.h>`

Go to the source code of this file.

## Data Structures
struct | deinterlace_scanline_data_s
struct | deinterlace_frame_data_s
struct | deinterlace_method_s

## Typedefs
typedef struct deinterlace_method_s | deinterlace_method_t
typedef struct deinterlace_scanline_data_s | deinterlace_scanline_data_t
typedef struct deinterlace_frame_data_s | deinterlace_frame_data_t
typedef void(* | deinterlace_interp_scanline_t) (uint8_t *output, deinterlace_scanline_data_t *data, int width)
typedef void(* | deinterlace_copy_scanline_t) (uint8_t *output, deinterlace_scanline_data_t *data, int width)
typedef void(* | deinterlace_frame_t) (uint8_t *output, int outstride, deinterlace_frame_data_t *data, int bottom_field, int second_field, int width, int height)
typedef struct methodlist_item_s * | deinterlace_methods_t

## Functions
void | register_deinterlace_method (deinterlace_methods_t *, const deinterlace_method_t *method)
int | get_num_deinterlace_methods (deinterlace_methods_t)
const deinterlace_method_t * | get_deinterlace_method (deinterlace_methods_t, int i)
void | filter_deinterlace_methods (deinterlace_methods_t *, int accel, int fieldsavailable)
void | free_deinterlace_methods (deinterlace_methods_t *)

## Typedef Documentation

## ◆ deinterlace_copy_scanline_t

typedef void(* deinterlace_copy_scanline_t) (uint8_t *output, deinterlace_scanline_data_t *data, int width)

For the copy scanline, the API is basically the same, except that we're given a scanline to 'copy'.

| t-3 t-2 t-1 t | Field 3 | Field 2 | Field 1 | Field 0 | | | TT2 | | TT0 | | T3 | | T1 | | | | M2 | | M0 | | B3 | | B1 | | | | BB2 | | BB0 |

## ◆ deinterlace_frame_data_t

typedef struct deinterlace_frame_data_s deinterlace_frame_data_t

## ◆ deinterlace_frame_t

typedef void(* deinterlace_frame_t) (uint8_t *output, int outstride, deinterlace_frame_data_t *data, int bottom_field, int second_field, int width, int height)

Note: second_field is used in xine. For tvtime it should be the same as bottom_field.

## ◆ deinterlace_interp_scanline_t

typedef void(* deinterlace_interp_scanline_t) (uint8_t *output, deinterlace_scanline_data_t *data, int width)

| t-3 t-2 t-1 t | Field 3 | Field 2 | Field 1 | Field 0 | | TT3 | | TT1 | | | | T2 | | T0 | | M3 | | M1 | | | | B2 | | B0 | | BB3 | | BB1 | |

While all pointers are passed in, each plugin is only guarenteed for the ones it indicates it requires (in the fields_required parameter) to be available.

Pointers are always to scanlines in the standard packed 4:2:2 format.

## ◆ deinterlace_method_t

typedef struct deinterlace_method_s deinterlace_method_t

Copyright (C) 2002, 2005 Billy Biggs vekto.nosp@m.r@du.nosp@m.mbter.nosp@m.m.ne.nosp@m.t.

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

This program 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 General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA. Our deinterlacer plugin API is modeled after DScaler's. This module represents the API that all deinterlacer plugins must export, and also provides a registration mechanism for the application to be able to iterate through available plugins and select an appropriate one.

## ◆ deinterlace_methods_t

typedef struct methodlist_item_s* deinterlace_methods_t

## ◆ deinterlace_scanline_data_t

typedef struct deinterlace_scanline_data_s deinterlace_scanline_data_t

## Function Documentation

## ◆ filter_deinterlace_methods()

void filter_deinterlace_methods | ( | deinterlace_methods_t * | methodlist,
|  | int | accel,
|  | int | fieldsavailable
| ) |  |

Builds the usable method list.

References deinterlace_method_s::accelrequired, deinterlace_method_s::fields_required, lprintf, methodlist_item_s::method, methodlist_item_s::next, and deinterlace_method_s::short_name.

Referenced by deinterlace_init_plugin().

## ◆ free_deinterlace_methods()

void free_deinterlace_methods | ( | deinterlace_methods_t * | methodlist | ) |

References methodlist_item_s::next, and NULL.

Referenced by deinterlace_class_dispose().

## ◆ get_deinterlace_method()

const deinterlace_method_t * get_deinterlace_method | ( | deinterlace_methods_t | methodlist,
|  | int | i
| ) |  |

Returns the specified method in the list.

References methodlist_item_s::method, and methodlist_item_s::next.

Referenced by deinterlace_draw(), and deinterlace_init_plugin().

## ◆ get_num_deinterlace_methods()

int get_num_deinterlace_methods | ( | deinterlace_methods_t | methodlist | ) |

Returns how many deinterlacing methods are available.

References methodlist_item_s::next.

Referenced by deinterlace_init_plugin().

## ◆ register_deinterlace_method()

void register_deinterlace_method | ( | deinterlace_methods_t * | methodlist,
|  | const deinterlace_method_t * | method
| ) |  |

Registers a new deinterlace method.

References methodlist_item_s::method, and methodlist_item_s::next.

Referenced by deinterlace_init_plugin().