xine-lib: xine-lib-1.2.12/include/xine/post.h File Reference

xine-lib 1.2.12

Data Structures | Macros | Typedefs | Functions
post.h File Reference
`#include <pthread.h>`
`#include <xine.h>`
`#include <xine/attributes.h>`
`#include <xine/video_out.h>`
`#include <xine/audio_out.h>`
`#include <xine/xine_internal.h>`
`#include <xine/xineutils.h>`
`#include <stddef.h>`

Go to the source code of this file.

## Data Structures
struct | post_class_s
struct | post_plugin_s
struct | post_in_s
struct | post_out_s
struct | post_video_port_s
struct | post_audio_port_s

## Macros
#define | POST_PLUGIN_IFACE_VERSION 10
#define | default_post_class_dispose (void (*) (post_class_t *this_gen))free
#define | _x_post_inc_usage(port)
#define | _x_post_dec_usage(port)
#define | START_PARAM_DESCR(param_t)
#define | PARAM_ITEM(param_type, var, enumv, min, max, readonly, descr)
#define | END_PARAM_DESCR(name)

## Typedefs
typedef struct post_class_s | post_class_t
typedef struct post_plugin_s | post_plugin_t
typedef struct post_in_s | post_in_t
typedef struct post_out_s | post_out_t
typedef struct post_video_port_s | post_video_port_t
typedef struct post_audio_port_s | post_audio_port_t

## Functions
void | _x_post_init (post_plugin_t *post, int num_audio_inputs, int num_video_inputs)
post_video_port_t * | _x_post_intercept_video_port (post_plugin_t *post, xine_video_port_t *port, post_in_t **input, post_out_t **output)
vo_frame_t * | _x_post_intercept_video_frame (vo_frame_t *frame, post_video_port_t *port)
vo_frame_t * | _x_post_restore_video_frame (vo_frame_t *frame, post_video_port_t *port)
void | _x_post_frame_copy_down (vo_frame_t *from, vo_frame_t *to)
void | _x_post_frame_copy_up (vo_frame_t *to, vo_frame_t *from)
void | _x_post_frame_u_turn (vo_frame_t *frame, xine_stream_t *stream)
void | _x_post_intercept_overlay_manager (video_overlay_manager_t *manager, post_video_port_t *port)
static post_video_port_t * | _x_post_video_frame_to_port (vo_frame_t *frame)
static post_video_port_t * | _x_post_ovl_manager_to_port (video_overlay_manager_t *manager)
post_audio_port_t * | _x_post_intercept_audio_port (post_plugin_t *post, xine_audio_port_t *port, post_in_t **input, post_out_t **output)
static void | _x_post_rewire (post_plugin_t *post)
static void | _x_post_lock (post_plugin_t *post)
static void | _x_post_unlock (post_plugin_t *post)
int | _x_post_dispose (post_plugin_t *post)

## Macro Definition Documentation

## ◆ _x_post_dec_usage

#define _x_post_dec_usage | ( |  | port | ) |

Value:
do { \
pthread_mutex_lock(&(port)->usage_lock); \
(port)->usage_count--; \
if ((port)->usage_count == 0) { \
if ((port)->post->dispose_pending) { \
pthread_mutex_unlock(&(port)->usage_lock); \
(port)->post->dispose((port)->post); \
} else \
pthread_mutex_unlock(&(port)->usage_lock); \
} else \
pthread_mutex_unlock(&(port)->usage_lock); \
} while(0)

## ◆ _x_post_inc_usage

#define _x_post_inc_usage | ( |  | port | ) |

Value:
do { \
pthread_mutex_lock(&(port)->usage_lock); \
(port)->usage_count++; \
pthread_mutex_unlock(&(port)->usage_lock); \
} while(0)

## ◆ default_post_class_dispose

#define default_post_class_dispose (void (*) (post_class_t *this_gen))free

## ◆ END_PARAM_DESCR

#define END_PARAM_DESCR | ( |  | name | ) |

Value:
{ POST_PARAM_TYPE_LAST, NULL, 0, 0, NULL, 0, 0, 1, NULL } \
}; \
static xine_post_api_descr_t name = { \
sizeof( temp_t ), \
temp_p \
};
xine_post_api_descr_t
Definition: xine.h:873
name
const char * name
Definition: xine.c:1569
POST_PARAM_TYPE_LAST
#define POST_PARAM_TYPE_LAST
Definition: xine.h:904
NULL
NULL
Definition: xine_plugin.c:78

## ◆ PARAM_ITEM

