summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Roitzsch <mroi@users.sourceforge.net>2004-04-26 17:50:06 +0000
committerMichael Roitzsch <mroi@users.sourceforge.net>2004-04-26 17:50:06 +0000
commite5568601c73d854a62c8de99a9df01f56dcfaf86 (patch)
treedf37c01b56eca1fee6724948b4c1643e15b00a72
parenta8f7b05b5a973374e539b1b263c88b43f270f4fb (diff)
downloadxine-lib-e5568601c73d854a62c8de99a9df01f56dcfaf86.tar.gz
xine-lib-e5568601c73d854a62c8de99a9df01f56dcfaf86.tar.bz2
help strings added for all remaining config entries (so I hope)
please everybody watch out for spelling (and other) errors CVS patchset: 6442 CVS date: 2004/04/26 17:50:06
-rw-r--r--ChangeLog1
-rw-r--r--src/liba52/xine_decoder.c61
-rw-r--r--src/libffmpeg/video_decoder.c12
-rw-r--r--src/libffmpeg/xine_encoder.c22
-rw-r--r--src/libreal/audio_decoder.c13
-rw-r--r--src/libreal/xine_decoder.c13
-rw-r--r--src/libspucc/xine_decoder.c41
-rw-r--r--src/libsputext/demux_sputext.c8
-rw-r--r--src/libsputext/xine_decoder.c50
-rw-r--r--src/libw32dll/qt_decoder.c25
-rw-r--r--src/libw32dll/w32codec.c25
-rw-r--r--src/post/goom/xine_goom.c26
-rw-r--r--src/video_out/video_out_fb.c42
-rw-r--r--src/video_out/video_out_opengl.c24
-rw-r--r--src/video_out/video_out_pgx32.c11
-rw-r--r--src/video_out/video_out_pgx64.c41
-rw-r--r--src/video_out/video_out_sdl.c9
-rw-r--r--src/video_out/video_out_syncfb.c27
-rw-r--r--src/video_out/video_out_vidix.c32
-rw-r--r--src/video_out/video_out_xshm.c20
-rw-r--r--src/video_out/video_out_xv.c78
-rw-r--r--src/video_out/video_out_xvmc.c66
-rw-r--r--src/xine-engine/audio_decoder.c11
-rw-r--r--src/xine-engine/audio_out.c67
-rw-r--r--src/xine-engine/load_plugins.c12
-rw-r--r--src/xine-engine/osd.c7
-rw-r--r--src/xine-engine/video_decoder.c11
-rw-r--r--src/xine-engine/video_out.c14
-rw-r--r--src/xine-engine/xine.c24
-rw-r--r--src/xine-utils/memcpy.c8
30 files changed, 572 insertions, 229 deletions
diff --git a/ChangeLog b/ChangeLog
index 53032bce0..daeb07579 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -33,6 +33,7 @@ xine-lib (1-rc4)
* mmst big cleanup and fixes
* asf codec initialization fix
* engine improvement to handle unknown frame rate correctly
+ * all config entries have help strings now
xine-lib (1-rc3c)
* fix the deadlock with non-seekable input plugins
diff --git a/src/liba52/xine_decoder.c b/src/liba52/xine_decoder.c
index 9483f1bdb..c21c41adb 100644
--- a/src/liba52/xine_decoder.c
+++ b/src/liba52/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.69 2004/03/16 14:12:04 mroi Exp $
+ * $Id: xine_decoder.c,v 1.70 2004/04/26 17:50:07 mroi Exp $
*
* stuff needed to turn liba52 into a xine decoder plugin
*/
@@ -60,7 +60,7 @@ typedef struct {
config_values_t *config;
float a52_level;
- int disable_dynrng;
+ int disable_dynrng_compress;
int enable_surround_downmix;
} a52dec_class_t;
@@ -145,6 +145,12 @@ static const struct frmsize_s frmsizecod_tbl[64] =
{ 640 ,{1280 ,1394 ,1920 } }
};
+/* config callbacks */
+static void a52_level_change_cb(void *this_gen, xine_cfg_entry_t *entry);
+static void dynrng_compress_change_cb(void *this_gen, xine_cfg_entry_t *entry);
+static void surround_downmix_change_cb(void *this_gen, xine_cfg_entry_t *entry);
+
+
static void a52dec_reset (audio_decoder_t *this_gen) {
a52dec_decoder_t *this = (a52dec_decoder_t *) this_gen;
@@ -226,7 +232,7 @@ static void a52dec_decode_frame (a52dec_decoder_t *this, int64_t pts, int previe
return;
}
- if (this->class->disable_dynrng)
+ if (this->class->disable_dynrng_compress)
a52_dynrng (this->a52_state, NULL, NULL);
this->have_lfe = a52_output_flags & A52_LFE;
@@ -770,20 +776,51 @@ static void *init_plugin (xine_t *xine, void *data) {
this->a52_level = (float) cfg->register_range (cfg, "codec.a52_level", 100,
0, 200,
- _("a/52 volume control"),
- NULL, 0, NULL, NULL) / 100.0;
- this->disable_dynrng = !cfg->register_bool (cfg, "codec.a52_dynrng", 0,
- _("enable a/52 dynamic range compensation"),
- NULL, 0, NULL, NULL);
+ _("A/52 volume"),
+ _("With A/52 audio, you can modify the volume "
+ "at the decoder level. This has the advantage "
+ "of the audio being already decoded for the "
+ "specified volume, so later operations like "
+ "channel downmixing will work on an audio stream "
+ "of the given volume."),
+ 10, a52_level_change_cb, this) / 100.0;
+ this->disable_dynrng_compress = !cfg->register_bool (cfg, "codec.a52_dynrng", 0,
+ _("use A/52 dynamic range compression"),
+ _("Dynamic range compression limits the dynamic "
+ "range of the audio. This means making the loud "
+ "sounds softer, and the soft sounds louder, so you can "
+ "more easily listen to the audio in a noisy "
+ "environment without disturbing anyone."),
+ 0, dynrng_compress_change_cb, this);
this->enable_surround_downmix = cfg->register_bool (cfg, "codec.a52_surround_downmix", 0,
- _("enable audio downmixing to 2.0 surround stereo"),
- NULL, 0, NULL, NULL);
-
-
+ _("downmix audio to 2 channel surround stereo"),
+ _("When you want to listen to multichannel surround "
+ "sound, but you have only two speakers or a "
+ "surround decoder or amplifier which does some "
+ "sort of matrix surround decoding like prologic, "
+ "you should enable this option so that the "
+ "additional channels are mixed into the stereo "
+ "signal."),
+ 0, surround_downmix_change_cb, this);
lprintf ("init_plugin called\n");
return this;
}
+static void a52_level_change_cb(void *this_gen, xine_cfg_entry_t *entry)
+{
+ ((a52dec_class_t *)this_gen)->a52_level = entry->num_value / 100.0;
+}
+
+static void dynrng_compress_change_cb(void *this_gen, xine_cfg_entry_t *entry)
+{
+ ((a52dec_class_t *)this_gen)->disable_dynrng_compress = !entry->num_value;
+}
+
+static void surround_downmix_change_cb(void *this_gen, xine_cfg_entry_t *entry)
+{
+ ((a52dec_class_t *)this_gen)->enable_surround_downmix = entry->num_value;
+}
+
static uint32_t audio_types[] = {
BUF_AUDIO_A52,
diff --git a/src/libffmpeg/video_decoder.c b/src/libffmpeg/video_decoder.c
index 13606126e..88cee7ffa 100644
--- a/src/libffmpeg/video_decoder.c
+++ b/src/libffmpeg/video_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_decoder.c,v 1.14 2004/04/19 21:18:01 jstembridge Exp $
+ * $Id: video_decoder.c,v 1.15 2004/04/26 17:50:07 mroi Exp $
*
* xine video decoder plugin using ffmpeg
*
@@ -1209,8 +1209,14 @@ void *init_video_plugin (xine_t *xine, void *data) {
config = xine->config;
this->pp_quality = xine->config->register_range(config, "codec.ffmpeg_pp_quality", 3,
- 0, PP_QUALITY_MAX, _("ffmpeg mpeg-4 postprocessing quality"), NULL,
- 10, pp_quality_cb, this);
+ 0, PP_QUALITY_MAX,
+ _("MPEG-4 postprocessing quality"),
+ _("You can adjust the amount of post processing applied to MPEG-4 video.\n"
+ "Higher values result in better quality, but need more CPU. Lower values may "
+ "result in image defects like block artifacts. For high quality content, "
+ "too heavy post processing can actually make the image worse by blurring it "
+ "too much."),
+ 10, pp_quality_cb, this);
return this;
}
diff --git a/src/libffmpeg/xine_encoder.c b/src/libffmpeg/xine_encoder.c
index b883bce85..da5e134e6 100644
--- a/src/libffmpeg/xine_encoder.c
+++ b/src/libffmpeg/xine_encoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_encoder.c,v 1.12 2004/04/15 15:49:56 mroi Exp $
+ * $Id: xine_encoder.c,v 1.13 2004/04/26 17:50:07 mroi Exp $
*/
/* mpeg encoders for the dxr3 video out plugin. */
@@ -151,23 +151,31 @@ static int lavc_on_update_format(dxr3_driver_t *drv, dxr3_frame_t *frame)
/* put sample parameters */
this->context->bit_rate = drv->class->xine->config->register_range(drv->class->xine->config,
"dxr3.lavc_bitrate", 10000, 1000, 20000,
- _("Dxr3enc: libavcodec mpeg output bitrate (kbit/s)"),
- _("The bitrate the libavcodec mpeg encoder should use for dxr3's encoding mode"), 10,
- NULL, NULL);
+ _("libavcodec mpeg output bitrate (kbit/s)"),
+ _("The bitrate the libavcodec mpeg encoder should use for DXR3's encoding mode.
+ "Higher values will increase quality and CPU usage.\n"
+ "This setting is only considered, when constant quality mode is disabled."), 10, NULL, NULL);
this->context->bit_rate *= 1000; /* config in kbit/s, libavcodec wants bit/s */
use_quantizer = drv->class->xine->config->register_bool(drv->class->xine->config,
"dxr3.lavc_quantizer", 1,
- _("Dxr3enc: Use quantizer instead of bitrate"),NULL, 0, NULL, NULL);
+ _("constant quality mode"),
+ _("When enabled, libavcodec will use a constant quality mode by danymically "
+ "compressing the images based on their complexity. When disabled, libavcodec "
+ "will use constant bitrate mode."), 10, NULL, NULL);
if (use_quantizer) {
this->context->qmin = drv->class->xine->config->register_range(drv->class->xine->config,
"dxr3.lavc_qmin", 1, 1, 10,
- _("Dxr3enc: Minimum quantizer"),NULL , 10, NULL, NULL);
+ _("minimum compression"),
+ _("The minimum compression to apply to an image in constant quality mode."),
+ 10, NULL, NULL);
this->context->qmax = drv->class->xine->config->register_range(drv->class->xine->config,
"dxr3.lavc_qmax", 2, 1, 20,
- _("Dxr3enc: Maximum quantizer"),NULL, 10, NULL, NULL);
+ _("maximum quantizer"),
+ _("The maximum compression to apply to an image in constant quality mode."),
+ 10, NULL, NULL);
}
#if LOG_ENC
diff --git a/src/libreal/audio_decoder.c b/src/libreal/audio_decoder.c
index cc527eeeb..d213af8b4 100644
--- a/src/libreal/audio_decoder.c
+++ b/src/libreal/audio_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: audio_decoder.c,v 1.37 2004/02/04 22:13:12 jstembridge Exp $
+ * $Id: audio_decoder.c,v 1.38 2004/04/26 17:50:07 mroi Exp $
*
* thin layer to use real binary-only codecs in xine
*
@@ -656,8 +656,15 @@ static void *init_class (xine_t *xine, void *data) {
real_codec_path = config->register_string (config, "codec.real_codecs_path",
"unknown",
- _("path to real player codecs, if installed"),
- NULL, 10, NULL, NULL);
+ _("path to RealPlayer codecs"),
+ _("If you have RealPlayer installed, specify the path "
+ "to its codec directory here. You can easily find "
+ "the codec directory by looking for a file named "
+ "\"drv3.so.6.0\" in it. If xine can find the RealPlayer "
+ "codecs, it will use them to decode RealPlayer content "
+ "for you. Consult the xine FAQ for more information on "
+ "how to install the codecs."),
+ 10, NULL, this);
if (!strcmp (real_codec_path, "unknown")) {
diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c
index 313e82bb6..7df79059e 100644
--- a/src/libreal/xine_decoder.c
+++ b/src/libreal/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.68 2004/03/16 14:12:04 mroi Exp $
+ * $Id: xine_decoder.c,v 1.69 2004/04/26 17:50:07 mroi Exp $
*
* thin layer to use real binary-only codecs in xine
*
@@ -536,8 +536,15 @@ static void *init_class (xine_t *xine, void *data) {
real_codec_path = config->register_string (config, "codec.real_codecs_path",
"unknown",
- _("path to real player codecs, if installed"),
- NULL, 10, NULL, NULL);
+ _("path to RealPlayer codecs"),
+ _("If you have RealPlayer installed, specify the path "
+ "to its codec directory here. You can easily find "
+ "the codec directory by looking for a file named "
+ "\"drv3.so.6.0\" in it. If xine can find the RealPlayer "
+ "codecs, it will use them to decode RealPlayer content "
+ "for you. Consult the xine FAQ for more information on "
+ "how to install the codecs."),
+ 10, NULL, this);
if (!strcmp (real_codec_path, "unknown")) {
diff --git a/src/libspucc/xine_decoder.c b/src/libspucc/xine_decoder.c
index 0caeaa6f5..467b93369 100644
--- a/src/libspucc/xine_decoder.c
+++ b/src/libspucc/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.28 2003/12/14 22:13:24 siggi Exp $
+ * $Id: xine_decoder.c,v 1.29 2004/04/26 17:50:08 mroi Exp $
*
* closed caption spu decoder. receive data by events.
*
@@ -218,41 +218,46 @@ static void spucc_register_cfg_vars(spucc_decoder_t *this,
config_values_t *xine_cfg) {
cc_config_t *cc_vars = &this->cc_cfg;
- cc_vars->cc_enabled = xine_cfg->register_bool(xine_cfg,
+ cc_vars->cc_enabled = xine_cfg->register_bool(xine_cfg,
"misc.cc_enabled", 0,
- _("Enable closed captions in MPEG-2 streams"),
- NULL, 0, spucc_cfg_enable_change,
- this);
+ _("display closed captions in MPEG-2 streams"),
+ _("Closed captions are subtitles mostly meant "
+ "to help the hearing impaired."),
+ 0, spucc_cfg_enable_change, this);
cc_vars->cc_scheme = xine_cfg->register_enum(xine_cfg,
"misc.cc_scheme", 0,
cc_schemes,
- _("Closed-captioning foreground/background scheme"),
- NULL, 10, spucc_cfg_scheme_change,
- this);
+ _("closed-captioning foreground/background scheme"),
+ _("Choose your favourite rendering of the closed "
+ "captions."),
+ 10, spucc_cfg_scheme_change, this);
copy_str(cc_vars->font,
xine_cfg->register_string(xine_cfg, "misc.cc_font", "cc",
- _("Standard closed captioning font"),
- NULL, 10, spucc_font_change, this),
+ _("standard closed captioning font"),
+ _("Choose the font for standard closed captions text."),
+ 20, spucc_font_change, this),
CC_FONT_MAX);
copy_str(cc_vars->italic_font,
xine_cfg->register_string(xine_cfg, "misc.cc_italic_font", "cci",
- _("Italic closed captioning font"),
- NULL, 10, spucc_font_change, this),
+ _("italic closed captioning font"),
+ _("Choose the font for italic closed captions text."),
+ 20, spucc_font_change, this),
CC_FONT_MAX);
cc_vars->font_size = xine_cfg->register_num(xine_cfg, "misc.cc_font_size",
24,
- _("Closed captioning font size"),
- NULL, 10, spucc_num_change,
- this);
+ _("closed captioning font size"),
+ _("Choose the font size for closed captions text."),
+ 10, spucc_num_change, this);
cc_vars->center = xine_cfg->register_bool(xine_cfg, "misc.cc_center", 1,
- _("Center-adjust closed captions"),
- NULL, 10, spucc_num_change,
- this);
+ _("center-adjust closed captions"),
+ _("When enabled, closed captions will be positioned "
+ "by the center of the individual lines."),
+ 20, spucc_num_change, this);
}
diff --git a/src/libsputext/demux_sputext.c b/src/libsputext/demux_sputext.c
index aa74639eb..664e6b702 100644
--- a/src/libsputext/demux_sputext.c
+++ b/src/libsputext/demux_sputext.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_sputext.c,v 1.33 2004/01/12 17:35:17 miguelfreitas Exp $
+ * $Id: demux_sputext.c,v 1.34 2004/04/26 17:50:08 mroi Exp $
*
* code based on old libsputext/xine_decoder.c
*
@@ -1352,8 +1352,10 @@ static void *init_sputext_demux_class (xine_t *xine, void *data) {
*/
this->max_timeout = xine->config->register_num(xine->config,
"misc.sub_timeout", 4,
- _("Default period to hide subtitles in seconds"),
- _("Define this to non-zero, if you want automatically hide subtitle after given time. Used only with subtitle formats, where are no end time."),
+ _("default duration of subtitle display in seconds"),
+ _("Some subtitle formats do not explicitly give a duration for each subtitle. "
+ "For these, you can set a default duration here. Setting to zero will result "
+ "in the subtitle being shown until the next one takes over."),
20, config_timeout_cb, this);
return this;
diff --git a/src/libsputext/xine_decoder.c b/src/libsputext/xine_decoder.c
index c63eca435..18c13512a 100644
--- a/src/libsputext/xine_decoder.c
+++ b/src/libsputext/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.79 2004/04/07 18:10:20 valtri Exp $
+ * $Id: xine_decoder.c,v 1.80 2004/04/26 17:50:08 mroi Exp $
*
*/
@@ -670,28 +670,44 @@ static void *init_spu_decoder_plugin (xine_t *xine, void *data) {
"misc.spu_subtitle_size",
1,
subtitle_size_strings,
- _("Subtitle size (relative window size)"),
- NULL, 0, update_subtitle_size, this);
+ _("subtitle size"),
+ _("You can adjust the subtitle size here. The setting will "
+ "be evaluated relative to the window size."),
+ 0, update_subtitle_size, this);
this->vertical_offset = xine->config->register_num(xine->config,
"misc.spu_vertical_offset",
0,
- _("Subtitle vertical offset (relative window size)"),
- NULL, 0, update_vertical_offset, this);
- strcpy(this->font, xine->config->register_string(xine->config,
- "misc.spu_font",
- "sans",
- _("Font for external subtitles"),
- NULL, 0, update_osd_font, this));
+ _("subtitle vertical offset"),
+ _("You can adjust the vertical position of the subtitle. "
+ "The setting will be evaluated relative to the window size."),
+ 0, update_vertical_offset, this);
+ strcpy(this->font, xine->config->register_string(xine->config,
+ "misc.spu_font",
+ "sans",
+ _("font for subtitles"),
+ _("A font from the xine font directory to be used for the "
+ "subtitle text."),
+ 10, update_osd_font, this));
this->src_encoding = xine->config->register_string(xine->config,
"misc.spu_src_encoding",
- "iso-8859-1",
- _("Encoding of subtitles"),
- NULL, 10, update_src_encoding, this);
- this->use_unscaled = xine->config->register_bool(xine->config,
- "misc.spu_use_unscaled_osd",
+ "iso-8859-1",
+ _("encoding of the subtitles"),
+ _("The encoding of the subtitle text in the stream. This setting "
+ "is used to render non-ASCII characters correctly. If non-ASCII "
+ "charachters are not displayed as you expect, ask the "
+ "creator of the subtitles what encoding was used."),
+ 10, update_src_encoding, this);
+ this->use_unscaled = xine->config->register_bool(xine->config,
+ "misc.spu_use_unscaled_osd",
1,
- _("Use unscaled OSD if possible"),
- NULL, 0, update_use_unscaled, this);
+ _("use unscaled OSD if possible"),
+ _("The unscaled OSD will be rendered independently of the video "
+ "frame and will always be sharp, even if the video is magnified. "
+ "This will look better, but does not work with all graphics "
+ "hardware. The alternative is the scaled OSD, which will become "
+ "blurry, if you enlarge a low resolution video to fullscreen, but "
+ "it works with all graphics cards."),
+ 10, update_use_unscaled, this);
return &this->class;
}
diff --git a/src/libw32dll/qt_decoder.c b/src/libw32dll/qt_decoder.c
index 15bcb6b02..8818f5702 100644
--- a/src/libw32dll/qt_decoder.c
+++ b/src/libw32dll/qt_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: qt_decoder.c,v 1.34 2004/03/16 14:12:04 mroi Exp $
+ * $Id: qt_decoder.c,v 1.35 2004/04/26 17:50:08 mroi Exp $
*
* quicktime video/audio decoder plugin, using win32 dlls
* most of this code comes directly from MPlayer
@@ -613,10 +613,15 @@ static void *qta_init_class (xine_t *xine, void *data) {
this->decoder_class.dispose = qta_dispose_class;
cfg = xine->config;
- win32_def_path = cfg->register_string (cfg, "codec.win32_path",
- WIN32_PATH,
- _("path to win32 codec dlls"),
- NULL, 0, NULL, NULL);
+ win32_def_path = cfg->register_string (cfg, "codec.win32_path", WIN32_PATH,
+ _("path to Win32 codecs"),
+ _("If you have the Windows or Apple Quicktime codec packs "
+ "installed, specify the path the codec directory here. "
+ "If xine can find the Windows or Apple Quicktime codecs, "
+ "it will use them to decode various Windows Media and "
+ "Quicktime streams for you. Consult the xine FAQ for "
+ "more information on how to install the codecs."),
+ 10, NULL, NULL);
return this;
}
@@ -1128,8 +1133,14 @@ static void *qtv_init_class (xine_t *xine, void *data) {
config_values_t *cfg = xine->config;
win32_def_path = cfg->register_string (cfg, "codec.win32_path", WIN32_PATH,
- _("path to win32 codec dlls"),
- NULL, 0, NULL, NULL);
+ _("path to Win32 codecs"),
+ _("If you have the Windows or Apple Quicktime codec packs "
+ "installed, specify the path the codec directory here. "
+ "If xine can find the Windows or Apple Quicktime codecs, "
+ "it will use them to decode various Windows Media and "
+ "Quicktime streams for you. Consult the xine FAQ for "
+ "more information on how to install the codecs."),
+ 10, NULL, NULL);
lprintf ("%s...\n", __XINE_FUNCTION__);
diff --git a/src/libw32dll/w32codec.c b/src/libw32dll/w32codec.c
index e0b62c582..3eed139c9 100644
--- a/src/libw32dll/w32codec.c
+++ b/src/libw32dll/w32codec.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: w32codec.c,v 1.139 2004/02/09 22:16:54 jstembridge Exp $
+ * $Id: w32codec.c,v 1.140 2004/04/26 17:50:09 mroi Exp $
*
* routines for using w32 codecs
* DirectShow support by Miguel Freitas (Nov/2001)
@@ -1566,8 +1566,14 @@ static void *init_video_decoder_class (xine_t *xine, void *data) {
cfg = xine->config;
win32_def_path = cfg->register_string (cfg, "codec.win32_path", WIN32_PATH,
- _("path to win32 codec dlls"),
- NULL, 0, NULL, NULL);
+ _("path to Win32 codecs"),
+ _("If you have the Windows or Apple Quicktime codec packs "
+ "installed, specify the path the codec directory here. "
+ "If xine can find the Windows or Apple Quicktime codecs, "
+ "it will use them to decode various Windows Media and "
+ "Quicktime streams for you. Consult the xine FAQ for "
+ "more information on how to install the codecs."),
+ 10, NULL, NULL);
this = (w32v_class_t *) xine_xmalloc (sizeof (w32v_class_t));
@@ -1636,10 +1642,15 @@ static void *init_audio_decoder_class (xine_t *xine, void *data) {
this->decoder_class.dispose = dispose_class;
cfg = xine->config;
- win32_def_path = cfg->register_string (cfg, "codec.win32_path",
- WIN32_PATH,
- _("path to win32 codec dlls"),
- NULL, 0, NULL, NULL);
+ win32_def_path = cfg->register_string (cfg, "codec.win32_path", WIN32_PATH,
+ _("path to Win32 codecs"),
+ _("If you have the Windows or Apple Quicktime codec packs "
+ "installed, specify the path the codec directory here. "
+ "If xine can find the Windows or Apple Quicktime codecs, "
+ "it will use them to decode various Windows Media and "
+ "Quicktime streams for you. Consult the xine FAQ for "
+ "more information on how to install the codecs."),
+ 10, NULL, NULL);
pthread_once (&once_control, init_routine);
diff --git a/src/post/goom/xine_goom.c b/src/post/goom/xine_goom.c
index 97f0ba14e..221dd213c 100644
--- a/src/post/goom/xine_goom.c
+++ b/src/post/goom/xine_goom.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_goom.c,v 1.50 2004/04/17 19:54:31 mroi Exp $
+ * $Id: xine_goom.c,v 1.51 2004/04/26 17:50:09 mroi Exp $
*
* GOOM post plugin.
*
@@ -51,7 +51,7 @@
/* colorspace conversion methods */
const char * goom_csc_methods[]={
"Fast but not photorealistic",
- "Slow but looks better (mmx)",
+ "Slow but looks better",
NULL
};
@@ -193,22 +193,28 @@ static void *goom_init_plugin(xine_t *xine, void *data)
cfg = xine->config;
cfg->register_num (cfg, "post.goom_fps", FPS,
- _("Frames per second to generate with Goom"),
- NULL, 10, fps_changed_cb, this);
+ _("frames per second to generate"),
+ _("With more frames per second, the animation will get "
+ "smoother and faster, but will also require more CPU power."),
+ 10, fps_changed_cb, this);
cfg->register_num (cfg, "post.goom_width", GOOM_WIDTH,
- _("Goom image width in pixels"),
- NULL, 20, width_changed_cb, this);
+ _("goom image width"),
+ _("The width in pixels of the image to be generated."),
+ 10, width_changed_cb, this);
cfg->register_num (cfg, "post.goom_height", GOOM_HEIGHT,
- _("Goom image height in pixels"),
- NULL, 20, height_changed_cb, this);
+ _("goom image height"),
+ _("The height in pixels of the image to be generated."),
+ 10, height_changed_cb, this);
cfg->register_enum (cfg, "post.goom_csc_method", 0,
(char **)goom_csc_methods,
- _("Colorspace conversion method used by Goom"),
- NULL, 20, csc_method_changed_cb, this);
+ _("colorspace conversion method"),
+ _("You can choose the colorspace conversion method used by goom.\n"
+ "The available selections should be self-explaining."),
+ 20, csc_method_changed_cb, this);
return &this->class;
}
diff --git a/src/video_out/video_out_fb.c b/src/video_out/video_out_fb.c
index eb29c363a..6aae47597 100644
--- a/src/video_out/video_out_fb.c
+++ b/src/video_out/video_out_fb.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_fb.c,v 1.35 2003/12/14 22:13:25 siggi Exp $
+ * $Id: video_out_fb.c,v 1.36 2004/04/26 17:50:09 mroi Exp $
*
* video_out_fb.c, frame buffer xine driver by Miguel Freitas
*
@@ -126,7 +126,7 @@ typedef struct fb_driver_s
int yuv2rgb_mode;
int yuv2rgb_swap;
- int yuv2rgb_gamma;
+ int yuv2rgb_brightness;
uint8_t *yuv2rgb_cmap;
yuv2rgb_factory_t *yuv2rgb_factory;
@@ -616,7 +616,7 @@ static int fb_get_property(vo_driver_t *this_gen, int property)
return this->sc.user_ratio;
case VO_PROP_BRIGHTNESS:
- return this->yuv2rgb_gamma;
+ return this->yuv2rgb_brightness;
case VO_PROP_WINDOW_WIDTH:
return this->sc.gui_width;
@@ -647,10 +647,10 @@ static int fb_set_property(vo_driver_t *this_gen, int property, int value)
break;
case VO_PROP_BRIGHTNESS:
- this->yuv2rgb_gamma = value;
+ this->yuv2rgb_brightness = value;
this->yuv2rgb_factory->
set_csc_levels(this->yuv2rgb_factory, value, 128, 128);
- xprintf(this->xine, XINE_VERBOSITY_DEBUG, "video_out_fb: gamma changed to %d\n", value);
+ xprintf(this->xine, XINE_VERBOSITY_DEBUG, "video_out_fb: brightness changed to %d\n", value);
break;
default:
@@ -771,9 +771,17 @@ static int open_fb_device(config_values_t *config, xine_t *xine)
char *device_name;
int fd;
+ /* This config entry is security critical, is it really necessary
+ * or is a number enough? */
device_name = config->register_string(config, devkey, "",
- _("framebuffer device"),
- NULL, 10, NULL, NULL);
+ _("framebuffer device name"),
+ _("Specifies the file name for the framebuffer device "
+ "to be used.\nThis setting is security critical, "
+ "because when changed to a different file, xine "
+ "can be used to fill this file with arbitrary content. "
+ "So you should be careful that the value you enter "
+ "really is a proper framebuffer device."),
+ XINE_CONFIG_SECURITY, NULL, NULL);
if(strlen(device_name) > 3)
{
fd = open(device_name, O_RDWR);
@@ -854,17 +862,20 @@ static int setup_yuv2rgb(fb_driver_t *this, config_values_t *config,
return 0;
this->yuv2rgb_swap = 0;
- this->yuv2rgb_gamma =
+ this->yuv2rgb_brightness =
config->register_range(config, "video.fb_gamma", 0,
- -100, 100,
- "gamma correction for fb driver",
- NULL, 0, NULL, NULL);
+ -100, 100,
+ _("brightness correction"),
+ _("The brightness correction can be used to lighten or darken the image. "
+ "It changes the blacklevel without modifying the contrast, but it "
+ "limits the tonal range."),
+ 0, NULL, NULL);
this->yuv2rgb_factory = yuv2rgb_factory_init(this->yuv2rgb_mode,
this->yuv2rgb_swap,
this->yuv2rgb_cmap);
this->yuv2rgb_factory->set_csc_levels(this->yuv2rgb_factory,
- this->yuv2rgb_gamma, 128, 128);
+ this->yuv2rgb_brightness, 128, 128);
return 1;
}
@@ -979,8 +990,11 @@ static vo_driver_t *fb_open_plugin(video_driver_class_t *class_gen,
this->sc.scaling_disabled =
config->register_bool(config, "video.disable_scaling", 0,
- _("disable all video scaling (faster!)"),
- NULL, 10, NULL, NULL);
+ _("disable all video scaling"),
+ _("You can disable video scaling globally. The image will then no longer "
+ "adapt to the size of the video window, which can dramatically "
+ "reduce CPU usage."),
+ 10, NULL, NULL);
setup_buffers(this, &this->fb_var);
diff --git a/src/video_out/video_out_opengl.c b/src/video_out/video_out_opengl.c
index ceb96cad3..87def8a54 100644
--- a/src/video_out/video_out_opengl.c
+++ b/src/video_out/video_out_opengl.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_opengl.c,v 1.36 2004/03/03 20:09:15 mroi Exp $
+ * $Id: video_out_opengl.c,v 1.37 2004/04/26 17:50:09 mroi Exp $
*
* video_out_glut.c, glut based OpenGL rendering interface for xine
* Matthias Hopf <mat@mshopf.de>
@@ -168,7 +168,7 @@ typedef struct opengl_driver_s {
int output_xoffset, output_yoffset;
#endif
/* software yuv2rgb related */
- int yuv2rgb_gamma;
+ int yuv2rgb_brightness;
uint8_t *yuv2rgb_cmap;
yuv2rgb_factory_t *yuv2rgb_factory;
@@ -752,7 +752,7 @@ static int opengl_get_property (vo_driver_t *this_gen, int property) {
case VO_PROP_ASPECT_RATIO:
return this->sc.user_ratio ;
case VO_PROP_BRIGHTNESS:
- return this->yuv2rgb_gamma;
+ return this->yuv2rgb_brightness;
case VO_PROP_WINDOW_WIDTH:
return this->sc.gui_width;
case VO_PROP_WINDOW_HEIGHT:
@@ -783,9 +783,9 @@ static int opengl_set_property (vo_driver_t *this_gen,
// opengl_redraw_needed ((vo_driver_t *) this);
break;
case VO_PROP_BRIGHTNESS:
- this->yuv2rgb_gamma = value;
+ this->yuv2rgb_brightness = value;
this->yuv2rgb_factory->set_csc_levels (this->yuv2rgb_factory, value, 128, 128);
- xrintf(this->xine, XINE_VERBOSITY_DEBUG, "video_out_opengl: gamma changed to %d\n",value);
+ xrintf(this->xine, XINE_VERBOSITY_DEBUG, "video_out_opengl: brightness changed to %d\n",value);
break;
default:
xprintf (this->xine, XINE_VERBOSITY_DEBUG,
@@ -958,14 +958,18 @@ static vo_driver_t *opengl_open_plugin (video_driver_class_t *class_gen,
this->vo_driver.dispose = opengl_dispose;
this->vo_driver.redraw_needed = opengl_redraw_needed;
- this->yuv2rgb_gamma = class->config->register_range (class->config,
- "video.opengl_gamma", 0, -100, 100,
- _("gamma correction for OpenGL driver"),
- NULL, 0, NULL, NULL);
+ this->yuv2rgb_brightness =
+ config->register_range(this->config, "video.opengl_gamma", 0,
+ -100, 100,
+ _("brightness correction"),
+ _("The brightness correction can be used to lighten or darken the image. "
+ "It changes the blacklevel without modifying the contrast, but it "
+ "limits the tonal range."),
+ 0, NULL, NULL);
this->yuv2rgb_factory = yuv2rgb_factory_init (YUV_FORMAT, YUV_SWAP_MODE,
this->yuv2rgb_cmap);
this->yuv2rgb_factory->set_csc_levels (this->yuv2rgb_factory,
- this->yuv2rgb_gamma, 128, 128);
+ this->yuv2rgb_brightness, 128, 128);
return &this->vo_driver;
}
diff --git a/src/video_out/video_out_pgx32.c b/src/video_out/video_out_pgx32.c
index 05588980e..602439f34 100644
--- a/src/video_out/video_out_pgx32.c
+++ b/src/video_out/video_out_pgx32.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_pgx32.c,v 1.5 2004/04/25 15:05:31 komadori Exp $
+ * $Id: video_out_pgx32.c,v 1.6 2004/04/26 17:50:10 mroi Exp $
*
* video_out_pgx32.c, Sun PGX32 output plugin for xine
*
@@ -753,7 +753,14 @@ static vo_driver_t *pgx32_init_driver(video_driver_class_t *class_gen, const voi
class->instance_count++;
pthread_mutex_unlock(&class->mutex);
- devname = class->config->register_string(class->config, "video.pgx32_device", "/dev/fb", _("path to pgx32 device"), NULL, 10, NULL, NULL);
+ devname = class->config->register_string(class->config, "video.pgx32_device", "/dev/fb",
+ _("PGX32 device name"),
+ _("Specifies the file name for the PGX32 device to be used.\n"
+ "This setting is security critical, because when changed to a different file, xine "
+ "can be used to fill this file with arbitrary content. So you should be careful that "
+ "the value you enter really is a proper PGX32 device."),
+ XINE_CONFIG_SECURITY, NULL, NULL);
+
if ((fbfd = open(devname, O_RDWR)) < 0) {
xprintf(class->xine, XINE_VERBOSITY_LOG, _("video_out_pgx32: Error: can't open framebuffer device '%s'\n"), devname);
return NULL;
diff --git a/src/video_out/video_out_pgx64.c b/src/video_out/video_out_pgx64.c
index 69a552c1b..a62253a46 100644
--- a/src/video_out/video_out_pgx64.c
+++ b/src/video_out/video_out_pgx64.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_pgx64.c,v 1.56 2004/04/25 15:05:31 komadori Exp $
+ * $Id: video_out_pgx64.c,v 1.57 2004/04/26 17:50:10 mroi Exp $
*
* video_out_pgx64.c, Sun PGX64/PGX24 output plugin for xine
*
@@ -1057,7 +1057,14 @@ static vo_driver_t *pgx64_init_driver(video_driver_class_t *class_gen, const voi
class->instance_count++;
pthread_mutex_unlock(&class->mutex);
- devname = class->config->register_string(class->config, "video.pgx64_device", "/dev/fb", _("path to pgx64/pgx24 device"), NULL, 10, NULL, NULL);
+ devname = class->config->register_string(class->config, "video.pgx64_device", "/dev/fb",
+ _("PGX64/PGX24 device name"),
+ _("Specifies the file name for the PGX64/PGX24 device to be used.\n"
+ "This setting is security critical, because when changed to a different file, xine "
+ "can be used to fill this file with arbitrary content. So you should be careful that "
+ "the value you enter really is a proper PGX64 or PGX24 device."),
+ XINE_CONFIG_SECURITY, NULL, NULL);
+
if ((fbfd = open(devname, O_RDWR)) < 0) {
xprintf(class->xine, XINE_VERBOSITY_LOG, _("video_out_pgx64: Error: can't open framebuffer device '%s'\n"), devname);
return NULL;
@@ -1131,11 +1138,31 @@ static vo_driver_t *pgx64_init_driver(video_driver_class_t *class_gen, const voi
XSetWindowColormap(this->display, this->drawable, this->cmap);
XUnlockDisplay(this->display);
- this->colour_key = class->config->register_num(this->class->config, "video.pgx64_colour_key", 1, _("video overlay colour key"), NULL, 10, pgx64_config_changed, this);
- this->brightness = class->config->register_range(this->class->config, "video.pgx64_brightness", 0, -64, 63, _("video overlay brightness"), NULL, 10, pgx64_config_changed, this);
- this->saturation = class->config->register_range(this->class->config, "video.pgx64_saturation", 16, 0, 31, _("video overlay saturation"), NULL, 10, pgx64_config_changed, this);
- this->chromakey_en = class->config->register_bool(this->class->config, "video.pgx64_chromakey_en", 0, _("enable chroma keying"), NULL, 10, pgx64_config_changed, this);
- this->multibuf_en = class->config->register_bool(this->class->config, "video.pgx64_multibuf_en", 1, _("enable multi-buffering"), NULL, 10, pgx64_config_changed, this);
+ this->colour_key = class->config->register_num(this->class->config, "video.pgx64_colour_key", 1,
+ _("video overlay colour key"),
+ _("The colour key is used to tell the graphics card where to overlay the video image. "
+ "Try different values, if you experience windows becoming transparent."),
+ 20, pgx64_config_changed, this);
+ this->brightness = class->config->register_range(this->class->config, "video.pgx64_brightness", 0,
+ -64, 63,
+ _("video brightness"),
+ _("The brightness of the video image."),
+ 10, pgx64_config_changed, this);
+ this->saturation = class->config->register_range(this->class->config, "video.pgx64_saturation", 16,
+ 0, 31,
+ _("video saturation"),
+ _("The saturation of the video image."),
+ 10, pgx64_config_changed, this);
+ this->chromakey_en = class->config->register_bool(this->class->config, "video.pgx64_chromakey_en", 0,
+ _("enable chroma keying"),
+ _("You can select, whether the graphics hardware shall use chroma keying to overlay the video image."),
+ 20, pgx64_config_changed, this);
+ this->multibuf_en = class->config->register_bool(this->class->config, "video.pgx64_multibuf_en", 1,
+ _("enable multi-buffering"),
+ _("Multi buffering will synchronize the update of the video image to the repainting of the entire "
+ "screen (\"vertical retrace\"). This eliminates flickering and tearing artifacts, but will use "
+ "more graphics memory."),
+ 20, pgx64_config_changed, this);
pthread_mutex_init(&this->chromakey_mutex, NULL);
diff --git a/src/video_out/video_out_sdl.c b/src/video_out/video_out_sdl.c
index 5e99b8f8d..3cede2844 100644
--- a/src/video_out/video_out_sdl.c
+++ b/src/video_out/video_out_sdl.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_sdl.c,v 1.36 2003/12/29 18:07:49 miguelfreitas Exp $
+ * $Id: video_out_sdl.c,v 1.37 2004/04/26 17:50:10 mroi Exp $
*
* video_out_sdl.c, Simple DirectMedia Layer
*
@@ -469,8 +469,11 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
this->sdlflags = SDL_HWSURFACE | SDL_RESIZABLE;
this->hw_accel = class->config->register_bool(class->config,
- "video.sdl_hw_accel", 1, "use hardware acceleration if available",
- NULL, 10, NULL, this);
+ "video.sdl_hw_accel", 1,
+ _("use hardware acceleration if available"),
+ _("When your system supports it, hardware acceleration provided by your "
+ "graphics hardware will be used. This might not work, so you can disable it, "
+ "if things go wrong."), 10, NULL, NULL);
xine_setenv("SDL_VIDEO_YUV_HWACCEL", (this->hw_accel) ? "1" : "0", 1);
xine_setenv("SDL_VIDEO_X11_NODIRECTCOLOR", "1", 1);
diff --git a/src/video_out/video_out_syncfb.c b/src/video_out/video_out_syncfb.c
index 8184746f9..2fd87adfa 100644
--- a/src/video_out/video_out_syncfb.c
+++ b/src/video_out/video_out_syncfb.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_syncfb.c,v 1.96 2003/12/14 22:13:25 siggi Exp $
+ * $Id: video_out_syncfb.c,v 1.97 2004/04/26 17:50:10 mroi Exp $
*
* video_out_syncfb.c, SyncFB (for Matrox G200/G400 cards) interface for xine
*
@@ -991,10 +991,14 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
/* FIXME: setting the default_repeat to anything higher than 1 will result
in a distorted video, so for now, set this manually to 0 until
the kernel driver is fixed... */
+#if 0
this->default_repeat = config->register_range(config,
- "video.syncfb_default_repeat", 3, 1, 4,
- "default frame repeat for SyncFB", NULL,
- 0, NULL, NULL);
+ "video.syncfb_default_repeat", 3, 1, 4,
+ _("default number of frame repetitions"),
+ _("This specifies how many times a single video "
+ "frame will be displayed consecutively."),
+ 10, NULL, NULL);
+#endif
this->default_repeat = 0;
this->display = visual->display;
@@ -1055,11 +1059,16 @@ static void *init_class (xine_t *xine, void *visual_gen) {
char* device_name;
int fd;
- device_name = xine->config->register_string(xine->config,
- "video.syncfb_device", "/dev/syncfb",
- _("syncfb (teletux) device node"),
- NULL, 10, NULL, NULL);
-
+ device_name = xine->config->register_string(xine->config, "video.syncfb_device", "/dev/syncfb",
+ _("SyncFB device name"),
+ _("Specifies the file name for the SyncFB (TeleTux) device "
+ "to be used.\nThis setting is security critical, "
+ "because when changed to a different file, xine "
+ "can be used to fill this file with arbitrary content. "
+ "So you should be careful that the value you enter "
+ "really is a proper framebuffer device."),
+ XINE_CONFIG_SECURITY, NULL, NULL);
+
/* check for syncfb device */
if((fd = open(device_name, O_RDWR)) < 0) {
xprintf(xine, XINE_VERBOSITY_DEBUG,
diff --git a/src/video_out/video_out_vidix.c b/src/video_out/video_out_vidix.c
index bc25fc102..88f5d055f 100644
--- a/src/video_out/video_out_vidix.c
+++ b/src/video_out/video_out_vidix.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_vidix.c,v 1.60 2004/04/10 15:31:10 miguelfreitas Exp $
+ * $Id: video_out_vidix.c,v 1.61 2004/04/26 17:50:11 mroi Exp $
*
* video_out_vidix.c
*
@@ -938,17 +938,17 @@ static vidix_driver_t *open_plugin (video_driver_class_t *class_gen) {
if(this->vidix_eq.cap & VEQ_CAP_RGB_INTENSITY) {
this->vidix_eq.red_intensity = config->register_range(config,
"video.vidix_red_intensity", 0, -1000, 1000,
- "red intensity", NULL, 10,
+ _("red intensity"), _("The intensity of the red colour components."), 10,
(void*) vidix_rgb_callback, this);
this->vidix_eq.green_intensity = config->register_range(config,
"video.vidix_green_intensity", 0, -1000, 1000,
- "green intensity", NULL, 10,
+ _("green intensity"), _("The intensity of the green colour components."), 10,
(void*) vidix_rgb_callback, this);
this->vidix_eq.blue_intensity = config->register_range(config,
"video.vidix_blue_intensity", 0, -1000, 1000,
- "blue intensity", NULL, 10,
+ _("blue intensity"), _("The intensity of the blue colour components."), 10,
(void*) vidix_rgb_callback, this);
if((err = vdlPlaybackSetEq(this->vidix_handler, &this->vidix_eq)))
@@ -960,7 +960,10 @@ static vidix_driver_t *open_plugin (video_driver_class_t *class_gen) {
/* Configuration for double buffering */
this->use_doublebuffer = config->register_bool(config,
- "video.vidix_use_double_buffer", 1, "double buffer to sync video to retrace", NULL, 10,
+ "video.vidix_use_double_buffer", 1, _("enable double buffering"),
+ _("Double buffering will synchronize the update of the video image to the repainting of the entire "
+ "screen (\"vertical retrace\"). This eliminates flickering and tearing artifacts, but will use "
+ "more graphics memory."), 20,
(void*) vidix_db_callback, this);
/* Set up remaining props */
@@ -1100,17 +1103,23 @@ static vo_driver_t *vidix_open_plugin (video_driver_class_t *class_gen, const vo
/* Colour key components */
this->vidix_grkey.ckey.red = config->register_range(config,
"video.vidix_colour_key_red", 255, 0, 255,
- "video overlay colour key red component", NULL, 10,
+ _("video overlay colour key red component"),
+ _("The colour key is used to tell the graphics card where to overlay the video image. "
+ "Try different values, if you experience windows becoming transparent."), 20,
(void*) vidix_ckey_callback, this);
this->vidix_grkey.ckey.green = config->register_range(config,
"video.vidix_colour_key_green", 0, 0, 255,
- "video overlay colour key green component", NULL, 10,
+ _("video overlay colour key green component"),
+ _("The colour key is used to tell the graphics card where to overlay the video image. "
+ "Try different values, if you experience windows becoming transparent."), 20,
(void*) vidix_ckey_callback, this);
this->vidix_grkey.ckey.blue = config->register_range(config,
"video.vidix_colour_key_blue", 255, 0, 255,
- "video overlay colour key blue component", NULL, 10,
+ _("video overlay colour key blue component"),
+ _("The colour key is used to tell the graphics card where to overlay the video image. "
+ "Try different values, if you experience windows becoming transparent."), 20,
(void*) vidix_ckey_callback, this);
vidix_update_colourkey(this);
@@ -1168,7 +1177,12 @@ static vo_driver_t *vidixfb_open_plugin (video_driver_class_t *class_gen, const
/* Register config option for fb device */
device = config->register_string(config, "video.vidixfb_device", "/dev/fb0",
- "frame buffer device for vidix overlay", NULL, 10, NULL, NULL);
+ _("framebuffer device name"),
+ _("Specifies the file name for the framebuffer device to be used.\n"
+ "This setting is security critical, because when changed to a different file, xine "
+ "can be used to fill this file with arbitrary content. So you should be careful that "
+ "the value you enter really is a proper framebuffer device."),
+ XINE_CONFIG_SECURITY, NULL, NULL);
/* Open fb device for reading */
if((fd = open("/dev/fb0", O_RDONLY)) < 0) {
diff --git a/src/video_out/video_out_xshm.c b/src/video_out/video_out_xshm.c
index 297a6d7d1..51df7dfa2 100644
--- a/src/video_out/video_out_xshm.c
+++ b/src/video_out/video_out_xshm.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_xshm.c,v 1.129 2004/04/10 15:31:10 miguelfreitas Exp $
+ * $Id: video_out_xshm.c,v 1.130 2004/04/26 17:50:11 mroi Exp $
*
* video_out_xshm.c, X11 shared memory extension interface for xine
*
@@ -1062,9 +1062,13 @@ static vo_driver_t *xshm_open_plugin (video_driver_class_t *class_gen, const voi
this->sc.user_ratio = XINE_VO_ASPECT_AUTO;
- this->sc.scaling_disabled = config->register_bool (config, "video.disable_scaling", 0,
- _("disable all video scaling (faster!)"),
- NULL, 10, NULL, NULL);
+ this->sc.scaling_disabled =
+ config->register_bool(config, "video.disable_scaling", 0,
+ _("disable all video scaling"),
+ _("You can disable video scaling globally. The image will then no longer "
+ "adapt to the size of the video window, which can dramatically "
+ "reduce CPU usage."),
+ 10, NULL, NULL);
this->drawable = visual->d;
this->cur_frame = NULL;
XLockDisplay(this->display);
@@ -1217,8 +1221,12 @@ static vo_driver_t *xshm_open_plugin (video_driver_class_t *class_gen, const voi
this->yuv2rgb_swap = swapped;
this->yuv2rgb_brightness = config->register_range (config, "video.xshm_gamma", 0,
-128, 127,
- _("gamma correction for XShm driver"),
- NULL, 0, NULL, NULL);
+ _("brightness correction"),
+ _("The brightness correction can be used to "
+ "lighten or darken the image. It changes the "
+ "blacklevel without modifying the contrast, "
+ "but it limits the tonal range."),
+ 0, NULL, NULL);
this->yuv2rgb_contrast = 128;
this->yuv2rgb_saturation = 128;
diff --git a/src/video_out/video_out_xv.c b/src/video_out/video_out_xv.c
index cf192db6f..69343972b 100644
--- a/src/video_out/video_out_xv.c
+++ b/src/video_out/video_out_xv.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_xv.c,v 1.196 2004/04/10 15:31:10 miguelfreitas Exp $
+ * $Id: video_out_xv.c,v 1.197 2004/04/26 17:50:11 mroi Exp $
*
* video_out_xv.c, X11 video extension interface for xine
*
@@ -1057,7 +1057,8 @@ static void xv_check_capability (xv_driver_t *this,
int property, XvAttribute attr,
int base_id, char *str_prop,
char *config_name,
- char *config_desc) {
+ char *config_desc,
+ char *config_help) {
int int_default;
cfg_entry_t *entry;
@@ -1082,13 +1083,13 @@ static void xv_check_capability (xv_driver_t *this,
if ((attr.min_value == 0) && (attr.max_value == 1)) {
this->config->register_bool (this->config, config_name, int_default,
config_desc,
- NULL, 10, xv_property_callback, &this->props[property]);
+ config_help, 20, xv_property_callback, &this->props[property]);
} else {
this->config->register_range (this->config, config_name, int_default,
this->props[property].min, this->props[property].max,
config_desc,
- NULL, 10, xv_property_callback, &this->props[property]);
+ config_help, 20, xv_property_callback, &this->props[property]);
}
entry = this->config->lookup_entry (this->config, config_name);
@@ -1261,49 +1262,65 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
} else {
xv_check_capability (this, VO_PROP_HUE, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_HUE",
- NULL, NULL);
+ NULL, NULL, NULL);
}
} else if(!strcmp(attr[k].name, "XV_SATURATION")) {
xv_check_capability (this, VO_PROP_SATURATION, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_SATURATION",
- NULL, NULL);
+ NULL, NULL, NULL);
} else if(!strcmp(attr[k].name, "XV_BRIGHTNESS")) {
xv_check_capability (this, VO_PROP_BRIGHTNESS, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_BRIGHTNESS",
- NULL, NULL);
+ NULL, NULL, NULL);
} else if(!strcmp(attr[k].name, "XV_CONTRAST")) {
xv_check_capability (this, VO_PROP_CONTRAST, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_CONTRAST",
- NULL, NULL);
+ NULL, NULL, NULL);
} else if(!strcmp(attr[k].name, "XV_COLORKEY")) {
xv_check_capability (this, VO_PROP_COLORKEY, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_COLORKEY",
"video.xv_colorkey",
- _("Colorkey used for Xv video overlay"));
+ _("video overlay colour key"),
+ _("The colour key is used to tell the graphics card where to "
+ "overlay the video image. Try different values, if you experience "
+ "windows becoming transparent."));
} else if(!strcmp(attr[k].name, "XV_AUTOPAINT_COLORKEY")) {
xv_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_AUTOPAINT_COLORKEY",
"video.xv_autopaint_colorkey",
- _("Make Xv autopaint its colorkey"));
+ _("autopaint colour key"),
+ _("Make Xv autopaint its colorkey."));
} else if(!strcmp(attr[k].name, "XV_FILTER")) {
int xv_filter;
/* This setting is specific to Permedia 2/3 cards. */
xv_filter = config->register_range (config, "video.XV_FILTER", 0,
attr[k].min_value, attr[k].max_value,
- _("bilinear scaling mode (permedia 2/3)"),
- NULL, 10, xv_update_XV_FILTER, this);
+ _("bilinear scaling mode"),
+ _("Selects the bilinear scaling mode for Permedia cards. "
+ "The individual values are:\n\n"
+ "Permedia 2\n"
+ "0 - disable bilinear filtering\n"
+ "1 - enable bilinear filtering\n\n"
+ "Permedia 3\n"
+ "0 - disable bilinear filtering\n"
+ "1 - horizontal linear filtering\n"
+ "2 - enable full bilinear filtering"),
+ 20, xv_update_XV_FILTER, this);
config->update_num(config,"video.XV_FILTER",xv_filter);
} else if(!strcmp(attr[k].name, "XV_DOUBLE_BUFFER")) {
int xv_double_buffer;
xv_double_buffer =
config->register_bool (config, "video.XV_DOUBLE_BUFFER", 1,
- _("double buffer to sync video to the retrace"),
- NULL, 10, xv_update_XV_DOUBLE_BUFFER, this);
+ _("enable double buffering"),
+ _("Double buffering will synchronize the update of the video image to the "
+ "repainting of the entire screen (\"vertical retrace\"). This eliminates "
+ "flickering and tearing artifacts, but will use more graphics memory."),
+ 20, xv_update_XV_DOUBLE_BUFFER, this);
config->update_num(config,"video.XV_DOUBLE_BUFFER",xv_double_buffer);
}
}
@@ -1359,14 +1376,39 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
this->use_pitch_alignment =
config->register_bool (config, "video.xv_pitch_alignment", 0,
- _("workaround for some (buggy) XVideo drivers"),
- NULL, 10, xv_update_xv_pitch_alignment, this);
+ _("pitch alignment workaround"),
+ _("Some buggy video drivers need a workaround to function properly."),
+ 10, xv_update_xv_pitch_alignment, this);
this->deinterlace_method =
config->register_enum (config, "video.deinterlace_method", 4,
deinterlace_methods,
- _("Software deinterlace method (Key I toggles deinterlacer on/off)"),
- NULL, 10, xv_update_deinterlace, this);
+ _("deinterlace method"),
+ _("From the old days of analog television, where the even and odd numbered "
+ "lines of a video frame would be displayed at different times comes the "
+ "idea to increase motion smoothness by also recording the lines at "
+ "different times. This is called \"interlacing\". But unfortunately, "
+ "todays displays show the even and odd numbered lines as one complete frame "
+ "all at the same time (called \"progressive display\"), which results in "
+ "ugly frame errors known as comb artifacts. Software deinterlacing is an "
+ "approach to reduce these artifacts. The individual values are:\n\n"
+ "none\n"
+ "Disables software deinterlacing.\n\n"
+ "bob\n"
+ "Interpolates between the lines for moving parts of the image.\n\n"
+ "weave\n"
+ "Similar to bob, but with a tendency to preserve the full resolution, "
+ "better for high detail in low movement scenes.\n\n"
+ "greedy\n"
+ "Very good adaptive deinterlacer, but needs a lot of CPU power.\n\n"
+ "onefield\n"
+ "Always interpolates and reduces vertical resolution.\n\n"
+ "onefieldxv\n"
+ "Same as onefield, but does the interpolation in hardware.\n\n"
+ "linearblend\n"
+ "Applies a slight vertical blur to remove the comb artifacts. Good results "
+ "with medium CPU usage."),
+ 10, xv_update_deinterlace, this);
this->deinterlace_enabled = 0;
XLockDisplay (this->display);
diff --git a/src/video_out/video_out_xvmc.c b/src/video_out/video_out_xvmc.c
index 8ead3549e..242b63058 100644
--- a/src/video_out/video_out_xvmc.c
+++ b/src/video_out/video_out_xvmc.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_xvmc.c,v 1.14 2004/03/03 20:09:15 mroi Exp $
+ * $Id: video_out_xvmc.c,v 1.15 2004/04/26 17:50:11 mroi Exp $
*
* video_out_xvmc.c, X11 video motion compensation extension interface for xine
*
@@ -1279,7 +1279,8 @@ static void xvmc_check_capability (xvmc_driver_t *this,
int property, XvAttribute attr,
int base_id, char *str_prop,
char *config_name,
- char *config_desc) {
+ char *config_desc,
+ char *config_help) {
int int_default;
cfg_entry_t *entry;
@@ -1304,13 +1305,13 @@ static void xvmc_check_capability (xvmc_driver_t *this,
if ((attr.min_value == 0) && (attr.max_value == 1)) {
this->config->register_bool (this->config, config_name, int_default,
config_desc,
- NULL, 10, xvmc_property_callback, &this->props[property]);
+ NULL, 20, xvmc_property_callback, &this->props[property]);
} else {
this->config->register_range (this->config, config_name, int_default,
this->props[property].min, this->props[property].max,
config_desc,
- NULL, 10, xvmc_property_callback, &this->props[property]);
+ NULL, 20, xvmc_property_callback, &this->props[property]);
}
entry = this->config->lookup_entry (this->config, config_name);
@@ -1461,39 +1462,47 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
if(!strcmp(attr[k].name, "XV_HUE")) {
xvmc_check_capability (this, VO_PROP_HUE, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_HUE",
- NULL, NULL);
+ NULL, NULL, NULL);
} else if(!strcmp(attr[k].name, "XV_SATURATION")) {
xvmc_check_capability (this, VO_PROP_SATURATION, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_SATURATION",
- NULL, NULL);
+ NULL, NULL, NULL);
} else if(!strcmp(attr[k].name, "XV_BRIGHTNESS")) {
xvmc_check_capability (this, VO_PROP_BRIGHTNESS, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_BRIGHTNESS",
- NULL, NULL);
+ NULL, NULL, NULL);
} else if(!strcmp(attr[k].name, "XV_CONTRAST")) {
xvmc_check_capability (this, VO_PROP_CONTRAST, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_CONTRAST",
- NULL, NULL);
+ NULL, NULL, NULL);
} else if(!strcmp(attr[k].name, "XV_COLORKEY")) {
xvmc_check_capability (this, VO_PROP_COLORKEY, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_COLORKEY",
"video.xv_colorkey",
- _("Colorkey used for Xv video overlay"));
+ _("video overlay colour key"),
+ _("The colour key is used to tell the graphics card where to "
+ "overlay the video image. Try different values, if you experience "
+ "windows becoming transparent."));
} else if(!strcmp(attr[k].name, "XV_AUTOPAINT_COLORKEY")) {
xvmc_check_capability (this, VO_PROP_AUTOPAINT_COLORKEY, attr[k],
class->adaptor_info[class->adaptor_num].base_id, "XV_AUTOPAINT_COLORKEY",
- NULL, NULL);
+ "video.xv_autopaint_colorkey",
+ _("autopaint colour key"),
+ _("Make Xv autopaint its colorkey."));
} else if(!strcmp(attr[k].name, "XV_DOUBLE_BUFFER")) {
int xvmc_double_buffer;
xvmc_double_buffer = config->register_bool (config, "video.XV_DOUBLE_BUFFER", 1,
- _("double buffer to sync video to the retrace"),
- NULL, 10, xvmc_update_XV_DOUBLE_BUFFER, this);
+ _("enable double buffering"),
+ _("Double buffering will synchronize the update of the video image to the "
+ "repainting of the entire screen (\"vertical retrace\"). This eliminates "
+ "flickering and tearing artifacts, but will use more graphics memory."),
+ 20, xvmc_update_XV_DOUBLE_BUFFER, this);
config->update_num(config,"video.XV_DOUBLE_BUFFER",xvmc_double_buffer);
}
}
@@ -1549,10 +1558,35 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi
XUnLockDisplay(this->display);
*/
- this->deinterlace_method = config->register_enum (config, "video.deinterlace_method", 4,
- deinterlace_methods,
- _("Software deinterlace method (Key I toggles deinterlacer on/off)"),
- NULL, 10, xvmc_update_deinterlace, this);
+ this->deinterlace_method =
+ config->register_enum (config, "video.deinterlace_method", 4,
+ deinterlace_methods,
+ _("deinterlace method"),
+ _("From the old days of analog television, where the even and odd numbered "
+ "lines of a video frame would be displayed at different times comes the "
+ "idea to increase motion smoothness by also recording the lines at "
+ "different times. This is called \"interlacing\". But unfortunately, "
+ "todays displays show the even and odd numbered lines as one complete frame "
+ "all at the same time (called \"progressive display\"), which results in "
+ "ugly frame errors known as comb artifacts. Software deinterlacing is an "
+ "approach to reduce these artifacts. The individual values are:\n\n"
+ "none\n"
+ "Disables software deinterlacing.\n\n"
+ "bob\n"
+ "Interpolates between the lines for moving parts of the image.\n\n"
+ "weave\n"
+ "Similar to bob, but with a tendency to preserve the full resolution, "
+ "better for high detail in low movement scenes.\n\n"
+ "greedy\n"
+ "Very good adaptive deinterlacer, but needs a lot of CPU power.\n\n"
+ "onefield\n"
+ "Always interpolates and reduces vertical resolution.\n\n"
+ "onefieldxv\n"
+ "Same as onefield, but does the interpolation in hardware.\n\n"
+ "linearblend\n"
+ "Applies a slight vertical blur to remove the comb artifacts. Good results "
+ "with medium CPU usage."),
+ 10, xvmc_update_deinterlace, this);
this->deinterlace_enabled = 1; /* default is enabled */
lprintf("deinterlace_methods %d ",this->deinterlace_method);
diff --git a/src/xine-engine/audio_decoder.c b/src/xine-engine/audio_decoder.c
index 05642fc84..1b4c68457 100644
--- a/src/xine-engine/audio_decoder.c
+++ b/src/xine-engine/audio_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: audio_decoder.c,v 1.127 2004/03/28 19:51:56 mroi Exp $
+ * $Id: audio_decoder.c,v 1.128 2004/04/26 17:50:12 mroi Exp $
*
*
* functions that implement audio decoding
@@ -449,9 +449,12 @@ void _x_audio_decoder_init (xine_stream_t *stream) {
num_buffers = stream->xine->config->register_num (stream->xine->config,
"audio.num_buffers",
230,
- "number of audio buffers to allocate (higher values mean smoother playback but higher latency)",
- NULL, 20,
- NULL, NULL);
+ _("number of audio buffers"),
+ _("The number of audio buffers (each is 8k in size) "
+ "xine uses in its internal queue. Higher values "
+ "mean smoother playback for unreliable inputs, but "
+ "also increased latency and memory comsumption."),
+ 20, NULL, NULL);
stream->audio_fifo = _x_fifo_buffer_new (num_buffers, 8192);
stream->audio_channel_user = -1;
diff --git a/src/xine-engine/audio_out.c b/src/xine-engine/audio_out.c
index 9247e3411..e263b73e5 100644
--- a/src/xine-engine/audio_out.c
+++ b/src/xine-engine/audio_out.c
@@ -17,7 +17,7 @@
* along with self program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: audio_out.c,v 1.171 2004/04/07 18:07:25 mroi Exp $
+ * $Id: audio_out.c,v 1.172 2004/04/26 17:50:12 mroi Exp $
*
* 22-8-2001 James imported some useful AC3 sections from the previous alsa driver.
* (c) 2001 Andy Lo A Foe <andy@alsaplayer.org>
@@ -1843,7 +1843,7 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver,
int i, err;
pthread_attr_t pth_attrs;
static char *resample_modes[] = {"auto", "off", "on", NULL};
- static char *av_sync_methods[] = {"metronom_feedback", "resample", NULL};
+ static char *av_sync_methods[] = {"metronom feedback", "resample", NULL};
this = xine_xmalloc (sizeof (aos_t)) ;
@@ -1883,26 +1883,59 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver,
this->av_sync_method_conf = config->register_enum(config, "audio.av_sync_method", 0,
av_sync_methods,
- _("choose method to sync audio and video"),
- _("'resample' might be better if you use a "
- "DXR3/H+ card and (analog) audio is "
- "processed by your sound card"),
- 30, ao_update_av_sync_method, this);
+ _("method to sync audio and video"),
+ _("When playing audio and video, there are at least "
+ "two clocks involved: The system clock, to which "
+ "video frames are synchronized and the clock "
+ "in your sound hardware, which determines the "
+ "speed of the audio playback. These clocks are "
+ "never ticking at the same speed except for some "
+ "rare cases where they are physically identical. "
+ "In general, the two clocks will run drift after "
+ "some time, for which xine offers two ways to "
+ "keep audio and video synchronized:\n\n"
+ "metronom feedback\n"
+ "This is the standard method, which applies a "
+ "countereffecting video drift, as soon as the audio "
+ "drift has accumulated over a threshold.\n\n"
+ "resample\n"
+ "For some video hardware, which is limited to a "
+ "fixed frame rate (like the DXR3 or other decoder "
+ "cards) the above does not work, because the video "
+ "cannot drift. Therefore we resample the audio "
+ "stream to make it longer or shorter to compensate "
+ "the audio drift error. This does not work for "
+ "digital passthrough, where audio data is passed to "
+ "an external decoder in digital form."),
+ 20, ao_update_av_sync_method, this);
config->update_num(config,"audio.av_sync_method",this->av_sync_method_conf);
this->resample_conf = config->register_enum (config, "audio.resample_mode", 0,
resample_modes,
- _("adjust whether resampling is done or not"),
- NULL, 20, NULL, NULL);
+ _("enable resampling"),
+ _("When the sample rate of the decoded audio does not "
+ "match the capabilities of your sound hardware, an "
+ "adaptation called \"resampling\" is required. Here you "
+ "can select, whether resampling is enabled, disabled or "
+ "used automatically when necessary."),
+ 20, NULL, NULL);
this->force_rate = config->register_num (config, "audio.force_rate", 0,
- _("if !=0 always resample to given rate"),
- NULL, 20, NULL, NULL);
+ _("always resample to this rate (0 to disable)"),
+ _("Some audio drivers do not correctly announce the "
+ "capabilities of the audio hardware. By setting a "
+ "value other than zero here, you can force the audio "
+ "stream to be resampled to the given rate."),
+ 20, NULL, NULL);
this->passthrough_offset = config->register_num (config,
"audio.passthrough_offset",
0,
- _("adjust if audio is offsync"),
- NULL, 10, NULL, NULL);
+ _("offset for digital passthrough"),
+ _("If you use an external surround decoder and "
+ "audio is ahead or behind video, you can enter "
+ "a fixed offset here to compensate.\nThe unit of "
+ "the value is one PTS tick, which is the 90000th "
+ "part of a second."), 10, NULL, NULL);
this->compression_factor = 2.0;
this->compression_factor_max = 0.0;
@@ -1968,13 +2001,13 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver,
int vol;
vol = config->register_range (config, "audio.mixer_volume",
- 50, 0, 100, _("Audio volume"),
- NULL, 0, NULL, NULL);
+ 50, 0, 100, _("startup audio volume"),
+ _("The overall audio volume set at xine startup."), 10, NULL, NULL);
if(config->register_bool (config, "audio.remember_volume", 0,
_("restore volume level at startup"),
- _("if this not set, xine will not touch any mixer settings at startup"),
- 0, NULL, NULL)) {
+ _("If disabled, xine will not modify any mixer settings at startup."),
+ 10, NULL, NULL)) {
int prop = 0;
if((ao_get_capabilities(&this->ao)) & AO_CAP_MIXER_VOL)
diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c
index 92bbaef66..03cc5bb64 100644
--- a/src/xine-engine/load_plugins.c
+++ b/src/xine-engine/load_plugins.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: load_plugins.c,v 1.174 2004/04/11 14:51:20 mroi Exp $
+ * $Id: load_plugins.c,v 1.175 2004/04/26 17:50:12 mroi Exp $
*
*
* Load input/demux/audio_out/video_out/codec plugins
@@ -303,6 +303,7 @@ static void _insert_plugin (xine_t *this,
uint32_t *types;
int priority = 0;
char key[80];
+ char desc[100];
int i;
if (info->API != api_version) {
@@ -359,13 +360,14 @@ static void _insert_plugin (xine_t *this,
priority = decoder_new->priority = decoder_old->priority;
sprintf(key, "decoder.%s_priority", info->id);
+ sprintf(desc, _("priority for decoder %s"), info->id);
this->config->register_num (this->config,
key,
0,
- "decoder's priority compared to others",
- "The priority provides a ranking in case some media "
- "can be handled by more than one decoder.\n"
- "A priority of 0 enables the decoder's default priority.", 20,
+ desc,
+ _("The priority provides a ranking in case some media "
+ "can be handled by more than one decoder.\n"
+ "A priority of 0 enables the decoder's default priority."), 20,
_decoder_priority_cb, (void *)this);
/* reset priority on old config files */
diff --git a/src/xine-engine/osd.c b/src/xine-engine/osd.c
index eeb40b02a..876fbc9cf 100644
--- a/src/xine-engine/osd.c
+++ b/src/xine-engine/osd.c
@@ -1375,8 +1375,11 @@ osd_renderer_t *_x_osd_renderer_init( xine_stream_t *stream ) {
this->textpalette = this->stream->xine->config->register_enum (this->stream->xine->config,
"misc.osd_text_palette", 0,
textpalettes_str,
- _("Palette (foreground-border-background) to use on subtitles"),
- NULL, 10, update_text_palette, this);
+ _("palette (foreground-border-background) to use for subtitles and OSD"),
+ _("The palette for on-screen-display and some subtitle formats that do "
+ "not specify any colouring themselves. The palettes are listed in the "
+ "form: foreground-border-background."),
+ 10, update_text_palette, this);
/*
* set up function pointer
diff --git a/src/xine-engine/video_decoder.c b/src/xine-engine/video_decoder.c
index 0255d71fe..c0c4af95c 100644
--- a/src/xine-engine/video_decoder.c
+++ b/src/xine-engine/video_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_decoder.c,v 1.148 2004/04/08 13:37:54 mroi Exp $
+ * $Id: video_decoder.c,v 1.149 2004/04/26 17:50:12 mroi Exp $
*
*/
@@ -456,9 +456,12 @@ void _x_video_decoder_init (xine_stream_t *stream) {
num_buffers = stream->xine->config->register_num (stream->xine->config,
"video.num_buffers",
500,
- "number of video buffers to allocate (higher values mean smoother playback but higher latency)",
- NULL, 20,
- NULL, NULL);
+ _("number of video buffers"),
+ _("The number of video buffers (each is 8k in size) "
+ "xine uses in its internal queue. Higher values "
+ "mean smoother playback for unreliable inputs, but "
+ "also increased latency and memory comsumption."),
+ 20, NULL, NULL);
stream->video_fifo = _x_fifo_buffer_new (num_buffers, 8192);
stream->spu_track_map_entries = 0;
diff --git a/src/xine-engine/video_out.c b/src/xine-engine/video_out.c
index 65a7f7d56..2f8deadf0 100644
--- a/src/xine-engine/video_out.c
+++ b/src/xine-engine/video_out.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out.c,v 1.190 2004/04/22 23:19:04 tmattern Exp $
+ * $Id: video_out.c,v 1.191 2004/04/26 17:50:13 mroi Exp $
*
* frame allocation / queuing / scheduling / output functions
*/
@@ -1550,12 +1550,16 @@ xine_video_port_t *_x_vo_new_port (xine_t *xine, vo_driver_t *driver,
this->warn_skipped_threshold =
xine->config->register_num (xine->config, "video.warn_skipped_threshold", 10,
- "send event to front end if percentage of skipped frames exceed this value",
- NULL, 20, NULL, NULL);
+ _("percentage of skipped frames to tolerate"),
+ _("When more than this percentage of frames are not shown, because they "
+ "were not decoded in time, xine sends a notification."),
+ 20, NULL, NULL);
this->warn_discarded_threshold =
xine->config->register_num (xine->config, "video.warn_discarded_threshold", 10,
- "send event to front end if percentage of discarded frames exceed this value",
- NULL, 20, NULL, NULL);
+ _("percentage of discarded frames to tolerate"),
+ _("When more than this percentage of frames are not shown, because they "
+ "were not scheduled for display in time, xine sends a notification."),
+ 20, NULL, NULL);
if (grabonly) {
diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c
index 625915008..d34db5c31 100644
--- a/src/xine-engine/xine.c
+++ b/src/xine-engine/xine.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine.c,v 1.290 2004/04/16 16:34:22 hadess Exp $
+ * $Id: xine.c,v 1.291 2004/04/26 17:50:13 mroi Exp $
*/
/*
@@ -1459,9 +1459,18 @@ void xine_init (xine_t *this) {
this->demux_strategy = this->config->register_enum (
this->config, "misc.demux_strategy", 0,
demux_strategies,
- _("Media format detection strategy"),
- NULL,
- 10, __config_demux_strategy_cb, this);
+ _("media format detection strategy"),
+ _("xine offers various methods to detect the media format of input to play. "
+ "The individual values are:\n\n"
+ "default\n"
+ "First try to detect by content, then by file name extension.\n\n"
+ "reverse\n"
+ "First try to detect by file name extension, then by content.\n\n"
+ "content\n"
+ "Detect by content only.\n\n"
+ "extension\n"
+ "Detect by file name extension only.\n"),
+ 20, __config_demux_strategy_cb, this);
/*
* save directory
@@ -1469,8 +1478,11 @@ void xine_init (xine_t *this) {
this->save_path = this->config->register_string (
this->config,
"misc.save_dir", "",
- _("Path for saving streams"),
- _("Streams will be saved only into this directory"),
+ _("directory for saving streams"),
+ _("When using the stream save feature, files will be written only into this directory.\n"
+ "This setting is security critical, because when changed to a different directory, xine "
+ "can be used to fill files in it with arbitrary content. So you should be careful that "
+ "the directory you specify is robust against any content in any file."),
XINE_CONFIG_SECURITY, __config_save_cb, this);
/*
diff --git a/src/xine-utils/memcpy.c b/src/xine-utils/memcpy.c
index 8353d6ba1..3d22dc8fa 100644
--- a/src/xine-utils/memcpy.c
+++ b/src/xine-utils/memcpy.c
@@ -477,8 +477,12 @@ void xine_probe_fast_memcpy(xine_t *xine)
best = xine->config->register_enum (xine->config, "misc.memcpy_method", 0,
memcpy_methods,
- _("Memcopy method to use in xine for large data chunks."),
- NULL, 20, update_fast_memcpy, (void *) xine);
+ _("memcopy method used by xine"),
+ _("The copying of large memory blocks is one of the most "
+ "expensive operations on todays computers. Therefore xine "
+ "provides various tuned methods to do this copying. "
+ "Usually, the best method is detected automatically."),
+ 20, update_fast_memcpy, (void *) xine);
/* check if function is configured and valid for this machine */
if( best != 0 &&