Mercurial > mplayer.hg
view libmpcodecs/vf_dvbscale.c @ 15019:bc17fdd4e2ef
step 1 of fixing ad_faad:
use internal downmixing just like liba52 does if the output is <= 2 channels
actually this is broken since it makes it impossible to manually use
af_pan; however liba52 already has that limitation, and without this
patch, aac audio comes out TOTALLY wrong on 2-channel systems.
hopefully someone will find a better solution later.
next up: making ad_faad reorder the channels according to what mplayer
expects, so they won't all come out the wrong speakers...
| author | rfelker |
|---|---|
| date | Tue, 29 Mar 2005 17:59:08 +0000 |
| parents | e9a2af584986 |
| children | 6ff3379a0862 |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <inttypes.h> #include "../config.h" #include "../mp_msg.h" #include "img_format.h" #include "mp_image.h" #include "vf.h" struct vf_priv_s { int aspect; }; //===========================================================================// static int config(struct vf_instance_s* vf, int width, int height, int d_width, int d_height, unsigned int flags, unsigned int outfmt){ int scaled_y=vf->priv->aspect*d_height/d_width; d_width=width; // do X-scaling by hardware d_height=scaled_y; return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt); } static int open(vf_instance_t *vf, char* args){ vf->config=config; vf->default_caps=0; vf->priv=malloc(sizeof(struct vf_priv_s)); vf->priv->aspect=768; if(args) vf->priv->aspect=atoi(args); return 1; } vf_info_t vf_info_dvbscale = { "calc Y scaling for DVB card", "dvbscale", "A'rpi", "", open, NULL }; //===========================================================================//
