view libvo/gtf.h @ 24590:2c238fa777ff

ao_alsa: Fix get_space() return values larger than buffersize After a buffer underrun the ALSA get_space() function sometimes returned values larger than the ao had set in ao_data.buffersize. Fix this by replacing the old check against MAX_OUTBURST by one against ao_data.buffersize. There should be no need for the MAX_OUTBURST check; the current MPlayer side should no longer have any constant limit on the amount of data an ao can buffer or request at once. The get_space() values larger than ao_data.buffersize triggered errors in audio decoding causing the current attempt to fill audio buffers to be aborted. I'm not sure how often that caused behavior noticeably worse then an underrun already is.
author uau
date Mon, 24 Sep 2007 21:49:58 +0000
parents 3f0d00abc073
children 3baf6a2283da
line wrap: on
line source

#ifndef GTF_H
#define GTF_H

#include <vbe.h>

#define GTF_VF 0 
#define GTF_HF 1 
#define GTF_PF 2

		     
typedef struct {
    double	Vsync_need;	   /* Number of lines for vert sync (default 3) */
    double	min_Vsync_BP;	   /* Minimum vertical sync + back porch (us) (default 550)*/
    double	min_front_porch;   /* Minimum front porch in lines (default 1)	*/
    double	char_cell_granularity;  /* Character cell granularity in pixels (default 8) */
    double	margin_width;	   /* Top/ bottom MARGIN size as % of height (%) (default 1.8) */
    double	sync_width;	  /* Sync width percent of line period ( default 8) */
    double  c;		/* Blanking formula offset (default 40)*/
    double  j;		/* Blanking formula scaling factor weight (default 20)*/
    double  k;		/* Blanking formula scaling factor (default 128)*/
    double  m;		/* Blanking formula gradient (default 600)*/
    } GTF_constants;

//#ifndef __VESA_VBELIB_INCLUDED__ 
//    struct VesaCRTCInfoBlock {
//    unsigned short hTotal;     /* Horizontal total in pixels */
//    unsigned short hSyncStart; /* Horizontal sync start in pixels */
//    unsigned short hSyncEnd;   /* Horizontal sync end in pixels */
//    unsigned short vTotal;     /* Vertical total in lines */
//    unsigned short vSyncStart; /* Vertical sync start in lines */
//    unsigned short vSyncEnd;   /* Vertical sync end in lines */
//    unsigned char  Flags;      /* Flags (Interlaced, Double Scan etc) */
//    unsigned long  PixelClock; /* Pixel clock in units of Hz */
//    unsigned short RefreshRate;/* Refresh rate in units of 0.01 Hz*/
//    unsigned char  Reserved[40];/* remainder of CRTCInfoBlock*/
//}__attribute__ ((packed));		    

//#define VESA_CRTC_DOUBLESCAN 0x01
//#define VESA_CRTC_INTERLACED 0x02
//#define VESA_CRTC_HSYNC_NEG  0x04
//#define VESA_CRTC_VSYNC_NEG  0x08

//#endif

void GTF_calcTimings(double X,double Y,double freq, int type,
                     int want_margins, int want_interlace,struct VesaCRTCInfoBlock *result);

#endif