diff -rub MPlayer-1.0rc2/cfg-common.h MPlayer-1.0rc2-monty/cfg-common.h --- MPlayer-1.0rc2/cfg-common.h 2007-10-07 15:49:33.000000000 -0400 +++ MPlayer-1.0rc2-monty/cfg-common.h 2008-03-20 06:08:20.000000000 -0400 @@ -251,6 +251,7 @@ #if defined(USE_LIBAVFORMAT) || defined(USE_LIBAVFORMAT_SO) {"lavfdopts", lavfdopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL}, #endif + {"theoradopts", theora_decode_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, #if defined(HAVE_XVID3) || defined(HAVE_XVID4) {"xvidopts", xvid_dec_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, #endif @@ -501,6 +502,7 @@ #if defined(USE_LIBAVFORMAT) || defined(USE_LIBAVFORMAT_SO) extern m_option_t lavfdopts_conf[]; #endif +extern m_option_t theora_decode_opts_conf[]; #ifdef STREAMING_LIVE555 extern int rtspStreamOverTCP; Only in MPlayer-1.0rc2-monty/: cfg-common.h.orig diff -rub MPlayer-1.0rc2/libmpcodecs/vd_theora.c MPlayer-1.0rc2-monty/libmpcodecs/vd_theora.c --- MPlayer-1.0rc2/libmpcodecs/vd_theora.c 2007-10-07 15:49:25.000000000 -0400 +++ MPlayer-1.0rc2-monty/libmpcodecs/vd_theora.c 2008-03-20 06:50:43.000000000 -0400 @@ -41,6 +41,17 @@ theora_info inf; } theora_struct_t; +#include "m_option.h" + +static int param_vismv=0; +static int param_vismbmode=0; + +m_option_t theora_decode_opts_conf[]={ + {"vismv", ¶m_vismv, CONF_TYPE_INT, CONF_RANGE, 0, 0xffff, NULL}, + {"vismbmode", ¶m_vismbmode, CONF_TYPE_INT, CONF_RANGE, 0, 0xffff, NULL}, + {NULL, NULL, 0, 0, 0, 0, NULL} +}; + /* * init driver */ @@ -94,6 +105,36 @@ errorCode); break; } + + if(param_vismbmode){ + errorCode = theora_control (&context->st, TH_DECCTL_SET_TELEMETRY_MBMODE, + ¶m_vismbmode,sizeof(param_vismbmode)); + if (errorCode) + mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Could not set macroblock visualization: %i \n", + errorCode); + } + + if(param_vismv){ + errorCode = theora_control (&context->st, TH_DECCTL_SET_TELEMETRY_MV, + ¶m_vismv,sizeof(param_vismv)); + if (errorCode) + mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Could not set motion vector visualization: %i \n", + errorCode); + } + + /* set postprocessing if possible */ + { + int pp_level_max; + errorCode = theora_control(&context->st, TH_DECCTL_GET_PPLEVEL_MAX,&pp_level_max, + sizeof(pp_level_max)); + if (!errorCode) + errorCode = theora_control(&context->st,TH_DECCTL_SET_PPLEVEL, + &pp_level_max,sizeof(pp_level_max)); + if (errorCode) + mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Could not enable Theora post-processing: %i \n", + errorCode); + } + failed = 0; } while (0);