changeset 26395:71bd93e71a97

Restore grayscale decoding support with FFmpeg. Removing support was done due to a silly misunderstanding.
author diego
date Sun, 13 Apr 2008 00:03:11 +0000
parents 35b30544071a
children febaa6723e67
files Changelog DOCS/man/en/mplayer.1 libmpcodecs/vd_ffmpeg.c libmpcodecs/ve_lavc.c
diffstat 4 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/Changelog	Sat Apr 12 23:28:11 2008 +0000
+++ b/Changelog	Sun Apr 13 00:03:11 2008 +0000
@@ -43,7 +43,7 @@
     * reworked screensaver disabling support, most users will need to use
       -heartbeat-cmd due to screensaver authors being unable to design a
       common API
-    * grayscale decoding/encoding with FFmpeg disabled, it slowed down
+    * grayscale decoding/encoding with FFmpeg disabled where it slowed down
       the color case
 
     Ports:
--- a/DOCS/man/en/mplayer.1	Sat Apr 12 23:28:11 2008 +0000
+++ b/DOCS/man/en/mplayer.1	Sun Apr 13 00:03:11 2008 +0000
@@ -3220,6 +3220,7 @@
 .TP
 .B \-zrbw (\-vo zr only)
 Display in black and white.
+For optimal performance, this can be combined with '\-lavdopts gray'.
 .
 .TP
 .B \-zrcrop <[width]x[height]+[x offset]+[y offset]> (\-vo zr only)
@@ -4298,7 +4299,7 @@
 .I EXAMPLE:
 .PD 0
 .RSs
-\-lavdopts skiploopfilter=all:skipframe=nonref
+\-lavdopts gray:skiploopfilter=all:skipframe=nonref
 .RE
 .PD 1
 .sp 1
@@ -4399,6 +4400,8 @@
 potentially cause problems, like simpler dequantization, simpler motion
 compensation, assuming use of the default quantization matrix, assuming
 YUV 4:2:0 and skipping a few checks to detect damaged bitstreams.
+.IPs "gray\ "
+grayscale only decoding (a bit faster than with color)
 .IPs "idct=<0\-99> (see \-lavcopts)"
 For best decoding quality use the same IDCT algorithm for decoding and encoding.
 This may come at a price in accuracy, though.
@@ -8343,6 +8346,10 @@
 slice structured mode for H.263+
 .
 .TP
+.B "gray\ \ \ "
+grayscale only encoding (faster)
+.
+.TP
 .B vfdct=<0\-10>
 DCT algorithm
 .PD 0
--- a/libmpcodecs/vd_ffmpeg.c	Sat Apr 12 23:28:11 2008 +0000
+++ b/libmpcodecs/vd_ffmpeg.c	Sun Apr 13 00:03:11 2008 +0000
@@ -71,6 +71,7 @@
 static int lavc_param_workaround_bugs= FF_BUG_AUTODETECT;
 static int lavc_param_error_resilience=2;
 static int lavc_param_error_concealment=3;
+static int lavc_param_gray=0;
 static int lavc_param_vstats=0;
 static int lavc_param_idct_algo=0;
 static int lavc_param_debug=0;
@@ -89,6 +90,7 @@
 const m_option_t lavc_decode_opts_conf[]={
 	{"bug", &lavc_param_workaround_bugs, CONF_TYPE_INT, CONF_RANGE, -1, 999999, NULL},
 	{"er", &lavc_param_error_resilience, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
+	{"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
 	{"idct", &lavc_param_idct_algo, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
 	{"ec", &lavc_param_error_concealment, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
 	{"vstats", &lavc_param_vstats, CONF_TYPE_FLAG, 0, 0, 1, NULL},
@@ -286,6 +288,7 @@
     avctx->height= sh->disp_h;
     avctx->workaround_bugs= lavc_param_workaround_bugs;
     avctx->error_resilience= lavc_param_error_resilience;
+    if(lavc_param_gray) avctx->flags|= CODEC_FLAG_GRAY;
 #ifdef CODEC_FLAG2_FAST
     avctx->flags2|= lavc_param_fast;
 #endif
--- a/libmpcodecs/ve_lavc.c	Sat Apr 12 23:28:11 2008 +0000
+++ b/libmpcodecs/ve_lavc.c	Sun Apr 13 00:03:11 2008 +0000
@@ -67,6 +67,7 @@
 static int lavc_param_packet_size= 0;
 static int lavc_param_strict= -1;
 static int lavc_param_data_partitioning= 0;
+static int lavc_param_gray=0;
 static float lavc_param_rc_qsquish=1.0;
 static float lavc_param_rc_qmod_amp=0;
 static int lavc_param_rc_qmod_freq=0;
@@ -195,6 +196,7 @@
 	{"vstrict", &lavc_param_strict, CONF_TYPE_INT, CONF_RANGE, -99, 99, NULL},
 	{"vdpart", &lavc_param_data_partitioning, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
 	{"keyint", &lavc_param_keyint, CONF_TYPE_INT, 0, 0, 0, NULL},
+	{"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
 	{"mpeg_quant", &lavc_param_mpeg_quant, CONF_TYPE_FLAG, 0, 0, 1, NULL},
 	{"vi_qfactor", &lavc_param_vi_qfactor, CONF_TYPE_FLOAT, CONF_RANGE, -31.0, 31.0, NULL},
 	{"vi_qoffset", &lavc_param_vi_qoffset, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 31.0, NULL},
@@ -554,6 +556,7 @@
 #ifdef CODEC_FLAG_CLOSED_GOP
     lavc_venc_context->flags|= lavc_param_closed_gop;
 #endif    
+    if(lavc_param_gray) lavc_venc_context->flags|= CODEC_FLAG_GRAY;
 
     if(lavc_param_normalize_aqp) lavc_venc_context->flags|= CODEC_FLAG_NORMALIZE_AQP;
     if(lavc_param_interlaced_dct) lavc_venc_context->flags|= CODEC_FLAG_INTERLACED_DCT;