#define PARAM_ITEM | ( |  | param_type,
|  |  | var,
|  |  | enumv,
|  |  | min,
|  |  | max,
|  |  | readonly,
|  |  | descr
| ) |  |

Value:
{ param_type, #var, sizeof(((temp_t*)0)->var), \
offsetof(temp_t, var), enumv, min, max, readonly, descr },

## ◆ POST_PLUGIN_IFACE_VERSION

#define POST_PLUGIN_IFACE_VERSION 10

## ◆ START_PARAM_DESCR

#define START_PARAM_DESCR | ( |  | param_t | ) |

Value:
typedef param_t temp_t; \
static xine_post_api_parameter_t temp_p[] = {
xine_post_api_parameter_t
Definition: xine.h:860

## Typedef Documentation

## ◆ post_audio_port_t

typedef struct post_audio_port_s post_audio_port_t

## ◆ post_class_t

typedef struct post_class_s post_class_t

## ◆ post_in_t

typedef struct post_in_s post_in_t

## ◆ post_out_t

typedef struct post_out_s post_out_t

## ◆ post_plugin_t

typedef struct post_plugin_s post_plugin_t

## ◆ post_video_port_t

typedef struct post_video_port_s post_video_port_t

## Function Documentation

## ◆ _x_post_dispose()

int _x_post_dispose | ( | post_plugin_t * | post | ) |

References _x_freep(), vf_alias_t::frame, input(), NAILS_S, vo_frame_s::next, NULL, post_video_port_s::original_port, post_audio_port_s::original_port, post_audio_port_unref(), post_audio_rewire(), post_frame_free(), post_video_port_unref(), post_video_rewire(), xine_stream_private_st::refs, xine_post_out_s::rewire, xine_post_out_s::type, post_video_port_s::usage_count, post_audio_port_s::usage_count, post_video_port_s::usage_lock, post_audio_port_s::usage_lock, xine_list_delete(), xine_list_next_value(), XINE_POST_DATA_AUDIO, XINE_POST_DATA_VIDEO, xine_refs_sub(), XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by boxblur_dispose(), deinterlace_dispose(), denoise3d_dispose(), eq2_dispose(), eq_dispose(), expand_dispose(), fftgraph_dispose(), fftscope_dispose(), fill_dispose(), fooviz_dispose(), goom_dispose(), invert_dispose(), mosaico_dispose(), noise_dispose(), oscope_dispose(), pp_dispose(), stretch_dispose(), switch_dispose(), tdaan_dispose(), unsharp_dispose(), upmix_dispose(), upmix_mono_dispose(), vdr_audio_dispose(), vdr_video_dispose(), and volnorm_dispose().

## ◆ _x_post_frame_copy_down()

void _x_post_frame_copy_down | ( | vo_frame_t * | from,
|  | vo_frame_t * | to
| ) |  |

References _x_extra_info_merge(), vo_frame_s::bad_frame, vo_frame_s::crop_bottom, vo_frame_s::crop_left, vo_frame_s::crop_right, vo_frame_s::crop_top, vo_frame_s::drawn, vo_frame_s::duration, vo_frame_s::extra_info, vf_alias_t::frame, vo_frame_s::free, vo_frame_s::picture_coding_type, post_frame_free(), vo_frame_s::progressive_frame, vo_frame_s::pts, vo_frame_s::ratio, xine_stream_private_st::refs, vo_frame_s::repeat_first_field, vo_frame_s::stream, vf_alias_t::stream, vo_frame_s::top_field_first, xine_refs_add(), and xine_refs_sub().

Referenced by boxblur_draw(), deinterlace_draw(), denoise3d_draw(), eq2_draw(), eq_draw(), expand_draw(), fill_draw(), invert_draw(), mosaico_draw_background(), noise_draw(), post_frame_draw(), post_frame_field(), post_frame_free(), post_frame_lock(), post_frame_proc_frame(), post_frame_proc_slice(), post_restore_video_frame(), pp_draw(), switch_draw(), unsharp_draw(), and vdr_video_draw().

## ◆ _x_post_frame_copy_up()

void _x_post_frame_copy_up | ( | vo_frame_t * | to,
|  | vo_frame_t * | from
| ) |  |

References _x_extra_info_merge(), vo_frame_s::duration, vo_frame_s::extra_info, vf_alias_t::frame, vo_frame_s::free, post_frame_free(), xine_stream_private_st::refs, vo_frame_s::stream, vf_alias_t::stream, vo_frame_s::vpts, xine_refs_add(), and xine_refs_sub().

Referenced by boxblur_draw(), deinterlace_draw(), denoise3d_draw(), eq2_draw(), eq_draw(), expand_draw(), fill_draw(), invert_draw(), mosaico_draw_background(), noise_draw(), post_frame_draw(), post_frame_field(), post_frame_free(), post_frame_lock(), post_frame_proc_frame(), post_frame_proc_slice(), pp_draw(), switch_draw(), unsharp_draw(), and vdr_video_draw().

## ◆ _x_post_frame_u_turn()

void _x_post_frame_u_turn | ( | vo_frame_t * | frame,
|  | xine_stream_t * | stream
| ) |  |

References _x_extra_info_merge(), vo_frame_s::extra_info, vf_alias_t::frame, vo_frame_s::free, metronom_s::got_video_frame, xine_stream_s::metronom, post_frame_free(), xine_stream_private_st::refs, vo_frame_s::stream, vf_alias_t::stream, xine_stream_private_st::video_decoder_extra_info, xine_refs_add(), and xine_refs_sub().

Referenced by mosaico_draw(), and switch_draw().

## ◆ _x_post_init()

void _x_post_init | ( | post_plugin_t * | post,
|  | int | num_audio_inputs,
|  | int | num_video_inputs
| ) |  |

References xine_post_s::audio_input, post_plugin_s::input, post_plugin_s::output, xine_post_s::video_input, xine_list_new(), and post_plugin_s::xine_post.

Referenced by boxblur_open_plugin(), deinterlace_open_plugin(), denoise3d_open_plugin(), eq2_open_plugin(), eq_open_plugin(), expand_open_plugin(), fftgraph_open_plugin(), fftscope_open_plugin(), fill_open_plugin(), fooviz_open_plugin(), goom_open_plugin(), invert_open_plugin(), mosaico_open_plugin(), noise_open_plugin(), oscope_open_plugin(), pp_open_plugin(), stretch_open_plugin(), switch_open_plugin(), tdaan_open_plugin(), unsharp_open_plugin(), upmix_mono_open_plugin(), upmix_open_plugin(), vdr_audio_open_plugin(), vdr_video_open_plugin(), and volnorm_open_plugin().

## ◆ _x_post_intercept_audio_port()

post_audio_port_t * _x_post_intercept_audio_port | ( | post_plugin_t * | post,
|  | xine_audio_port_t * | port,
|  | post_in_t ** | input,
|  | post_out_t ** | output
| ) |  |

References xine_audio_port_s::close, xine_audio_port_s::control, xine_audio_port_s::exit, xine_audio_port_s::flush, xine_audio_port_s::get_buffer, xine_audio_port_s::get_capabilities, xine_audio_port_s::get_property, post_plugin_s::input, input(), post_audio_port_s::new_port, NULL, xine_audio_port_s::open, post_audio_port_s::original_port, post_plugin_s::output, post_audio_port_s::post, post_audio_close(), post_audio_control(), post_audio_exit(), post_audio_flush(), post_audio_get_buffer(), post_audio_get_capabilities(), post_audio_get_property(), post_audio_open(), post_audio_port_ref(), post_audio_put_buffer(), post_audio_rewire(), post_audio_set_property(), post_audio_status(), xine_audio_port_s::put_buffer, xine_audio_port_s::set_property, xine_audio_port_s::status, post_audio_port_s::usage_lock, xine_list_push_back(), and XINE_POST_DATA_AUDIO.

Referenced by fftgraph_open_plugin(), fftscope_open_plugin(), fooviz_open_plugin(), goom_open_plugin(), oscope_open_plugin(), stretch_open_plugin(), tdaan_open_plugin(), upmix_mono_open_plugin(), upmix_open_plugin(), vdr_audio_open_plugin(), and volnorm_open_plugin().

## ◆ _x_post_intercept_overlay_manager()

void _x_post_intercept_overlay_manager | ( | video_overlay_manager_t * | manager,
|  | post_video_port_t * | port
| ) |  |

References video_overlay_manager_s::add_event, video_overlay_manager_s::dispose, video_overlay_manager_s::flush_events, video_overlay_manager_s::free_handle, video_overlay_manager_s::get_handle, video_overlay_manager_s::init, video_overlay_manager_s::multiple_overlay_blend, post_video_port_s::new_manager, post_video_port_s::original_manager, post_overlay_add_event(), post_overlay_dispose(), post_overlay_flush_events(), post_overlay_free_handle(), post_overlay_get_handle(), post_overlay_init(), post_overlay_multiple_overlay_blend(), post_overlay_redraw_needed(), and video_overlay_manager_s::redraw_needed.

Referenced by post_video_get_overlay_manager().

## ◆ _x_post_intercept_video_frame()

vo_frame_t * _x_post_intercept_video_frame | ( | vo_frame_t * | frame,
|  | post_video_port_t * | port
| ) |  |

References post_intercept_video_frame(), and post_new_video_alias().

Referenced by expand_get_frame(), and fill_get_frame().

## ◆ _x_post_intercept_video_port()

post_video_port_t * _x_post_intercept_video_port | ( | post_plugin_t * | post,
|  | xine_video_port_t * | port,
|  | post_in_t ** | input,
|  | post_out_t ** | output
| ) |  |

References xine_video_port_s::close, xine_video_port_s::driver, xine_video_port_s::enable_ovl, xine_video_port_s::exit, xine_video_port_s::flush, xine_video_port_s::get_capabilities, xine_video_port_s::get_frame, xine_video_port_s::get_last_frame, xine_video_port_s::get_overlay_manager, xine_video_port_s::get_property, post_plugin_s::input, input(), post_video_port_s::new_frame, xine_video_port_s::new_grab_video_frame, post_video_port_s::new_manager, post_video_port_s::new_port, NULL, xine_video_port_s::open, post_video_port_s::original_port, post_plugin_s::output, post_video_port_s::post, post_video_close(), post_video_enable_ovl(), post_video_exit(), post_video_flush(), post_video_get_capabilities(), post_video_get_frame(), post_video_get_last_frame(), post_video_get_overlay_manager(), post_video_get_property(), post_video_new_grab_video_frame(), post_video_open(), post_video_port_ref(), post_video_rewire(), post_video_set_property(), post_video_status(), post_video_trigger_drawing(), xine_video_port_s::set_property, xine_video_port_s::status, xine_video_port_s::trigger_drawing, post_video_port_s::usage_lock, xine_list_push_back(), and XINE_POST_DATA_VIDEO.

Referenced by boxblur_open_plugin(), deinterlace_open_plugin(), denoise3d_open_plugin(), eq2_open_plugin(), eq_open_plugin(), expand_open_plugin(), fill_open_plugin(), invert_open_plugin(), mosaico_open_plugin(), noise_open_plugin(), pp_open_plugin(), switch_open_plugin(), unsharp_open_plugin(), and vdr_video_open_plugin().

## ◆ _x_post_lock()

static void _x_post_lock | ( | post_plugin_t * | post | ) |
| inlinestatic

References xine_ticket_s::acquire, and post_plugin_s::running_ticket.

## ◆ _x_post_ovl_manager_to_port()

static post_video_port_t * _x_post_ovl_manager_to_port | ( | video_overlay_manager_t * | manager | ) |
| inlinestatic

References NULL.

Referenced by expand_overlay_add_event(), post_overlay_add_event(), post_overlay_dispose(), post_overlay_flush_events(), post_overlay_free_handle(), post_overlay_get_handle(), post_overlay_init(), post_overlay_multiple_overlay_blend(), and post_overlay_redraw_needed().

## ◆ _x_post_restore_video_frame()

vo_frame_t * _x_post_restore_video_frame | ( | vo_frame_t * | frame,
|  | post_video_port_t * | port
| ) |  |

References post_restore_video_frame().

## ◆ _x_post_rewire()

static void _x_post_rewire | ( | post_plugin_t * | post | ) |
| inlinestatic

References xine_ticket_s::renew, post_plugin_s::running_ticket, and xine_ticket_s::ticket_revoked.

Referenced by _x_post_unlock(), deinterlace_open(), expand_get_frame(), fftgraph_port_open(), fftscope_port_open(), fill_get_frame(), fooviz_port_open(), goom_port_open(), oscope_port_open(), post_audio_open(), post_video_open(), stretch_port_open(), tdaan_port_open(), upmix_mono_port_open(), upmix_port_open(), vdr_audio_port_open(), and volnorm_port_open().

## ◆ _x_post_unlock()

static void _x_post_unlock | ( | post_plugin_t * | post | ) |
| inlinestatic

References _x_post_rewire(), xine_ticket_s::release, and post_plugin_s::running_ticket.

## ◆ _x_post_video_frame_to_port()

static post_video_port_t * _x_post_video_frame_to_port | ( | vo_frame_t * | frame | ) |
| inlinestatic

References vo_frame_s::port.

Referenced by post_frame_dispose(), post_frame_draw(), post_frame_field(), post_frame_free(), post_frame_lock(), post_frame_proc_frame(), and post_frame_proc_slice().