[MPlayer-dev-eng] [PATCH] vf_noformat
Joey Parrish
joey at nicewarrior.org
Sat Jan 31 05:29:02 CET 2004
On Fri, Jan 30, 2004 at 07:41:58PM -0300, Diego Biurrun wrote:
> Joey Parrish writes:
> > Comments?
> > Reject/Commit now/Commit after release?
>
> Include documentation.
>
> Did you really expect me to say anything different? ;-)
Oh! What a fool I've been!
New patch attached, including documentation.
--Joey
--
All philosophy is naive.
-------------- next part --------------
diff -Nur main.cvs/DOCS/man/en/mplayer.1 main.noformat/DOCS/man/en/mplayer.1
--- main.cvs/DOCS/man/en/mplayer.1 2004-01-30 12:47:31.779651200 -0600
+++ main.noformat/DOCS/man/en/mplayer.1 2004-01-30 22:21:46.460811200 -0600
@@ -2639,6 +2639,19 @@
.RE
.PD 1
.TP
+.B noformat[=fourcc]
+Restricts the colorspace for the next filter without doing any conversion.
+Unlike the format filter, this will allow any colorspace
+.B except
+the one you specify.
+For a list of available formats see noformat=fmt=help.
+.PD 0
+.RSs
+.IPs fourcc
+format name like rgb15, bgr24, yv12, etc (default: yv12)
+.RE
+.PD 1
+.TP
.B pp[=filter1[:option1[:option2...]]/[-]filter2...] (see \-pphelp too)
This option enables usage of MPlayer's internal postprocessing filter,
and also gives an interface where you can pass options to the named filter.
diff -Nur main.cvs/libmpcodecs/Makefile main.noformat/libmpcodecs/Makefile
--- main.cvs/libmpcodecs/Makefile 2004-01-30 12:47:37.397729600 -0600
+++ main.noformat/libmpcodecs/Makefile 2004-01-30 22:14:12.397900800 -0600
@@ -14,7 +14,7 @@
VIDEO_SRCS_OPT=vd_realvid.c vd_ffmpeg.c vd_dshow.c vd_dmo.c vd_vfw.c vd_vfwex.c vd_odivx.c vd_divx4.c vd_zrmjpeg.c vd_xanim.c vd_xvid.c vd_xvid4.c vd_libdv.c vd_qtvideo.c vd_theora.c
VIDEO_SRCS=dec_video.c vd.c $(VIDEO_SRCS_NAT) $(VIDEO_SRCS_LIB) $(VIDEO_SRCS_OPT)
-VFILTER_SRCS=vf.c vf_vo.c vf_crop.c vf_expand.c vf_scale.c vf_format.c vf_yuy2.c vf_flip.c vf_rgb2bgr.c vf_rotate.c vf_mirror.c vf_palette.c vf_lavc.c vf_dvbscale.c vf_cropdetect.c vf_test.c vf_noise.c vf_yvu9.c vf_rectangle.c vf_lavcdeint.c vf_eq.c vf_eq2.c vf_halfpack.c vf_dint.c vf_1bpp.c vf_bmovl.c vf_2xsai.c vf_unsharp.c vf_swapuv.c vf_il.c vf_boxblur.c vf_sab.c vf_smartblur.c vf_perspective.c vf_down3dright.c vf_field.c vf_denoise3d.c vf_hqdn3d.c vf_detc.c vf_telecine.c vf_tfields.c vf_ivtc.c vf_ilpack.c vf_dsize.c vf_decimate.c vf_softpulldown.c vf_tinterlace.c vf_pullup.c pullup.c vf_framestep.c vf_tile.c vf_delogo.c vf_fil.c vf_hue.c vf_spp.c vf_yuvcsp.c vf_filmdint.c vf_kerndeint.c vf_rgbtest.c
+VFILTER_SRCS=vf.c vf_vo.c vf_crop.c vf_expand.c vf_scale.c vf_format.c vf_noformat.c vf_yuy2.c vf_flip.c vf_rgb2bgr.c vf_rotate.c vf_mirror.c vf_palette.c vf_lavc.c vf_dvbscale.c vf_cropdetect.c vf_test.c vf_noise.c vf_yvu9.c vf_rectangle.c vf_lavcdeint.c vf_eq.c vf_eq2.c vf_halfpack.c vf_dint.c vf_1bpp.c vf_bmovl.c vf_2xsai.c vf_unsharp.c vf_swapuv.c vf_il.c vf_boxblur.c vf_sab.c vf_smartblur.c vf_perspective.c vf_down3dright.c vf_field.c vf_denoise3d.c vf_hqdn3d.c vf_detc.c vf_telecine.c vf_tfields.c vf_ivtc.c vf_ilpack.c vf_dsize.c vf_decimate.c vf_softpulldown.c vf_tinterlace.c vf_pullup.c pullup.c vf_framestep.c vf_tile.c vf_delogo.c vf_fil.c vf_hue.c vf_spp.c vf_yuvcsp.c vf_filmdint.c vf_kerndeint.c vf_rgbtest.c
ifeq ($(HAVE_FFPOSTPROCESS),yes)
VFILTER_SRCS += vf_pp.c
endif
diff -Nur main.cvs/libmpcodecs/vf.c main.noformat/libmpcodecs/vf.c
--- main.cvs/libmpcodecs/vf.c 2004-01-30 12:47:37.527916800 -0600
+++ main.noformat/libmpcodecs/vf.c 2004-01-30 22:12:54.846387200 -0600
@@ -34,6 +34,7 @@
extern vf_info_t vf_info_fame;
#endif
extern vf_info_t vf_info_format;
+extern vf_info_t vf_info_noformat;
extern vf_info_t vf_info_yuy2;
extern vf_info_t vf_info_flip;
extern vf_info_t vf_info_rgb2bgr;
@@ -104,6 +105,7 @@
&vf_info_fame,
#endif
&vf_info_format,
+ &vf_info_noformat,
&vf_info_yuy2,
&vf_info_flip,
&vf_info_rgb2bgr,
diff -Nur main.cvs/libmpcodecs/vf_noformat.c main.noformat/libmpcodecs/vf_noformat.c
--- main.cvs/libmpcodecs/vf_noformat.c 1969-12-31 18:00:00.000000000 -0600
+++ main.noformat/libmpcodecs/vf_noformat.c 2004-01-30 22:14:26.357974400 -0600
@@ -0,0 +1,93 @@
+#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"
+
+#include "m_option.h"
+#include "m_struct.h"
+
+static struct vf_priv_s {
+ unsigned int fmt;
+} vf_priv_dflt = {
+ IMGFMT_YV12
+};
+
+//===========================================================================//
+
+static int query_format(struct vf_instance_s* vf, unsigned int fmt){
+ if(fmt!=vf->priv->fmt)
+ return vf_next_query_format(vf,fmt);
+ return 0;
+}
+
+static int open(vf_instance_t *vf, char* args){
+ vf->query_format=query_format;
+ vf->default_caps=0;
+ if(!vf->priv) {
+ vf->priv=malloc(sizeof(struct vf_priv_s));
+ vf->priv->fmt=IMGFMT_YV12;
+ }
+ if(args){
+ if(!strcasecmp(args,"444p")) vf->priv->fmt=IMGFMT_444P; else
+ if(!strcasecmp(args,"422p")) vf->priv->fmt=IMGFMT_422P; else
+ if(!strcasecmp(args,"411p")) vf->priv->fmt=IMGFMT_411P; else
+ if(!strcasecmp(args,"yuy2")) vf->priv->fmt=IMGFMT_YUY2; else
+ if(!strcasecmp(args,"yv12")) vf->priv->fmt=IMGFMT_YV12; else
+ if(!strcasecmp(args,"i420")) vf->priv->fmt=IMGFMT_I420; else
+ if(!strcasecmp(args,"yvu9")) vf->priv->fmt=IMGFMT_YVU9; else
+ if(!strcasecmp(args,"if09")) vf->priv->fmt=IMGFMT_IF09; else
+ if(!strcasecmp(args,"iyuv")) vf->priv->fmt=IMGFMT_IYUV; else
+ if(!strcasecmp(args,"uyvy")) vf->priv->fmt=IMGFMT_UYVY; else
+ if(!strcasecmp(args,"bgr24")) vf->priv->fmt=IMGFMT_BGR24; else
+ if(!strcasecmp(args,"bgr32")) vf->priv->fmt=IMGFMT_BGR32; else
+ if(!strcasecmp(args,"bgr16")) vf->priv->fmt=IMGFMT_BGR16; else
+ if(!strcasecmp(args,"bgr15")) vf->priv->fmt=IMGFMT_BGR15; else
+ if(!strcasecmp(args,"bgr8")) vf->priv->fmt=IMGFMT_BGR8; else
+ if(!strcasecmp(args,"bgr4")) vf->priv->fmt=IMGFMT_BGR4; else
+ if(!strcasecmp(args,"bg4b")) vf->priv->fmt=IMGFMT_BG4B; else
+ if(!strcasecmp(args,"bgr1")) vf->priv->fmt=IMGFMT_BGR1; else
+ if(!strcasecmp(args,"rgb24")) vf->priv->fmt=IMGFMT_RGB24; else
+ if(!strcasecmp(args,"rgb32")) vf->priv->fmt=IMGFMT_RGB32; else
+ if(!strcasecmp(args,"rgb16")) vf->priv->fmt=IMGFMT_RGB16; else
+ if(!strcasecmp(args,"rgb15")) vf->priv->fmt=IMGFMT_RGB15; else
+ if(!strcasecmp(args,"rgb8")) vf->priv->fmt=IMGFMT_RGB8; else
+ if(!strcasecmp(args,"rgb4")) vf->priv->fmt=IMGFMT_RGB4; else
+ if(!strcasecmp(args,"rg4b")) vf->priv->fmt=IMGFMT_RG4B; else
+ if(!strcasecmp(args,"rgb1")) vf->priv->fmt=IMGFMT_RGB1; else
+ { printf("Unknown format name: '%s'\n",args);return 0;}
+ }
+
+
+ return 1;
+}
+
+#define ST_OFF(f) M_ST_OFF(struct vf_priv_s,f)
+static m_option_t vf_opts_fields[] = {
+ {"fmt", ST_OFF(fmt), CONF_TYPE_IMGFMT, 0,0 ,0, NULL},
+ { NULL, NULL, 0, 0, 0, 0, NULL }
+};
+
+static m_struct_t vf_opts = {
+ "noformat",
+ sizeof(struct vf_priv_s),
+ &vf_priv_dflt,
+ vf_opts_fields
+};
+
+vf_info_t vf_info_noformat = {
+ "disallow one output format",
+ "noformat",
+ "Joey",
+ "",
+ open,
+ &vf_opts
+};
+
+//===========================================================================//
More information about the MPlayer-dev-eng
mailing list