summaryrefslogtreecommitdiff
path: root/src/input/vcd
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/vcd')
-rw-r--r--src/input/vcd/.hgignore (renamed from src/input/vcd/.cvsignore)0
-rw-r--r--src/input/vcd/Makefile.am2
-rw-r--r--src/input/vcd/libcdio/.hgignore (renamed from src/input/vcd/libcdio/.cvsignore)0
-rw-r--r--src/input/vcd/libcdio/MSWindows/.hgignore (renamed from src/input/vcd/libcdio/MSWindows/.cvsignore)0
-rw-r--r--src/input/vcd/libcdio/cdio/.hgignore (renamed from src/input/vcd/libcdio/cdio/.cvsignore)0
-rw-r--r--src/input/vcd/libcdio/image/.hgignore (renamed from src/input/vcd/libcdio/image/.cvsignore)0
-rw-r--r--src/input/vcd/libcdio/iso9660_fs.c8
-rw-r--r--src/input/vcd/libvcd/.hgignore (renamed from src/input/vcd/libvcd/.cvsignore)0
-rw-r--r--src/input/vcd/libvcd/info.c16
-rw-r--r--src/input/vcd/libvcd/libvcd/.hgignore (renamed from src/input/vcd/libvcd/libvcd/.cvsignore)0
-rw-r--r--src/input/vcd/libvcd/vcd.c6
-rw-r--r--src/input/vcd/vcdio.c19
-rw-r--r--src/input/vcd/vcdplayer.c8
-rw-r--r--src/input/vcd/xineplug_inp_vcd.c19
14 files changed, 48 insertions, 30 deletions
diff --git a/src/input/vcd/.cvsignore b/src/input/vcd/.hgignore
index 7d926a554..7d926a554 100644
--- a/src/input/vcd/.cvsignore
+++ b/src/input/vcd/.hgignore
diff --git a/src/input/vcd/Makefile.am b/src/input/vcd/Makefile.am
index deb30e78f..98903aac8 100644
--- a/src/input/vcd/Makefile.am
+++ b/src/input/vcd/Makefile.am
@@ -18,7 +18,7 @@ xineplug_inp_vcd_la_LDFLAGS = -avoid-version -module
if HAVE_VCDNAV
xineplug_inp_vcd_la_LIBADD = $(XINE_LIB) $(LIBVCDINFO_LIBS)
else
-xineplug_inp_vcd_la_LIBADD = $(XINE_LIB) $(LIBVCD_LIBS) $(LIBVCDINFO_LIBS)
+xineplug_inp_vcd_la_LIBADD = $(XINE_LIB) $(LIBVCD_LIBS) $(LIBVCDINFO_LIBS) -lm
endif
endif
diff --git a/src/input/vcd/libcdio/.cvsignore b/src/input/vcd/libcdio/.hgignore
index 7d926a554..7d926a554 100644
--- a/src/input/vcd/libcdio/.cvsignore
+++ b/src/input/vcd/libcdio/.hgignore
diff --git a/src/input/vcd/libcdio/MSWindows/.cvsignore b/src/input/vcd/libcdio/MSWindows/.hgignore
index 282522db0..282522db0 100644
--- a/src/input/vcd/libcdio/MSWindows/.cvsignore
+++ b/src/input/vcd/libcdio/MSWindows/.hgignore
diff --git a/src/input/vcd/libcdio/cdio/.cvsignore b/src/input/vcd/libcdio/cdio/.hgignore
index 282522db0..282522db0 100644
--- a/src/input/vcd/libcdio/cdio/.cvsignore
+++ b/src/input/vcd/libcdio/cdio/.hgignore
diff --git a/src/input/vcd/libcdio/image/.cvsignore b/src/input/vcd/libcdio/image/.hgignore
index 282522db0..282522db0 100644
--- a/src/input/vcd/libcdio/image/.cvsignore
+++ b/src/input/vcd/libcdio/image/.hgignore
diff --git a/src/input/vcd/libcdio/iso9660_fs.c b/src/input/vcd/libcdio/iso9660_fs.c
index 0a2de8fa1..fff12cd7c 100644
--- a/src/input/vcd/libcdio/iso9660_fs.c
+++ b/src/input/vcd/libcdio/iso9660_fs.c
@@ -1,5 +1,5 @@
/*
- $Id: iso9660_fs.c,v 1.6 2006/09/28 08:19:14 dgp85 Exp $
+ $Id: iso9660_fs.c,v 1.7 2006/12/08 16:26:10 mshopf Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -51,7 +51,7 @@
#include <stdio.h>
-static const char _rcsid[] = "$Id: iso9660_fs.c,v 1.6 2006/09/28 08:19:14 dgp85 Exp $";
+static const char _rcsid[] = "$Id: iso9660_fs.c,v 1.7 2006/12/08 16:26:10 mshopf Exp $";
/* Implementation of iso9660_t type */
struct _iso9660 {
@@ -1200,9 +1200,7 @@ find_fs_lsn_recurse (CdIo *p_cdio, const char pathname[], lsn_t lsn)
char _fullname[4096] = { 0, };
char *filename = (char *) statbuf->filename;
- snprintf (_fullname, sizeof (_fullname), "%s%s", pathname, filename);
-
- strncat (_fullname, "/", sizeof (_fullname));
+ snprintf (_fullname, sizeof (_fullname), "%s%s/", pathname, filename);
if (statbuf->type == _STAT_DIR
&& strcmp ((char *) statbuf->filename, ".")
diff --git a/src/input/vcd/libvcd/.cvsignore b/src/input/vcd/libvcd/.hgignore
index 7d926a554..7d926a554 100644
--- a/src/input/vcd/libvcd/.cvsignore
+++ b/src/input/vcd/libvcd/.hgignore
diff --git a/src/input/vcd/libvcd/info.c b/src/input/vcd/libvcd/info.c
index d178968a8..b01bd6eee 100644
--- a/src/input/vcd/libvcd/info.c
+++ b/src/input/vcd/libvcd/info.c
@@ -1,5 +1,5 @@
/*
- $Id: info.c,v 1.7 2006/09/26 22:29:39 dgp85 Exp $
+ $Id: info.c,v 1.8 2007/03/23 21:47:31 dsalt Exp $
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -59,7 +59,7 @@
#include <stddef.h>
#include <errno.h>
-static const char _rcsid[] = "$Id: info.c,v 1.7 2006/09/26 22:29:39 dgp85 Exp $";
+static const char _rcsid[] = "$Id: info.c,v 1.8 2007/03/23 21:47:31 dsalt Exp $";
#define BUF_COUNT 16
#define BUF_SIZE 80
@@ -1904,14 +1904,12 @@ vcdinfo_open(vcdinfo_obj_t **obj_p, char *source_name[],
strlen (ISO_XA_MARKER_STRING));
}
- if (!read_info(obj->img, &(obj->info), &(obj->vcd_type)))
- return VCDINFO_OPEN_OTHER;
-
- if (vcdinfo_get_format_version (obj) == VCD_TYPE_INVALID)
- return VCDINFO_OPEN_OTHER;
-
- if (!read_entries(obj->img, &(obj->entries)))
+ if (!read_info(obj->img, &(obj->info), &(obj->vcd_type)) ||
+ vcdinfo_get_format_version (obj) == VCD_TYPE_INVALID ||
+ !read_entries(obj->img, &(obj->entries))) {
+ free (obj); /* match 0.7.23's behaviour */
return VCDINFO_OPEN_OTHER;
+ }
{
size_t len = strlen(*source_name)+1;
diff --git a/src/input/vcd/libvcd/libvcd/.cvsignore b/src/input/vcd/libvcd/libvcd/.hgignore
index 282522db0..282522db0 100644
--- a/src/input/vcd/libvcd/libvcd/.cvsignore
+++ b/src/input/vcd/libvcd/libvcd/.hgignore
diff --git a/src/input/vcd/libvcd/vcd.c b/src/input/vcd/libvcd/vcd.c
index e9618a7d7..0772149ec 100644
--- a/src/input/vcd/libvcd/vcd.c
+++ b/src/input/vcd/libvcd/vcd.c
@@ -1,5 +1,5 @@
/*
- $Id: vcd.c,v 1.3 2005/01/01 02:43:59 rockyb Exp $
+ $Id: vcd.c,v 1.4 2006/12/08 16:26:10 mshopf Exp $
Copyright (C) 2000, 2004 Herbert Valerio Riedel <hvr@gnu.org>
@@ -49,7 +49,7 @@
#include "util.h"
#include "vcd.h"
-static const char _rcsid[] = "$Id: vcd.c,v 1.3 2005/01/01 02:43:59 rockyb Exp $";
+static const char _rcsid[] = "$Id: vcd.c,v 1.4 2006/12/08 16:26:10 mshopf Exp $";
static const char zero[CDIO_CD_FRAMESIZE_RAW] = { 0, };
@@ -1664,7 +1664,7 @@ _write_sequence (VcdObj *obj, int track_idx)
track->info->ahdr[i].bitrate / 1024,
_mode_str[track->info->ahdr[i].mode]);
- strncat (buf2, buf, sizeof(buf));
+ strncat (buf2, buf, sizeof(buf2) - strlen(buf2) - 1);
}
vcd_info ("writing track %d, %s, %s, %s...", track_idx + 2,
diff --git a/src/input/vcd/vcdio.c b/src/input/vcd/vcdio.c
index 7fee5a0db..387397cf4 100644
--- a/src/input/vcd/vcdio.c
+++ b/src/input/vcd/vcdio.c
@@ -1,5 +1,5 @@
/*
- $Id: vcdio.c,v 1.7 2005/06/14 17:27:12 rockyb Exp $
+ $Id: vcdio.c,v 1.9 2007/03/23 21:47:31 dsalt Exp $
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
@@ -103,9 +103,20 @@ vcdio_open(vcdplayer_t *p_vcdplayer, char *intended_vcd_device)
}
}
- if ( vcdinfo_open(&p_vcdplayer->vcd, &intended_vcd_device, DRIVER_UNKNOWN,
- NULL) != VCDINFO_OPEN_VCD) {
- return false;
+ switch ( vcdinfo_open(&p_vcdplayer->vcd, &intended_vcd_device,
+ DRIVER_UNKNOWN, NULL))
+ {
+ case VCDINFO_OPEN_ERROR:
+ /* Failed to open the device => return failure */
+ return false;
+
+ case VCDINFO_OPEN_VCD:
+ /* Opened the device, and it's a VCD => proceed */
+ break;
+
+ default:
+ /* Opened the device, but it's not a VCD => is closed, return failure */
+ return false;
}
p_vcdinfo = p_vcdplayer->vcd;
diff --git a/src/input/vcd/vcdplayer.c b/src/input/vcd/vcdplayer.c
index 27f726e3c..502d736cc 100644
--- a/src/input/vcd/vcdplayer.c
+++ b/src/input/vcd/vcdplayer.c
@@ -1,5 +1,5 @@
/*
- $Id: vcdplayer.c,v 1.19 2005/06/20 02:17:41 rockyb Exp $
+ $Id: vcdplayer.c,v 1.20 2007/02/21 23:17:14 dgp85 Exp $
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
@@ -46,6 +46,12 @@
#include "vcdplayer.h"
#include "vcdio.h"
+/* This function is _not_ exported by libvcd, its usage should be avoided, most
+ * likely.
+ */
+void vcdinfo_get_seg_resolution(const vcdinfo_obj_t *p_vcdinfo, segnum_t i_seg,
+ /*out*/ uint16_t *max_x, /*out*/ uint16_t *max_y);
+
#define LOG_ERR(p_vcdplayer, s, args...) \
if (p_vcdplayer != NULL && p_vcdplayer->log_err != NULL) \
p_vcdplayer->log_err("%s: "s, __func__ , ##args)
diff --git a/src/input/vcd/xineplug_inp_vcd.c b/src/input/vcd/xineplug_inp_vcd.c
index baa6b0d9a..920b5c1d8 100644
--- a/src/input/vcd/xineplug_inp_vcd.c
+++ b/src/input/vcd/xineplug_inp_vcd.c
@@ -1,5 +1,5 @@
/*
- $Id: xineplug_inp_vcd.c,v 1.50 2006/07/10 22:08:29 dgp85 Exp $
+ $Id: xineplug_inp_vcd.c,v 1.53 2007/02/08 02:40:23 dsalt Exp $
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
@@ -322,6 +322,7 @@ vcd_build_mrl_list(vcd_input_class_t *class, char *vcd_device)
unsigned int n, i=0;
unsigned int i_entries;
vcdinfo_obj_t *p_vcdinfo;
+ int was_open;
if (NULL == class) {
LOG_MSG("%s", _("was passed a null class parameter"));
@@ -331,7 +332,7 @@ vcd_build_mrl_list(vcd_input_class_t *class, char *vcd_device)
vcdplayer = &(my_vcd.player);
/* If VCD already open, we gotta close and stop it. */
- if (vcdplayer->b_opened) {
+ if ((was_open = vcdplayer->b_opened)) {
vcd_close(class);
}
@@ -374,6 +375,8 @@ vcd_build_mrl_list(vcd_input_class_t *class, char *vcd_device)
if (NULL == class->mrls) {
LOG_ERR("Can't calloc %d MRL entries", class->num_mrls);
class->num_mrls = 0;
+ if (!was_open)
+ vcdio_close(vcdplayer);
return false;
}
@@ -445,6 +448,8 @@ vcd_build_mrl_list(vcd_input_class_t *class, char *vcd_device)
class->mrl_track_offset, class->mrl_entry_offset,
class->mrl_play_offset, class->mrl_segment_offset);
+ if (!was_open)
+ vcdio_close(vcdplayer);
return true;
}
@@ -1290,7 +1295,7 @@ vcd_get_optional_data (input_plugin_t *this_gen,
dbg_print(INPUT_DBG_EXT, "AUDIO CHANNEL = %d\n", channel);
if (channel == (uint8_t)-1) {
- sprintf(data, " %s", "auto");
+ strcpy(data, "auto");
} else {
const vcdinfo_obj_t *p_vcdinfo= my_vcd.player.vcd;
unsigned int audio_type;
@@ -1315,9 +1320,9 @@ vcd_get_optional_data (input_plugin_t *this_gen,
channel = (int8_t) _x_get_spu_channel(my_vcd.stream);
dbg_print(INPUT_DBG_EXT, "SPU CHANNEL = %d\n", channel);
if (-1 == channel) {
- sprintf(data, " %s", "auto");
+ strcpy(data, "auto");
} else {
- sprintf(data, " %1d", channel);
+ sprintf(data, "%1d", channel);
}
}
@@ -1824,9 +1829,9 @@ _("The VCD play unit to use when none is specified in an MRL, e.g. "
class->vcd_device =
- strdup (config->register_string(config,
+ strdup (config->register_filename(config,
"media.vcd.device",
- "",
+ "", XINE_CONFIG_STRING_IS_DEVICE_NAME,
_("CD-ROM drive used for VCD when none given"),
_("What to use if no drive specified. If the setting is empty, xine will scan for CD drives."),
20,