* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
# include "config.h"
#endif
-#include <vlc/vlc.h>
+#include <vlc_common.h>
+#include <vlc_plugin.h>
#include <vlc_input.h>
#include <vlc_access.h>
+#include <vlc_charset.h>
#include "cdrom.h"
"Caching value for VCDs. This " \
"value should be set in milliseconds." )
-vlc_module_begin();
- set_shortname( _("VCD"));
- set_description( _("VCD input") );
- set_capability( "access2", 60 );
- set_callbacks( Open, Close );
- set_category( CAT_INPUT );
- set_subcategory( SUBCAT_INPUT_ACCESS );
+vlc_module_begin ()
+ set_shortname( N_("VCD"))
+ set_description( N_("VCD input") )
+ set_capability( "access", 60 )
+ set_callbacks( Open, Close )
+ set_category( CAT_INPUT )
+ set_subcategory( SUBCAT_INPUT_ACCESS )
- add_usage_hint( N_("[vcd:][device][@[title][,[chapter]]]") );
+ add_usage_hint( N_("[vcd:][device][@[title][,[chapter]]]") )
add_integer( "vcd-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
- CACHING_LONGTEXT, true );
- add_shortcut( "vcd" );
- add_shortcut( "svcd" );
-vlc_module_end();
+ CACHING_LONGTEXT, true )
+ add_shortcut( "vcd" )
+ add_shortcut( "svcd" )
+vlc_module_end ()
/*****************************************************************************
* Local prototypes
};
static block_t *Block( access_t * );
-static int Seek( access_t *, int64_t );
+static int Seek( access_t *, uint64_t );
static int Control( access_t *, int, va_list );
static int EntryPoints( access_t * );
{
access_t *p_access = (access_t *)p_this;
access_sys_t *p_sys;
- char *psz_dup = strdup( p_access->psz_path );
+ char *psz_dup = ToLocaleDup( p_access->psz_path );
char *psz;
int i_title = 0;
int i_chapter = 0;
p_access->info.b_eof = false;
p_access->info.i_title = 0;
p_access->info.i_seekpoint = 0;
- p_access->p_sys = p_sys = malloc( sizeof( access_sys_t ) );
- memset( p_sys, 0, sizeof( access_sys_t ) );
+ p_access->p_sys = p_sys = calloc( 1, sizeof( access_sys_t ) );
+ if( !p_sys )
+ goto error;
p_sys->vcddev = vcddev;
/* We read the Table Of Content information */
{
input_title_t *t = p_sys->title[i] = vlc_input_title_New();
- msg_Dbg( p_access, "title[%d] start=%d\n", i, p_sys->p_sectors[1+i] );
- msg_Dbg( p_access, "title[%d] end=%d\n", i, p_sys->p_sectors[i+2] );
+ msg_Dbg( p_access, "title[%d] start=%d", i, p_sys->p_sectors[1+i] );
+ msg_Dbg( p_access, "title[%d] end=%d", i, p_sys->p_sectors[i+2] );
t->i_size = ( p_sys->p_sectors[i+2] - p_sys->p_sectors[i+1] ) *
(int64_t)VCD_DATA_SIZE;
p_access->info.i_pos = ( p_sys->i_sector - p_sys->p_sectors[1+i_title] ) *
VCD_DATA_SIZE;
+ free( p_access->psz_demux );
p_access->psz_demux = strdup( "ps" );
return VLC_SUCCESS;
static int Control( access_t *p_access, int i_query, va_list args )
{
access_sys_t *p_sys = p_access->p_sys;
- bool *pb_bool;
- int *pi_int;
- int64_t *pi_64;
input_title_t ***ppp_title;
int i;
case ACCESS_CAN_FASTSEEK:
case ACCESS_CAN_PAUSE:
case ACCESS_CAN_CONTROL_PACE:
- pb_bool = (bool*)va_arg( args, bool* );
- *pb_bool = true;
+ *va_arg( args, bool* ) = true;
break;
/* */
- case ACCESS_GET_MTU:
- pi_int = (int*)va_arg( args, int * );
- *pi_int = VCD_DATA_ONCE;
- break;
-
case ACCESS_GET_PTS_DELAY:
- pi_64 = (int64_t*)va_arg( args, int64_t * );
- *pi_64 = var_GetInteger( p_access, "vcd-caching" ) * 1000;
+ *va_arg( args, int64_t * )
+ = (int64_t)var_GetInteger(p_access,"vcd-caching") * 1000;
break;
/* */
break;
case ACCESS_GET_TITLE_INFO:
- ppp_title = (input_title_t***)va_arg( args, input_title_t*** );
- pi_int = (int*)va_arg( args, int* );
+ ppp_title = va_arg( args, input_title_t*** );
+ *va_arg( args, int* ) = p_sys->i_titles;
/* Duplicate title infos */
- *pi_int = p_sys->i_titles;
*ppp_title = malloc( sizeof(input_title_t **) * p_sys->i_titles );
for( i = 0; i < p_sys->i_titles; i++ )
{
break;
case ACCESS_SET_TITLE:
- i = (int)va_arg( args, int );
+ i = va_arg( args, int );
if( i != p_access->info.i_title )
{
/* Update info */
case ACCESS_SET_SEEKPOINT:
{
input_title_t *t = p_sys->title[p_access->info.i_title];
- i = (int)va_arg( args, int );
+ i = va_arg( args, int );
if( t->i_seekpoint > 0 )
{
p_access->info.i_update |= INPUT_UPDATE_SEEKPOINT;
p_sys->i_sector = p_sys->p_sectors[1+p_access->info.i_title] +
t->seekpoint[i]->i_byte_offset / VCD_DATA_SIZE;
- p_access->info.i_pos = (int64_t)(p_sys->i_sector -
+ p_access->info.i_pos = (uint64_t)(p_sys->i_sector -
p_sys->p_sectors[1+p_access->info.i_title]) *VCD_DATA_SIZE;
}
return VLC_SUCCESS;
/*****************************************************************************
* Seek:
*****************************************************************************/
-static int Seek( access_t *p_access, int64_t i_pos )
+static int Seek( access_t *p_access, uint64_t i_pos )
{
access_sys_t *p_sys = p_access->p_sys;
input_title_t *t = p_sys->title[p_access->info.i_title];
if( i_title < 0 ) continue; /* Should not occur */
if( i_title >= p_sys->i_titles ) continue;
- msg_Dbg( p_access, "Entry[%d] title=%d sector=%d\n",
+ msg_Dbg( p_access, "Entry[%d] title=%d sector=%d",
i, i_title, i_sector );
s = vlc_seekpoint_New();