Mercurial > mplayer.hg
diff libmenu/vf_menu.c @ 21803:3acc4b00bcc6
allows OSD menu to be displayed when using MPEG PES video out
author | ben |
---|---|
date | Thu, 04 Jan 2007 16:46:15 +0000 |
parents | 87c339558bc1 |
children | 85f8a5ce6e91 |
line wrap: on
line diff
--- a/libmenu/vf_menu.c Thu Jan 04 16:30:06 2007 +0000 +++ b/libmenu/vf_menu.c Thu Jan 04 16:46:15 2007 +0000 @@ -37,6 +37,7 @@ struct vf_priv_s { menu_t* root; menu_t* current; + int passthrough; }; static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts); @@ -178,6 +179,13 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){ mp_image_t *dmpi = NULL; + if (vf->priv->passthrough) { + dmpi=vf_get_image(vf->next, IMGFMT_MPEGPES, MP_IMGTYPE_EXPORT, + 0, mpi->w, mpi->h); + dmpi->planes[0]=mpi->planes[0]; + return vf_next_put_image(vf,dmpi, pts); + } + if(vf->priv->current->show || (vf->priv->current->parent && vf->priv->current->parent->show)) { // Close all menu who requested it @@ -257,8 +265,15 @@ load_font_ft(width,height); } #endif + if(outfmt == IMGFMT_MPEGPES) + vf->priv->passthrough = 1; return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt); } + +static int query_format(struct vf_instance_s* vf, unsigned int fmt){ + return (vf_next_query_format(vf,fmt)); +} + static int open(vf_instance_t *vf, char* args){ if(!st_priv) { st_priv = calloc(1,sizeof(struct vf_priv_s)); @@ -273,6 +288,7 @@ } vf->config = config; + vf->query_format=query_format; vf->put_image = put_image; vf->get_image = get_image; vf->uninit=uninit;