summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Roitzsch <mroi@users.sourceforge.net>2004-04-10 15:29:57 +0000
committerMichael Roitzsch <mroi@users.sourceforge.net>2004-04-10 15:29:57 +0000
commit8709e54a06fe7001e4d29ecb1ff727571946ad37 (patch)
tree459c225d0d72101063e7f4b339187ab82a3d82d3
parentff5c5208ea05402db639909336291ce940c13ec8 (diff)
downloadxine-lib-8709e54a06fe7001e4d29ecb1ff727571946ad37.tar.gz
xine-lib-8709e54a06fe7001e4d29ecb1ff727571946ad37.tar.bz2
improving config help strings
and dropping support for em8300 drivers older than 0.12.0 (this is older than two years) CVS patchset: 6380 CVS date: 2004/04/10 15:29:57
-rw-r--r--src/dxr3/dxr3.h9
-rw-r--r--src/dxr3/dxr3_decode_spu.c25
-rw-r--r--src/dxr3/dxr3_decode_video.c49
-rw-r--r--src/dxr3/dxr3_mpeg_encoders.c15
-rw-r--r--src/dxr3/dxr3_scr.c20
-rw-r--r--src/dxr3/video_out_dxr3.c102
-rw-r--r--src/dxr3/video_out_dxr3.h5
7 files changed, 114 insertions, 111 deletions
diff --git a/src/dxr3/dxr3.h b/src/dxr3/dxr3.h
index ea2371571..59bb439d2 100644
--- a/src/dxr3/dxr3.h
+++ b/src/dxr3/dxr3.h
@@ -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: dxr3.h,v 1.7 2003/12/09 00:02:29 f1rmb Exp $
+ * $Id: dxr3.h,v 1.8 2004/04/10 15:29:57 mroi Exp $
*/
#ifndef HAVE_DXR3_H
@@ -28,10 +28,9 @@
#include "xine_internal.h"
/* data for the device name config entry */
-#define CONF_LOOKUP "dxr3.devicename"
-#define CONF_DEFAULT "/dev/em8300-0"
-#define CONF_NAME _("Dxr3: Device Name")
-#define CONF_HELP _("The device file of the dxr3 mpeg decoder card control device.")
+#define CONF_KEY "dxr3.device_number"
+#define CONF_NAME _("DXR3 device number")
+#define CONF_HELP _("If you have more than one DXR3 in your computer, you can specify which one to use here.")
/* image format used by dxr3_decoder to tag undecoded mpeg data */
#define XINE_IMGFMT_DXR3 (('3'<<24)|('R'<<16)|('X'<<8)|'D')
diff --git a/src/dxr3/dxr3_decode_spu.c b/src/dxr3/dxr3_decode_spu.c
index 32f294ff5..8021ce84c 100644
--- a/src/dxr3/dxr3_decode_spu.c
+++ b/src/dxr3/dxr3_decode_spu.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: dxr3_decode_spu.c,v 1.45 2004/03/31 16:18:16 mroi Exp $
+ * $Id: dxr3_decode_spu.c,v 1.46 2004/04/10 15:29:57 mroi Exp $
*/
/* dxr3 spu decoder plugin.
@@ -127,8 +127,7 @@ typedef struct dxr3_spudec_s {
dxr3_driver_t *dxr3_vo; /* we need to talk to the video out */
xine_event_queue_t *event_queue;
- char devname[128];
- char devnum[3];
+ int devnum;
int fd_spu; /* to access the dxr3 spu device */
dxr3_spu_stream_state_t spu_stream_state[MAX_SPU_STREAMS];
@@ -175,8 +174,6 @@ static spu_decoder_t *dxr3_spudec_open_plugin(spu_decoder_class_t *class_gen, xi
{
dxr3_spudec_t *this;
dxr3_spudec_class_t *class = (dxr3_spudec_class_t *)class_gen;
- const char *confstr;
- int dashpos;
char tmpstr[128];
int i;
@@ -199,27 +196,15 @@ static spu_decoder_t *dxr3_spudec_open_plugin(spu_decoder_class_t *class_gen, xi
this->dxr3_vo = (dxr3_driver_t *)stream->video_driver;
this->event_queue = xine_event_new_queue(stream);
- confstr = stream->xine->config->register_string(stream->xine->config,
- CONF_LOOKUP, CONF_DEFAULT, CONF_NAME, CONF_HELP, 0, NULL, NULL);
- strncpy(this->devname, confstr, 128);
- this->devname[127] = '\0';
- dashpos = strlen(this->devname) - 2; /* the dash in the new device naming scheme would be here */
- if (this->devname[dashpos] == '-') {
- /* use new device naming scheme with trailing number */
- strncpy(this->devnum, &this->devname[dashpos], 3);
- this->devname[dashpos] = '\0';
- } else {
- /* use old device naming scheme without trailing number */
- /* FIXME: remove this when everyone uses em8300 >=0.12.0 */
- this->devnum[0] = '\0';
- }
+ this->devnum = stream->xine->config->register_num(stream->xine->config,
+ CONF_KEY, 0, CONF_NAME, CONF_HELP, 10, NULL, NULL);
pthread_mutex_lock(&this->dxr3_vo->spu_device_lock);
if (this->dxr3_vo->fd_spu)
this->fd_spu = this->dxr3_vo->fd_spu;
else {
/* open dxr3 spu device */
- snprintf(tmpstr, sizeof(tmpstr), "%s_sp%s", this->devname, this->devnum);
+ snprintf(tmpstr, sizeof(tmpstr), "/dev/em8300_sp-%d", this->devnum);
if ((this->fd_spu = open(tmpstr, O_WRONLY)) < 0) {
xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
_("dxr3_decode_spu: Failed to open spu device %s (%s)\n"), tmpstr, strerror(errno));
diff --git a/src/dxr3/dxr3_decode_video.c b/src/dxr3/dxr3_decode_video.c
index 3b8a8270e..dbd510020 100644
--- a/src/dxr3/dxr3_decode_video.c
+++ b/src/dxr3/dxr3_decode_video.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: dxr3_decode_video.c,v 1.52 2004/02/16 20:19:09 uid86226 Exp $
+ * $Id: dxr3_decode_video.c,v 1.53 2004/04/10 15:29:57 mroi Exp $
*/
/* dxr3 video decoder plugin.
@@ -101,8 +101,7 @@ typedef struct dxr3_decoder_s {
xine_stream_t *stream;
dxr3_scr_t *scr; /* shortcut to the scr plugin in the dxr3 video out */
- char devname[128];
- char devnum[3];
+ int devnum;
int fd_control;
int fd_video; /* to access the dxr3 devices */
@@ -172,8 +171,6 @@ static video_decoder_t *dxr3_open_plugin(video_decoder_class_t *class_gen, xine_
dxr3_decoder_t *this;
dxr3_decoder_class_t *class = (dxr3_decoder_class_t *)class_gen;
config_values_t *cfg;
- const char *confstr;
- int dashpos;
char tmpstr[128];
if (class->instance) return NULL;
@@ -194,21 +191,9 @@ static video_decoder_t *dxr3_open_plugin(video_decoder_class_t *class_gen, xine_
this->stream = stream;
this->scr = NULL;
- confstr = cfg->register_string(cfg, CONF_LOOKUP, CONF_DEFAULT, CONF_NAME, CONF_HELP, 0, NULL, NULL);
- strncpy(this->devname, confstr, 128);
- this->devname[127] = '\0';
- dashpos = strlen(this->devname) - 2; /* the dash in the new device naming scheme would be here */
- if (this->devname[dashpos] == '-') {
- /* use new device naming scheme with trailing number */
- strncpy(this->devnum, &this->devname[dashpos], 3);
- this->devname[dashpos] = '\0';
- } else {
- /* use old device naming scheme without trailing number */
- /* FIXME: remove this when everyone uses em8300 >=0.12.0 */
- this->devnum[0] = '\0';
- }
+ this->devnum = cfg->register_num(cfg, CONF_KEY, 0, CONF_NAME, CONF_HELP, 10, NULL, NULL);
- snprintf(tmpstr, sizeof(tmpstr), "%s%s", this->devname, this->devnum);
+ snprintf(tmpstr, sizeof(tmpstr), "/dev/em8300-%d", this->devnum);
#if LOG_VID
printf("dxr3_decode_video: Entering video init, devname=%s.\n",tmpstr);
#endif
@@ -246,17 +231,23 @@ static video_decoder_t *dxr3_open_plugin(video_decoder_class_t *class_gen, xine_
this->avg_duration = 0;
this->sync_every_frame = cfg->register_bool(cfg,
- "dxr3.sync_every_frame", 0, _("Try to sync video every frame"),
- _("This is relevant for progressive video only (most PAL films)."), 20,
- dxr3_update_sync_mode, this);
+ "dxr3.sync_every_frame", 0, _("try to sync video every frame"),
+ _("Tries to set a synchronization timestamp for every frame. "
+ "Normally this is not necessary, because sync is sufficent "
+ "even when the timestamp is set only every now and then.\n"
+ "This is relevant for progressive video only (most PAL films)."),
+ 20, dxr3_update_sync_mode, this);
this->enhanced_mode = cfg->register_bool(cfg,
- "dxr3.alt_play_mode", 1, _("Use alternate Play mode"),
- _("Enabling this option will utilise a smoother play mode."), 10,
- dxr3_update_enhanced_mode, this);
+ "dxr3.alt_play_mode", 1, _("use smooth play mode"),
+ _("Enabling this option will utilise a smoother play mode."),
+ 20, dxr3_update_enhanced_mode, this);
this->correct_durations = cfg->register_bool(cfg,
- "dxr3.correct_durations", 0, _("Correct frame durations in broken streams"),
- _("Enable this for streams with wrong frame durations."), 10,
- dxr3_update_correct_durations, this);
+ "dxr3.correct_durations", 0, _("correct frame durations in broken streams"),
+ _("Enables a small logic that corrects the frame durations of "
+ "some mpeg streams with wrong framerate codes. Currently a "
+ "correction for NTSC streams erroneously labeled as PAL "
+ "streams is implemented. Enable only, when you encounter such streams."),
+ 0, dxr3_update_correct_durations, this);
/* the dxr3 needs a longer prebuffering to have time for its internal decoding */
this->stream->metronom->set_option(this->stream->metronom, METRONOM_PREBUFFER, 90000);
@@ -499,7 +490,7 @@ static void dxr3_decode_data(video_decoder_t *this_gen, buf_element_t *buf)
int64_t time;
/* open the device for the decoder */
- snprintf (tmpstr, sizeof(tmpstr), "%s_mv%s", this->devname, this->devnum);
+ snprintf (tmpstr, sizeof(tmpstr), "/dev/em8300_mv-%d", this->devnum);
if ((this->fd_video = open(tmpstr, O_WRONLY)) < 0) {
xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
_("dxr3_decode_video: Failed to open video device %s (%s)\n"), tmpstr, strerror(errno));
diff --git a/src/dxr3/dxr3_mpeg_encoders.c b/src/dxr3/dxr3_mpeg_encoders.c
index 7ec432eeb..90df5031d 100644
--- a/src/dxr3/dxr3_mpeg_encoders.c
+++ b/src/dxr3/dxr3_mpeg_encoders.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: dxr3_mpeg_encoders.c,v 1.17 2004/01/04 22:26:29 mroi Exp $
+ * $Id: dxr3_mpeg_encoders.c,v 1.18 2004/04/10 15:29:57 mroi Exp $
*/
/* mpeg encoders for the dxr3 video out plugin.
@@ -186,9 +186,9 @@ static int rte_on_update_format(dxr3_driver_t *drv, dxr3_frame_t *frame)
this->rte_bitrate = drv->class->xine->config->register_range(drv->class->xine->config,
"dxr3.rte_bitrate", 10000, 1000, 20000,
- _("Dxr3enc: rte mpeg output bitrate (kbit/s)"),
- _("The bitrate the mpeg encoder library librte should use for dxr3's encoding mode"), 10,
- NULL, NULL);
+ _("rte mpeg output bitrate (kbit/s)"),
+ _("The bitrate the mpeg encoder library librte should use for DXR3's encoding mode."
+ "Higher values will increase quality and CPU usage."), 10, NULL, NULL);
this->rte_bitrate *= 1000; /* config in kbit/s, rte wants bit/s */
/* FIXME: this needs to be replaced with a codec option call.
@@ -388,9 +388,10 @@ static int fame_on_update_format(dxr3_driver_t *drv, dxr3_frame_t *frame)
this->fp = init_fp;
this->fp.quality = drv->class->xine->config->register_range(drv->class->xine->config,
"dxr3.fame_quality", 90, 10, 100,
- _("Dxr3enc: fame mpeg encoding quality"),
- _("The encoding quality of the libfame mpeg encoder library."), 10,
- NULL,NULL);
+ _("fame mpeg encoding quality"),
+ _("The encoding quality of the libfame mpeg encoder library. "
+ "Lower is faster but gives noticeable artifacts. Higher is better but slower."),
+ 10, NULL,NULL);
#if LOG_ENC
/* the really interesting bit is the quantizer scale. The formula
* below is copied from libfame's sources (could be changed in the
diff --git a/src/dxr3/dxr3_scr.c b/src/dxr3/dxr3_scr.c
index 2be48c3d8..5c9ca39cc 100644
--- a/src/dxr3/dxr3_scr.c
+++ b/src/dxr3/dxr3_scr.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: dxr3_scr.c,v 1.13 2004/01/04 22:26:29 mroi Exp $
+ * $Id: dxr3_scr.c,v 1.14 2004/04/10 15:29:57 mroi Exp $
*/
/* dxr3 scr plugin.
@@ -58,15 +58,17 @@ static void dxr3_scr_update_priority(void *this_gen, xine_cfg_entry_t *entry)
dxr3_scr_t *dxr3_scr_init(xine_t *xine)
{
dxr3_scr_t *this;
- const char *confstr;
+ int devnum;
+ char tmpstr[128];
this = (dxr3_scr_t *)xine_xmalloc(sizeof(dxr3_scr_t));
- confstr = xine->config->register_string(xine->config,
- CONF_LOOKUP, CONF_DEFAULT, CONF_NAME, CONF_HELP, 0, NULL, NULL);
- if ((this->fd_control = open(confstr, O_WRONLY)) < 0) {
+ devnum = xine->config->register_num(xine->config,
+ CONF_KEY, 0, CONF_NAME, CONF_HELP, 10, NULL, NULL);
+ snprintf(tmpstr, sizeof(tmpstr), "/dev/em8300-%d", devnum);
+ if ((this->fd_control = open(tmpstr, O_WRONLY)) < 0) {
xprintf(this->xine, XINE_VERBOSITY_DEBUG,
- "dxr3_scr: Failed to open control device %s (%s)\n", confstr, strerror(errno));
+ "dxr3_scr: Failed to open control device %s (%s)\n", tmpstr, strerror(errno));
free(this);
return NULL;
}
@@ -82,8 +84,10 @@ dxr3_scr_t *dxr3_scr_init(xine_t *xine)
this->scr_plugin.exit = dxr3_scr_exit;
this->priority = xine->config->register_num(
- xine->config, "dxr3.scr_priority", 10, _("Dxr3: SCR plugin priority"),
- _("Scr priorities greater 5 make the dxr3 xine's master clock."), 20,
+ xine->config, "dxr3.scr_priority", 10, _("SCR plugin priority"),
+ _("Priority of the DXR3 SCR plugin. Values less than 5 mean that the "
+ "unix system timer will be used. Values greater 5 force to use "
+ "DXR3's internal clock as sync source."), 25,
dxr3_scr_update_priority, this);
this->offset = 0;
this->last_pts = 0;
diff --git a/src/dxr3/video_out_dxr3.c b/src/dxr3/video_out_dxr3.c
index e34a919e9..59f996ea5 100644
--- a/src/dxr3/video_out_dxr3.c
+++ b/src/dxr3/video_out_dxr3.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_dxr3.c,v 1.99 2004/03/31 16:18:55 mroi Exp $
+ * $Id: video_out_dxr3.c,v 1.100 2004/04/10 15:29:57 mroi Exp $
*/
/* mpeg1 encoding video out plugin for the dxr3.
@@ -167,26 +167,12 @@ static void *dxr3_aa_init_plugin(xine_t *xine, void *visual_gen)
static dxr3_driver_class_t *dxr3_vo_init_plugin(xine_t *xine, void *visual_gen)
{
dxr3_driver_class_t *this;
- const char *confstr;
- int dashpos;
this = (dxr3_driver_class_t *)xine_xmalloc(sizeof(dxr3_driver_class_t));
if (!this) return NULL;
- confstr = xine->config->register_string(xine->config,
- CONF_LOOKUP, CONF_DEFAULT, CONF_NAME, CONF_HELP, 0, NULL, NULL);
- strncpy(this->devname, confstr, 128);
- this->devname[127] = '\0';
- dashpos = strlen(this->devname) - 2; /* the dash in the new device naming scheme would be here */
- if (this->devname[dashpos] == '-') {
- /* use new device naming scheme with trailing number */
- strncpy(this->devnum, &this->devname[dashpos], 3);
- this->devname[dashpos] = '\0';
- } else {
- /* use old device naming scheme without trailing number */
- /* FIXME: remove this when everyone uses em8300 >=0.12.0 */
- this->devnum[0] = '\0';
- }
+ this->devnum = xine->config->register_num(xine->config,
+ CONF_KEY, 0, CONF_NAME, CONF_HELP, 10, NULL, NULL);
this->video_driver_class.open_plugin = dxr3_vo_open_plugin;
this->video_driver_class.get_identifier = dxr3_vo_get_identifier;
@@ -266,19 +252,22 @@ static vo_driver_t *dxr3_vo_open_plugin(video_driver_class_t *class_gen, const v
this->class = class;
this->swap_fields = config->register_bool(config,
- "dxr3.enc_swap_fields", 0, _("swap odd and even lines"), NULL, 10,
- dxr3_update_swap_fields, this);
+ "dxr3.enc_swap_fields", 0, _("swap odd and even lines"),
+ _("Swaps the even and odd field of the image.\nEnable this option for "
+ "non-MPEG material which produces a vertical jitter on screen."),
+ 10, dxr3_update_swap_fields, this);
this->add_bars = config->register_bool(config,
- "dxr3.enc_add_bars", 1, _("Add black bars to correct aspect ratio"),
- _("If disabled, will assume source has 4:3 aspect ratio."), 10,
- dxr3_update_add_bars, this);
+ "dxr3.enc_add_bars", 1, _("add black bars to correct aspect ratio"),
+ _("Adds black bars when the image has an aspect ratio the card cannot "
+ "handle natively. This is needed to maintain proper image proportions."),
+ 20, dxr3_update_add_bars, this);
this->enhanced_mode = config->register_bool(config,
"dxr3.enc_alt_play_mode", 1,
- _("dxr3: use alternate play mode for mpeg encoder playback"),
- _("Enabling this option will utilise a smoother play mode."), 10,
- dxr3_update_enhanced_mode, this);
+ _("use smooth play mode for mpeg encoder playback"),
+ _("Enabling this option will utilise a smoother play mode for non-MPEG content."),
+ 20, dxr3_update_enhanced_mode, this);
- snprintf(tmpstr, sizeof(tmpstr), "%s%s", class->devname, class->devnum);
+ snprintf(tmpstr, sizeof(tmpstr), "/dev/em8300-%d", class->devnum);
#if LOG_VID
printf("video_out_dxr3: Entering video init, devname = %s.\n", tmpstr);
#endif
@@ -290,7 +279,7 @@ static vo_driver_t *dxr3_vo_open_plugin(video_driver_class_t *class_gen, const v
return 0;
}
- snprintf (tmpstr, sizeof(tmpstr), "%s_mv%s", class->devname, class->devnum);
+ snprintf (tmpstr, sizeof(tmpstr), "/dev/em8300_mv-%d", class->devnum);
if ((this->fd_video = open (tmpstr, O_WRONLY | O_SYNC )) < 0) {
xprintf(this->class->xine, XINE_VERBOSITY_LOG,
_("video_out_dxr3: Failed to open video device %s (%s)\n"), tmpstr, strerror(errno));
@@ -335,9 +324,16 @@ static vo_driver_t *dxr3_vo_open_plugin(video_driver_class_t *class_gen, const v
#endif
if (encoder) {
encoder = config->register_enum(config, "dxr3.encoder", 0,
- available_encoders, _("the encoder for non mpeg content"),
- _("Content other than mpeg has to pass an additional reencoding stage, "
- "because the dxr3 handles mpeg only."), 10, NULL, NULL);
+ available_encoders, _("encoder for non mpeg content"),
+ _("Content other than MPEG has to pass an additional reencoding stage, "
+ "because the dxr3 handles only MPEG.\nDepending on what is supported by your xine, "
+ "this setting can be \"fame\", \"rte\", \"libavcodec\" or \"none\".\n"
+ "The \"libavcodec\" encoder makes use of the ffmpeg plugin that already ships with xine, "
+ "so you do not need to install any additional library for that. Even better is that "
+ "libdavcodec also provides high quality with low CPU usage. Using \"libavcodec\" is "
+ "therefore strongly suggested.\n\"fame\" and \"rte\" are still there, "
+ "but xine support for them is outdated, so these might fail to work."),
+ 0, NULL, NULL);
if ((strcmp(available_encoders[encoder], "libavcodec") == 0) && !dxr3_lavc_init(this, node)) {
xprintf(this->class->xine, XINE_VERBOSITY_LOG,
_("video_out_dxr3: Mpeg encoder libavcodec failed to init.\n"));
@@ -380,7 +376,28 @@ static vo_driver_t *dxr3_vo_open_plugin(video_driver_class_t *class_gen, const v
/* overlay or tvout? */
confnum = config->register_enum(config, "dxr3.videoout_mode", 0, videoout_modes,
- _("Dxr3: videoout mode (tv or overlay)"), NULL, 0, NULL, NULL);
+ _("video output mode (TV or overlay)"),
+ _("The way the DXR3 outputs the final video can be set here. The individual values are:\n\n"
+ "letterboxed tv\n"
+ "Send video to the TV out connector only. This is the mode used for the standard 4:3 "
+ "television set. Anamorphic (16:9) video will be displayed letterboxed, pan&scan "
+ "material will have the image cropped at the left and right side. This is the common "
+ "setting for TV viewing and acts like a standalone DVD player.\n\n"
+ "widescreen tv\n"
+ "Send video to the tv out connector only. This mode is intended for 16:9 widescreen TV sets. "
+ "Anamorphic and pan&scan content will fill the entire screen, but you have to set the "
+ "TV's aspect ratio manually to 16:9 using your.\n\n"
+ "letterboxed overlay\n"
+ "Overlay Video output on the computer screen with the option of on-the-fly switching "
+ "to TV out by hiding the video window. The overlay will be displayed with black borders "
+ "if it is anamorphic (16:9).\n"
+ "This setting is only useful in the rare case of a DVD subtitle channel that would "
+ "only display properly in letterbox mode. A good example for that are the animated "
+ "commentator's silhouettes on \"Ghostbusters\".\n\n"
+ "widescreen overlay\n"
+ "Overlay Video output on the computer screen with the option of on-the-fly switching "
+ "to TV out by hiding the video window. This is the common variant of DXR3 overlay."),
+ 0, NULL, NULL);
if (!(class->visual_type == XINE_VISUAL_TYPE_X11) && confnum > 1)
/* no overlay modes when not using X11 -> switch to letterboxed tv */
confnum = 0;
@@ -411,15 +428,20 @@ static vo_driver_t *dxr3_vo_open_plugin(video_driver_class_t *class_gen, const v
this->tv_switchable = 1;
this->widescreen_enabled = confnum - 2;
confstr = config->register_string(config, "dxr3.keycolor", "0x80a040",
- _("Dxr3: overlay colorkey value"), NULL, 10, NULL, NULL);
+ _("overlay colorkey value"), _("Hexadecimal RGB value of the key color.\n"
+ "You can try different values, if you experience windows becoming transparent "
+ "when using DXR3 overlay mode."), 20, NULL, NULL);
sscanf(confstr, "%x", &this->overlay.colorkey);
confstr = config->register_string(config, "dxr3.color_interval", "50.0",
- _("Dxr3: overlay colorkey range"),
- _("A greater value widens the tolerance for the overlay keycolor"), 10, NULL, NULL);
+ _("overlay colorkey tolerance"), _("A greater value widens the tolerance for "
+ "the overlay keycolor.\nYou can try lower values, if you experience windows "
+ "becoming transparent when using DXR3 overlay mode, but parts of the image borders may "
+ "disappear when using a too low setting."), 20, NULL, NULL);
sscanf(confstr, "%f", &this->overlay.color_interval);
this->overlay.shrink = config->register_num(config, "dxr3.shrink_overlay_area", 0,
- _("Crops the overlay area from top and bottom to avoid green lines"),
- NULL, 20, NULL, NULL);
+ _("crop the overlay area at top and bottom"),
+ _("Removes one pixel line from the top and bottom of the overlay. Enable this, if "
+ "you see green lines at the top or bottom of the overlay."), 10, NULL, NULL);
} else {
xprintf(this->class->xine, XINE_VERBOSITY_LOG,
_("video_out_dxr3: please run autocal, overlay disabled\n"));
@@ -432,7 +454,9 @@ static vo_driver_t *dxr3_vo_open_plugin(video_driver_class_t *class_gen, const v
/* init tvmode */
confnum = config->register_enum(config, "dxr3.preferred_tvmode", 3, tv_modes,
- _("dxr3 preferred tv mode"), NULL, 0, NULL, NULL);
+ _("preferred tv mode"), _("Selects the TV mode to be used by the DXR3. The values mean:\n\n"
+ "ntsc: NTSC at 60Hz\npal: PAL at 50Hz\npal60: PAL at 60Hz\ndefault: keep the card's setting"),
+ 0, NULL, NULL);
switch (confnum) {
case 0: /* ntsc */
this->tv_mode = EM8300_VIDEOMODE_NTSC;
@@ -634,7 +658,7 @@ static void dxr3_update_frame_format(vo_driver_t *this_gen, vo_frame_t *frame_ge
int64_t time;
/* open the device for the encoder */
- snprintf(tmpstr, sizeof(tmpstr), "%s_mv%s", this->class->devname, this->class->devnum);
+ snprintf(tmpstr, sizeof(tmpstr), "/dev/em8300_mv-%d", this->class->devnum);
if ((this->fd_video = open(tmpstr, O_WRONLY)) < 0)
xprintf(this->class->xine, XINE_VERBOSITY_DEBUG,
"video_out_dxr3: Failed to open video device %s (%s)\n", tmpstr, strerror(errno));
@@ -827,7 +851,7 @@ static void dxr3_overlay_end(vo_driver_t *this_gen, vo_frame_t *frame_gen)
/* try to open the dxr3 spu device */
if (!this->fd_spu) {
- snprintf (tmpstr, sizeof(tmpstr), "%s_sp%s", this->class->devname, this->class->devnum);
+ snprintf (tmpstr, sizeof(tmpstr), "/dev/em8300_sp-%d", this->class->devnum);
if ((this->fd_spu = open (tmpstr, O_WRONLY)) < 0) {
xprintf(this->class->xine, XINE_VERBOSITY_DEBUG,
"video_out_dxr3: Failed to open spu device %s (%s)\n"
diff --git a/src/dxr3/video_out_dxr3.h b/src/dxr3/video_out_dxr3.h
index 1e54e1c4d..8454eb2bc 100644
--- a/src/dxr3/video_out_dxr3.h
+++ b/src/dxr3/video_out_dxr3.h
@@ -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_dxr3.h,v 1.21 2004/01/04 22:26:29 mroi Exp $
+ * $Id: video_out_dxr3.h,v 1.22 2004/04/10 15:29:58 mroi Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -76,8 +76,7 @@ typedef struct dxr3_driver_class_s {
int visual_type;
int instance; /* we allow only one instance of this plugin */
- char devname[128];
- char devnum[3];
+ int devnum;
dxr3_scr_t *scr; /* to provide dxr3 clocking */
} dxr3_driver_class_t;