view spudec.h @ 16829:c1aabebbe2e7

honor decoder's/filter's decision to remove frames when using -noskip. this may go against the original intention of the vf layer, but it's how all the filters that drop frames have been written to work, so it's now the de-facto standard. without this patch, -noskip will result in tons of duplicate frames (either soft or hard duplicates) and a/v desync whenever decimation, ivtc, etc. is used. even with this patch -noskip is still a bad idea for most of these purposes, but it will work reliably with filmdint, framestep, and some other filters with fixed in:out ratios as long as the right -ofps value is used. without this patch, there is no hope of -noskip working with frame-dropping filters. (this patch was previously committed erroneously as part of another change, then reversed. it is now being committed again.)
author rfelker
date Sun, 23 Oct 2005 07:37:55 +0000
parents d45870f67728
children a6c619ee9d30
line wrap: on
line source

#ifndef _MPLAYER_SPUDEC_H
#define _MPLAYER_SPUDEC_H

#include "libvo/video_out.h"

void spudec_heartbeat(void *this, unsigned int pts100);
void spudec_assemble(void *this, unsigned char *packet, unsigned int len, unsigned int pts100);
void spudec_draw(void *this, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
void spudec_draw_scaled(void *this, unsigned int dxs, unsigned int dys, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
void spudec_update_palette(void *this, unsigned int *palette);
void *spudec_new_scaled(unsigned int *palette, unsigned int frame_width, unsigned int frame_height);
void *spudec_new_scaled_vobsub(unsigned int *palette, unsigned int *cuspal, unsigned int custom, unsigned int frame_width, unsigned int frame_height);
void *spudec_new(unsigned int *palette);
void spudec_free(void *this);
void spudec_reset(void *this);	// called after seek
int spudec_visible(void *this); // check if spu is visible
void spudec_set_font_factor(void * this, double factor); // sets the equivalent to ffactor
void spudec_set_hw_spu(void *this, vo_functions_t *hw_spu);
int spudec_changed(void *this);
void spudec_calc_bbox(void *me, unsigned int dxs, unsigned int dys, unsigned int* bbox);
void spudec_draw_scaled(void *me, unsigned int dxs, unsigned int dys, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
void spudec_set_forced_subs_only(void * const this, const unsigned int flag);
#endif