From 8709e54a06fe7001e4d29ecb1ff727571946ad37 Mon Sep 17 00:00:00 2001 From: Michael Roitzsch Date: Sat, 10 Apr 2004 15:29:57 +0000 Subject: 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 --- src/dxr3/dxr3.h | 9 ++-- src/dxr3/dxr3_decode_spu.c | 25 +++-------- src/dxr3/dxr3_decode_video.c | 49 +++++++++----------- src/dxr3/dxr3_mpeg_encoders.c | 15 ++++--- src/dxr3/dxr3_scr.c | 20 +++++---- src/dxr3/video_out_dxr3.c | 102 ++++++++++++++++++++++++++---------------- src/dxr3/video_out_dxr3.h | 5 +-- 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; -- cgit v1.2.3