Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
b8ce47bb
Commit
b8ce47bb
authored
May 31, 2001
by
Sam Hocevar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Win2000 DVD input by Jon Lech Johansen <jon-vl@nanocrew.net>.
parent
94d3d4d8
Changes
18
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
680 additions
and
213 deletions
+680
-213
AUTHORS
AUTHORS
+1
-0
include/common.h
include/common.h
+26
-26
include/intf_msg.h
include/intf_msg.h
+5
-5
plugins/dvd/dvd_css.c
plugins/dvd/dvd_css.c
+11
-4
plugins/dvd/dvd_ifo.c
plugins/dvd/dvd_ifo.c
+20
-5
plugins/dvd/dvd_ioctl.c
plugins/dvd/dvd_ioctl.c
+241
-24
plugins/dvd/dvd_ioctl.h
plugins/dvd/dvd_ioctl.h
+107
-2
plugins/dvd/dvd_netlist.c
plugins/dvd/dvd_netlist.c
+6
-6
plugins/dvd/dvd_udf.c
plugins/dvd/dvd_udf.c
+29
-7
plugins/dvd/input_dvd.c
plugins/dvd/input_dvd.c
+60
-12
plugins/mpeg/input_es.c
plugins/mpeg/input_es.c
+3
-3
plugins/mpeg/input_ps.c
plugins/mpeg/input_ps.c
+51
-44
plugins/mpeg/input_ps.h
plugins/mpeg/input_ps.h
+3
-7
plugins/mpeg/input_ts.c
plugins/mpeg/input_ts.c
+10
-9
src/audio_output/aout_spdif.c
src/audio_output/aout_spdif.c
+5
-5
src/input/input.c
src/input/input.c
+43
-24
src/misc/mtime.c
src/misc/mtime.c
+52
-27
src/video_output/video_text.c
src/video_output/video_text.c
+7
-3
No files found.
AUTHORS
View file @
b8ce47bb
...
...
@@ -115,6 +115,7 @@ D: Bug fixes
N: Jon Lech Johansen
E: jon-vl@nanocrew.net
D: PS input fixes
D: Win32 port
N: Michel Kaempf
E: maxx@via.ecp.fr
...
...
include/common.h
View file @
b8ce47bb
...
...
@@ -3,7 +3,7 @@
* Collection of useful common types and macros definitions
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: common.h,v 1.3
3 2001/05/31 01:37:08
sam Exp $
* $Id: common.h,v 1.3
4 2001/05/31 03:12:49
sam Exp $
*
* Authors: Samuel Hocevar <sam@via.ecp.fr>
* Vincent Seguin <seguin@via.ecp.fr>
...
...
@@ -140,7 +140,6 @@ struct es_descriptor_s;
/*****************************************************************************
* Macros and inline functions
*****************************************************************************/
#ifdef NTOHL_IN_SYS_PARAM_H
# include <sys/param.h>
#elif defined(WIN32)
...
...
@@ -157,10 +156,10 @@ struct es_descriptor_s;
/* MAX and MIN: self explanatory */
#ifndef MAX
#define MAX(a, b) ( ((a) > (b)) ? (a) : (b) )
#
define MAX(a, b) ( ((a) > (b)) ? (a) : (b) )
#endif
#ifndef MIN
#define MIN(a, b) ( ((a) < (b)) ? (a) : (b) )
#
define MIN(a, b) ( ((a) < (b)) ? (a) : (b) )
#endif
/* MSB (big endian)/LSB (little endian) conversions - network order is always
...
...
@@ -171,19 +170,19 @@ struct es_descriptor_s;
/* FIXME: hton64 should be declared as an extern inline function to avoid
* border effects (see byteorder.h) */
#if WORDS_BIGENDIAN
#define hton16 htons
#define hton32 htonl
#define hton64(i) ( i )
#define ntoh16 ntohs
#define ntoh32 ntohl
#define ntoh64(i) ( i )
#
define hton16 htons
#
define hton32 htonl
#
define hton64(i) ( i )
#
define ntoh16 ntohs
#
define ntoh32 ntohl
#
define ntoh64(i) ( i )
#else
#define hton16 htons
#define hton32 htonl
#define hton64(i) ( ((u64)(htonl((i) & 0xffffffff)) << 32) | htonl(((i) >> 32) & 0xffffffff ) )
#define ntoh16 ntohs
#define ntoh32 ntohl
#define ntoh64 hton64
#
define hton16 htons
#
define hton32 htonl
#
define hton64(i) ( ((u64)(htonl((i) & 0xffffffff)) << 32) | htonl(((i) >> 32) & 0xffffffff ) )
#
define ntoh16 ntohs
#
define ntoh32 ntohl
#
define ntoh64 hton64
#endif
/* Macros with automatic casts */
...
...
@@ -194,15 +193,16 @@ struct es_descriptor_s;
/* win32, cl and icl support */
#if defined( _MSC_VER )
typedef
long
off_t
;
#define __attribute__(x)
#define __inline__ __inline
#define strncasecmp strnicmp
#define strcasecmp stricmp
#define S_ISBLK(m) (0)
#define S_ISCHR(m) (0)
#define S_ISFIFO(m) (((m)&_S_IFMT) == _S_IFIFO)
#define S_ISREG(m) (((m)&_S_IFMT) == _S_IFREG)
#define I64C(x) x
#
define __attribute__(x)
#
define __inline__ __inline
#
define strncasecmp strnicmp
#
define strcasecmp stricmp
#
define S_ISBLK(m) (0)
#
define S_ISCHR(m) (0)
#
define S_ISFIFO(m) (((m)&_S_IFMT) == _S_IFIFO)
#
define S_ISREG(m) (((m)&_S_IFMT) == _S_IFREG)
#
define I64C(x) x
#else
#define I64C(x) x##LL
#
define I64C(x) x##LL
#endif
include/intf_msg.h
View file @
b8ce47bb
...
...
@@ -4,7 +4,7 @@
* interface, such as message output. See config.h for output configuration.
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: intf_msg.h,v 1.1
4 2001/05/31 01:37:08
sam Exp $
* $Id: intf_msg.h,v 1.1
5 2001/05/31 03:12:49
sam Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
...
...
@@ -49,11 +49,11 @@ void _intf_DbgMsgImm ( char *psz_file, char *psz_function, int i_line,
/* Non-TRACE mode */
#if defined( _MSC_VER )
#define intf_DbgMsg
#define intf_DbgMsgImm
#
define intf_DbgMsg
#
define intf_DbgMsgImm
#else
#define intf_DbgMsg( format, args... )
#define intf_DbgMsgImm( format, args...)
#
define intf_DbgMsg( format, args... )
#
define intf_DbgMsgImm( format, args...)
#endif
#endif
...
...
plugins/dvd/dvd_css.c
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* dvd_css.c: Functions for DVD authentification and unscrambling
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: dvd_css.c,v 1.3
0 2001/05/31 01:37:08
sam Exp $
* $Id: dvd_css.c,v 1.3
1 2001/05/31 03:12:49
sam Exp $
*
* Author: Stphane Borel <stef@via.ecp.fr>
*
...
...
@@ -38,9 +38,9 @@
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#elif defined( _MSC_VER ) && defined( _WIN32 )
#include <io.h>
#
include <io.h>
#endif
#include <string.h>
...
...
@@ -50,9 +50,11 @@
#include "intf_msg.h"
#include "dvd_css.h"
#ifdef HAVE_CSS
#include "dvd_csstables.h"
#
include "dvd_csstables.h"
#endif
/* HAVE_CSS */
#include "dvd_ioctl.h"
#include "input_dvd.h"
...
...
@@ -333,8 +335,13 @@ int CSSGetKey( int i_fd, css_t * p_css )
i_pos
=
p_css
->
i_title_pos
;
do
{
#if !defined( WIN32 )
i_pos
=
lseek
(
i_fd
,
i_pos
,
SEEK_SET
);
i_bytes_read
=
read
(
i_fd
,
pi_buf
,
0x800
);
#else
i_pos
=
SetFilePointer
(
(
HANDLE
)
i_fd
,
i_pos
,
0
,
FILE_BEGIN
);
ReadFile
(
(
HANDLE
)
i_fd
,
pi_buf
,
0x800
,
&
i_bytes_read
,
NULL
);
#endif
/* PES_scrambling_control */
if
(
pi_buf
[
0x14
]
&
0x30
)
...
...
plugins/dvd/dvd_ifo.c
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* dvd_ifo.c: Functions for ifo parsing
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: dvd_ifo.c,v 1.2
8 2001/05/31 01:37:08
sam Exp $
* $Id: dvd_ifo.c,v 1.2
9 2001/05/31 03:12:49
sam Exp $
*
* Author: Stphane Borel <stef@via.ecp.fr>
*
...
...
@@ -36,9 +36,9 @@
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#elif defined( _MSC_VER ) && defined( _WIN32 )
#include <io.h>
#
include <io.h>
#endif
#include <string.h>
...
...
@@ -51,9 +51,9 @@
#include "dvd_udf.h"
#include "input_dvd.h"
/*
/*
****************************************************************************
* Local prototypes
*/
*
****************************************************************************
/
void
CommandRead
(
command_desc_t
);
static
int
ReadTitle
(
ifo_t
*
,
title_t
*
,
off_t
);
static
int
FreeTitle
(
title_t
*
);
...
...
@@ -72,9 +72,18 @@ static int FreeTitleSet ( vts_t * );
*****************************************************************************/
static
__inline__
u8
*
FillBuffer
(
ifo_t
*
p_ifo
,
u8
*
pi_buffer
,
off_t
i_pos
)
{
#if defined( WIN32 )
DWORD
tmp
;
#endif
memset
(
pi_buffer
,
0
,
DVD_LB_SIZE
);
#if !defined( WIN32 )
p_ifo
->
i_pos
=
lseek
(
p_ifo
->
i_fd
,
i_pos
,
SEEK_SET
);
read
(
p_ifo
->
i_fd
,
pi_buffer
,
DVD_LB_SIZE
);
#else
p_ifo
->
i_pos
=
SetFilePointer
(
(
HANDLE
)
p_ifo
->
i_fd
,
i_pos
,
NULL
,
FILE_BEGIN
);
ReadFile
(
(
HANDLE
)
p_ifo
->
i_fd
,
pi_buffer
,
DVD_LB_SIZE
,
&
tmp
,
NULL
);
#endif
return
pi_buffer
;
}
...
...
@@ -1095,9 +1104,15 @@ static int ReadTitle( ifo_t * p_ifo, title_t * p_title, off_t i_pos )
/* parsing of chapter_map_t: it gives the entry cell for each chapter */
if
(
p_title
->
i_chapter_map_start_byte
)
{
#if !defined( WIN32 )
p_ifo
->
i_pos
=
lseek
(
p_ifo
->
i_fd
,
i_start
+
p_title
->
i_chapter_map_start_byte
,
SEEK_SET
);
#else
p_ifo
->
i_pos
=
SetFilePointer
(
(
HANDLE
)
p_ifo
->
i_fd
,
i_start
+
p_title
->
i_chapter_map_start_byte
,
NULL
,
FILE_BEGIN
);
#endif
p_title
->
chapter_map
.
pi_start_cell
=
malloc
(
p_title
->
i_chapter_nb
*
sizeof
(
chapter_map_t
)
);
...
...
plugins/dvd/dvd_ioctl.c
View file @
b8ce47bb
This diff is collapsed.
Click to expand it.
plugins/dvd/dvd_ioctl.h
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* dvd_ioctl.h: DVD ioctl replacement function
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
* $Id: dvd_ioctl.h,v 1.
8 2001/05/25 04:44
:49 sam Exp $
* $Id: dvd_ioctl.h,v 1.
9 2001/05/31 03:12
:49 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
...
...
@@ -32,7 +32,37 @@ int ioctl_InvalidateAgid ( int, int * );
int
ioctl_SendChallenge
(
int
,
int
*
,
u8
*
);
int
ioctl_SendKey2
(
int
,
int
*
,
u8
*
);
#ifdef SYS_BEOS
/*****************************************************************************
* Common macro, BeOS specific
*****************************************************************************/
#if defined( SYS_BEOS )
#define INIT_RDC( TYPE, SIZE ) \
raw_device_command rdc; \
u8 p_buffer[ (SIZE) ]; \
memset( &rdc, 0, sizeof( raw_device_command ) ); \
rdc.data = (char *)p_buffer; \
rdc.data_length = (SIZE); \
BeInitRDC( &rdc, (TYPE) );
#endif
/*****************************************************************************
* Common macro, Darwin specific
*****************************************************************************/
#if defined( SYS_DARWIN1_3 )
#define INIT_DVDIOCTL( SIZE ) \
dvdioctl_data_t dvdioctl; \
u8 p_buffer[ (SIZE) ]; \
dvdioctl.p_buffer = p_buffer; \
dvdioctl.i_size = (SIZE); \
dvdioctl.i_keyclass = kCSS_CSS2_CPRM; \
memset( p_buffer, 0, (SIZE) );
#endif
/*****************************************************************************
* Various DVD I/O tables
*****************************************************************************/
#if defined( SYS_BEOS ) || defined( WIN32 )
/* The generic packet command opcodes for CD/DVD Logical Units,
* From Table 57 of the SFF8090 Ver. 3 (Mt. Fuji) draft standard. */
...
...
@@ -43,6 +73,81 @@ int ioctl_SendKey2 ( int, int *, u8 * );
/* DVD struct types */
#define DVD_STRUCT_COPYRIGHT 0x01
#define DVD_STRUCT_DISCKEY 0x02
#endif
#if defined( WIN32 )
#define IOCTL_DVD_START_SESSION CTL_CODE(FILE_DEVICE_DVD, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_READ_KEY CTL_CODE(FILE_DEVICE_DVD, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_SEND_KEY CTL_CODE(FILE_DEVICE_DVD, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_END_SESSION CTL_CODE(FILE_DEVICE_DVD, 0x0403, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define DVD_CHALLENGE_KEY_LENGTH (12 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_BUS_KEY_LENGTH (8 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_DISK_KEY_LENGTH (2048 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_ASF_LENGTH (sizeof(DVD_ASF) + sizeof(DVD_COPY_PROTECT_KEY))
typedef
ULONG
DVD_SESSION_ID
,
*
PDVD_SESSION_ID
;
typedef
enum
{
DvdChallengeKey
=
0x01
,
DvdBusKey1
,
DvdBusKey2
,
DvdTitleKey
,
DvdAsf
,
DvdSetRpcKey
=
0x6
,
DvdGetRpcKey
=
0x8
,
DvdDiskKey
=
0x80
,
DvdInvalidateAGID
=
0x3f
}
DVD_KEY_TYPE
;
typedef
struct
_DVD_COPY_PROTECT_KEY
{
ULONG
KeyLength
;
DVD_SESSION_ID
SessionId
;
DVD_KEY_TYPE
KeyType
;
ULONG
KeyFlags
;
union
{
struct
{
ULONG
FileHandle
;
ULONG
Reserved
;
// used for NT alignment
};
LARGE_INTEGER
TitleOffset
;
}
Parameters
;
UCHAR
KeyData
[
0
];
}
DVD_COPY_PROTECT_KEY
,
*
PDVD_COPY_PROTECT_KEY
;
typedef
struct
_DVD_ASF
{
UCHAR
Reserved0
[
3
];
UCHAR
SuccessFlag
:
1
;
UCHAR
Reserved1
:
7
;
}
DVD_ASF
,
*
PDVD_ASF
;
typedef
struct
_SCSI_PASS_THROUGH_DIRECT
{
USHORT
Length
;
UCHAR
ScsiStatus
;
UCHAR
PathId
;
UCHAR
TargetId
;
UCHAR
Lun
;
UCHAR
CdbLength
;
UCHAR
SenseInfoLength
;
UCHAR
DataIn
;
ULONG
DataTransferLength
;
ULONG
TimeOutValue
;
PVOID
DataBuffer
;
ULONG
SenseInfoOffset
;
UCHAR
Cdb
[
16
];
}
SCSI_PASS_THROUGH_DIRECT
,
*
PSCSI_PASS_THROUGH_DIRECT
;
#define SCSI_IOCTL_DATA_OUT 0
#define SCSI_IOCTL_DATA_IN 1
/* Key formats */
#define DVD_REPORT_AGID 0x00
...
...
plugins/dvd/dvd_netlist.c
View file @
b8ce47bb
...
...
@@ -7,7 +7,7 @@
* will only be given back to netlist when refcount is zero.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000, 2001 VideoLAN
* $Id: dvd_netlist.c,v 1.
6 2001/05/31 01:37:08
sam Exp $
* $Id: dvd_netlist.c,v 1.
7 2001/05/31 03:12:49
sam Exp $
*
* Authors: Henri Fallon <henri@videolan.org>
* Stphane Borel <stef@videolan.org>
...
...
@@ -37,14 +37,14 @@
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#endif
#if !defined( WIN32 )
#include <sys/uio.h>
/* struct iovec */
#if defined( WIN32 )
# include <io.h>
# include "iovec.h"
#else
#include <io.h>
#include "iovec.h"
# include <sys/uio.h>
/* struct iovec */
#endif
#include "config.h"
...
...
plugins/dvd/dvd_udf.c
View file @
b8ce47bb
...
...
@@ -5,7 +5,7 @@
* contains the basic udf handling functions
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
* $Id: dvd_udf.c,v 1.
7 2001/05/31 01:37:08
sam Exp $
* $Id: dvd_udf.c,v 1.
8 2001/05/31 03:12:49
sam Exp $
*
* Author: Stphane Borel <stef@via.ecp.fr>
*
...
...
@@ -34,25 +34,26 @@
#include "defs.h"
#ifdef HAVE_CSS
#define MODULE_NAME dvd
#
define MODULE_NAME dvd
#else
/* HAVE_CSS */
#define MODULE_NAME dvdnocss
#
define MODULE_NAME dvdnocss
#endif
/* HAVE_CSS */
#include "modules_inner.h"
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#elif defined( _MSC_VER ) && defined( _WIN32 )
#include <io.h>
#
include <io.h>
#endif
#include <string.h>
#ifdef STRNCASECMP_IN_STRINGS_H
# include <strings.h>
#endif
#include <fcntl.h>
#include "common.h"
#include "intf_msg.h"
...
...
@@ -99,18 +100,39 @@ typedef struct ad_s
*****************************************************************************/
static
int
UDFReadLB
(
int
i_fd
,
off_t
i_lba
,
size_t
i_block_count
,
u8
*
pi_data
)
{
#if !defined( WIN32 )
if
(
i_fd
<
0
)
#else
DWORD
read
;
if
(
(
HANDLE
)
i_fd
==
INVALID_HANDLE_VALUE
)
#endif
{
return
0
;
}
#if !defined( WIN32 )
if
(
lseek
(
i_fd
,
i_lba
*
(
off_t
)
DVD_LB_SIZE
,
SEEK_SET
)
<
0
)
#else
if
(
SetFilePointer
(
(
HANDLE
)
i_fd
,
i_lba
*
(
off_t
)
DVD_LB_SIZE
,
NULL
,
FILE_BEGIN
)
==
-
1
)
#endif
{
intf_ErrMsg
(
"UDF: Postion not found"
);
return
0
;
}
#if !defined( WIN32 )
return
read
(
i_fd
,
pi_data
,
i_block_count
*
DVD_LB_SIZE
);
#else
if
(
!
ReadFile
(
(
HANDLE
)
i_fd
,
pi_data
,
i_block_count
*
DVD_LB_SIZE
,
&
read
,
NULL
)
||
read
!=
i_block_count
*
DVD_LB_SIZE
)
{
return
0
;
}
return
read
;
#endif
}
...
...
plugins/dvd/input_dvd.c
View file @
b8ce47bb
...
...
@@ -10,7 +10,7 @@
* -dvd_udf to find files
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
* $Id: input_dvd.c,v 1.6
3 2001/05/31 01:37:08
sam Exp $
* $Id: input_dvd.c,v 1.6
4 2001/05/31 03:12:49
sam Exp $
*
* Author: Stphane Borel <stef@via.ecp.fr>
*
...
...
@@ -35,37 +35,38 @@
#include "defs.h"
#ifdef HAVE_CSS
#define MODULE_NAME dvd
#
define MODULE_NAME dvd
#else
/* HAVE_CSS */
#define MODULE_NAME dvdnocss
#
define MODULE_NAME dvdnocss
#endif
/* HAVE_CSS */
#include "modules_inner.h"
#include <stdio.h>
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#endif
#if !defined( WIN32 )
#include <netinet/in.h>
#
include <netinet/in.h>
#endif
#include <fcntl.h>
#include <sys/types.h>
#include <string.h>
#include <errno.h>
#ifdef STRNCASECMP_IN_STRINGS_H
# include <strings.h>
#endif
#include <errno.h>
#if !defined( WIN32 )
#include <sys/uio.h>
/* struct iovec */
#if defined( WIN32 )
# include <io.h>
# include "iovec.h"
#else
#include <io.h>
#include "iovec.h"
# include <sys/uio.h>
/* struct iovec */
#endif
#include "config.h"
...
...
@@ -151,6 +152,9 @@ static int DVDProbe( probedata_t *p_data )
char
*
psz_name
=
p_input
->
p_source
;
int
i_handle
;
int
i_score
=
5
;
#if defined( WIN32 )
char
buf
[
7
];
#endif
if
(
TestMethod
(
INPUT_METHOD_VAR
,
"dvd"
)
)
{
...
...
@@ -172,12 +176,25 @@ static int DVDProbe( probedata_t *p_data )
psz_name
+=
4
;
}
#if !defined( WIN32 )
i_handle
=
open
(
psz_name
,
0
);
if
(
i_handle
==
-
1
)
{
return
(
0
);
}
close
(
i_handle
);
#else
snprintf
(
buf
,
7
,
"
\\\\
.
\\
%c:"
,
psz_name
[
0
]
);
(
HANDLE
)
i_handle
=
CreateFile
(
i_score
<
90
?
psz_name
:
buf
,
GENERIC_READ
|
GENERIC_WRITE
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
NULL
,
OPEN_EXISTING
,
0
,
NULL
);
if
(
(
HANDLE
)
i_handle
==
INVALID_HANDLE_VALUE
)
{
return
(
0
);
}
CloseHandle
(
(
HANDLE
)
i_handle
);
#endif
return
(
i_score
);
}
...
...
@@ -224,7 +241,11 @@ static void DVDInit( input_thread_t * p_input )
p_dvd
->
b_encrypted
=
i
;
#if !defined( WIN32 )
lseek
(
p_input
->
i_handle
,
0
,
SEEK_SET
);
#else
SetFilePointer
(
(
HANDLE
)
p_input
->
i_handle
,
0
,
0
,
FILE_BEGIN
);
#endif
/* Reading structures initialisation */
p_input
->
p_method_data
=
...
...
@@ -818,6 +839,14 @@ static int DVDRead( input_thread_t * p_input,
return
-
1
;
}
pp_data
=
(
struct
data_packet_s
**
)
malloc
(
p_input
->
i_read_once
*
sizeof
(
struct
data_packet_s
*
)
);
if
(
pp_data
==
NULL
)
{
intf_ErrMsg
(
"dvd error: out of memory"
);
return
-
1
;
}
p_dvd
=
(
thread_dvd_data_t
*
)
p_input
->
p_plugin_data
;
p_netlist
=
(
dvd_netlist_t
*
)
p_input
->
p_method_data
;
...
...
@@ -897,7 +926,11 @@ static int DVDRead( input_thread_t * p_input,
p_netlist
->
i_read_once
=
i_block_once
;
/* Reads from DVD */
#if !defined( WIN32 )
i_read_bytes
=
readv
(
p_dvd
->
i_fd
,
p_vec
,
i_block_once
);
#else
i_read_bytes
=
ReadFileV
(
p_dvd
->
i_fd
,
p_vec
,
i_block_once
);
#endif
i_read_blocks
=
(
i_read_bytes
+
0x7ff
)
>>
11
;
/* Update netlist indexes */
...
...
@@ -922,7 +955,7 @@ static int DVDRead( input_thread_t * p_input,
while
(
i_pos
<
p_netlist
->
i_buffer_size
)
{
pi_cur
=
(
(
u8
*
)
p_vec
[
i_iovec
].
iov_base
+
i_pos
)
;
pi_cur
=
(
u8
*
)
p_vec
[
i_iovec
].
iov_base
+
i_pos
;
/*default header */
if
(
U32_AT
(
pi_cur
)
!=
0x1BA
)
...
...
@@ -987,6 +1020,8 @@ static int DVDRead( input_thread_t * p_input,
free
(
pp_data
);
free
(
pp_data
);
if
(
b_eof
)
{
return
1
;
...
...
@@ -1115,10 +1150,18 @@ static void DVDSeek( input_thread_t * p_input, off_t i_off )
p_dvd
->
i_chapter
=
i_chapter
;
p_input
->
stream
.
p_selected_area
->
i_part
=
p_dvd
->
i_chapter
;
#if !defined( WIN32 )
p_input
->
stream
.
p_selected_area
->
i_tell
=
lseek
(
p_dvd
->
i_fd
,
p_dvd
->
i_title_start
+
(
off_t
)(
p_dvd
->
i_sector
)
*
DVD_LB_SIZE
,
SEEK_SET
)
-
p_input
->
stream
.
p_selected_area
->
i_start
;
#else
p_input
->
stream
.
p_selected_area
->
i_tell
=
SetFilePointer
(
(
HANDLE
)
p_dvd
->
i_fd
,
p_dvd
->
i_title_start
+
(
off_t
)(
p_dvd
->
i_sector
)
*
DVD_LB_SIZE
,
NULL
,
FILE_BEGIN
)
-
p_input
->
stream
.
p_selected_area
->
i_start
;
#endif
/*
intf_WarnMsg( 3, "Program Cell: %d Cell: %d Chapter: %d",
p_dvd->i_prg_cell, p_dvd->i_cell, p_dvd->i_chapter );
...
...
@@ -1249,7 +1292,12 @@ static int DVDChapterSelect( thread_dvd_data_t * p_dvd, int i_chapter )
DVD_LB_SIZE
*
(
off_t
)(
p_dvd
->
i_sector
);
/* Position the fd pointer on the right address */
#if !defined( WIN32 )
p_dvd
->
i_start
=
lseek
(
p_dvd
->
i_fd
,
p_dvd
->
i_start
,
SEEK_SET
);
#else
p_dvd
->
i_start
=
SetFilePointer
(
(
HANDLE
)
p_dvd
->
i_fd
,
p_dvd
->
i_start
,
NULL
,
FILE_BEGIN
);
#endif
p_dvd
->
i_chapter
=
i_chapter
;
return
0
;
...
...
plugins/mpeg/input_es.c
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* input_es.c: Elementary Stream demux and packet management
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: input_es.c,v 1.
4 2001/05/31 01:37:08
sam Exp $
* $Id: input_es.c,v 1.
5 2001/05/31 03:12:49
sam Exp $
*
* Authors:
*
...
...
@@ -37,9 +37,9 @@
#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#elif defined( _MSC_VER ) && defined( _WIN32 )
#include <io.h>
#
include <io.h>
#endif
#include <fcntl.h>
...
...
plugins/mpeg/input_ps.c
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* input_ps.c: PS demux and packet management
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: input_ps.c,v 1.2
6 2001/05/31 01:37:08
sam Exp $
* $Id: input_ps.c,v 1.2
7 2001/05/31 03:12:49
sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Cyril Deguet <asmax@via.ecp.fr>
...
...
@@ -32,18 +32,19 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#ifdef STRNCASECMP_IN_STRINGS_H
# include <strings.h>
#endif
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#elif defined( _MSC_VER ) && defined( _WIN32 )
#include <io.h>
#
include <io.h>
#endif
#include <fcntl.h>
...
...
@@ -154,8 +155,8 @@ static void PSInit( input_thread_t * p_input )
thread_ps_data_t
*
p_method
;
packet_cache_t
*
p_packet_cache
;
if
(
(
p_method
=
(
thread_ps_data_t
*
)
malloc
(
sizeof
(
thread_ps_data_t
)
))
==
NULL
)
p_method
=
(
thread_ps_data_t
*
)
malloc
(
sizeof
(
thread_ps_data_t
)
);
if
(
p_method
==
NULL
)
{
intf_ErrMsg
(
"Out of memory"
);
p_input
->
b_error
=
1
;
...
...
@@ -203,29 +204,31 @@ static void PSInit( input_thread_t * p_input )
p_packet_cache
->
pes
.
l_index
=
0
;
/* allocates the small buffer cache */
p_packet_cache
->
small
.
p_stack
=
malloc
(
SMALL_CACHE_SIZE
*
p_packet_cache
->
small
buffer
.
p_stack
=
malloc
(
SMALL_CACHE_SIZE
*
sizeof
(
packet_buffer_t
)
);
if
(
p_packet_cache
->
small
.
p_stack
==
NULL
)
if
(
p_packet_cache
->
small
buffer
.
p_stack
==
NULL
)
{
intf_ErrMsg
(
"Out of memory"
);
p_input
->
b_error
=
1
;
return
;
}
p_packet_cache
->
small
.
l_index
=
0
;
p_packet_cache
->
small
buffer
.
l_index
=
0
;
/* allocates the large buffer cache */
p_packet_cache
->
large
.
p_stack
=
malloc
(
LARGE_CACHE_SIZE
*
p_packet_cache
->
large
buffer
.
p_stack
=
malloc
(
LARGE_CACHE_SIZE
*
sizeof
(
packet_buffer_t
)
);
if
(
p_packet_cache
->
large
.
p_stack
==
NULL
)
if
(
p_packet_cache
->
large
buffer
.
p_stack
==
NULL
)
{
intf_ErrMsg
(
"Out of memory"
);
p_input
->
b_error
=
1
;
return
;
}
p_packet_cache
->
large
.
l_index
=
0
;
p_packet_cache
->
large
buffer
.
l_index
=
0
;
/* Re-open the socket as a buffered FILE stream */
if
(
(
p_method
->
stream
=
fdopen
(
p_input
->
i_handle
,
"r"
))
==
NULL
)
p_method
->
stream
=
fdopen
(
p_input
->
i_handle
,
"r"
);
if
(
p_method
->
stream
==
NULL
)
{
intf_ErrMsg
(
"Cannot open file (%s)"
,
strerror
(
errno
)
);
p_input
->
b_error
=
1
;
...
...
@@ -504,8 +507,8 @@ static int PSRead( input_thread_t * p_input,
}
/* Fetch a packet of the appropriate size. */
if
(
(
p_data
=
NewPacket
(
p_input
->
p_method_data
,
i_packet_size
+
6
))
==
NULL
)
p_data
=
NewPacket
(
p_input
->
p_method_data
,
i_packet_size
+
6
);
if
(
p_data
==
NULL
)
{
intf_ErrMsg
(
"Out of memory"
);
return
(
-
1
);
...
...
@@ -600,7 +603,8 @@ static struct data_packet_s * NewPacket( void * p_packet_cache,
if
(
p_cache
->
data
.
l_index
==
0
)
{
/* Allocates a new packet */
if
(
(
p_data
=
malloc
(
sizeof
(
data_packet_t
)
))
==
NULL
)
p_data
=
malloc
(
sizeof
(
data_packet_t
)
);
if
(
p_data
==
NULL
)
{
intf_ErrMsg
(
"Out of memory"
);
vlc_mutex_unlock
(
&
p_cache
->
lock
);
...
...
@@ -627,10 +631,11 @@ static struct data_packet_s * NewPacket( void * p_packet_cache,
/* Small buffer */
/* Checks whether the buffer cache is empty */
if
(
p_cache
->
small
.
l_index
==
0
)
if
(
p_cache
->
small
buffer
.
l_index
==
0
)
{
/* Allocates a new packet */
if
(
(
p_data
->
p_buffer
=
malloc
(
l_size
))
==
NULL
)
p_data
->
p_buffer
=
malloc
(
l_size
);
if
(
p_data
->
p_buffer
==
NULL
)
{
intf_DbgMsg
(
"Out of memory"
);
free
(
p_data
);
...
...
@@ -645,8 +650,8 @@ static struct data_packet_s * NewPacket( void * p_packet_cache,
else
{
/* Takes the packet out from the cache */
l_index
=
--
p_cache
->
small
.
l_index
;
if
(
(
p_data
->
p_buffer
=
p_cache
->
small
.
p_stack
[
l_index
].
p_data
)
l_index
=
--
p_cache
->
small
buffer
.
l_index
;
if
(
(
p_data
->
p_buffer
=
p_cache
->
small
buffer
.
p_stack
[
l_index
].
p_data
)
==
NULL
)
{
intf_ErrMsg
(
"NULL packet in the small buffer cache"
);
...
...
@@ -655,15 +660,15 @@ static struct data_packet_s * NewPacket( void * p_packet_cache,
return
NULL
;
}
/* Reallocates the packet if it is too small or too large */
if
(
p_cache
->
small
.
p_stack
[
l_index
].
l_size
<
l_size
||
p_cache
->
small
.
p_stack
[
l_index
].
l_size
>
2
*
l_size
)
if
(
p_cache
->
small
buffer
.
p_stack
[
l_index
].
l_size
<
l_size
||
p_cache
->
small
buffer
.
p_stack
[
l_index
].
l_size
>
2
*
l_size
)
{
p_data
->
p_buffer
=
realloc
(
p_data
->
p_buffer
,
l_size
);
p_data
->
l_size
=
l_size
;
}
else
{
p_data
->
l_size
=
p_cache
->
small
.
p_stack
[
l_index
].
l_size
;
p_data
->
l_size
=
p_cache
->
small
buffer
.
p_stack
[
l_index
].
l_size
;
}
}
}
...
...
@@ -672,10 +677,11 @@ static struct data_packet_s * NewPacket( void * p_packet_cache,
/* Large buffer */
/* Checks whether the buffer cache is empty */
if
(
p_cache
->
large
.
l_index
==
0
)
if
(
p_cache
->
large
buffer
.
l_index
==
0
)
{
/* Allocates a new packet */
if
(
(
p_data
->
p_buffer
=
malloc
(
l_size
))
==
NULL
)
p_data
->
p_buffer
=
malloc
(
l_size
);
if
(
p_data
->
p_buffer
==
NULL
)
{
intf_ErrMsg
(
"Out of memory"
);
free
(
p_data
);
...
...
@@ -690,9 +696,9 @@ static struct data_packet_s * NewPacket( void * p_packet_cache,
else
{
/* Takes the packet out from the cache */
l_index
=
--
p_cache
->
large
.
l_index
;
if
(
(
p_data
->
p_buffer
=
p_cache
->
large
.
p_stack
[
l_index
].
p_data
)
==
NULL
)
l_index
=
--
p_cache
->
large
buffer
.
l_index
;
p_data
->
p_buffer
=
p_cache
->
largebuffer
.
p_stack
[
l_index
].
p_data
;
if
(
p_data
->
p_buffer
==
NULL
)
{
intf_ErrMsg
(
"NULL packet in the small buffer cache"
);
free
(
p_data
);
...
...
@@ -700,15 +706,15 @@ static struct data_packet_s * NewPacket( void * p_packet_cache,
return
NULL
;
}
/* Reallocates the packet if it is too small or too large */
if
(
p_cache
->
large
.
p_stack
[
l_index
].
l_size
<
l_size
||
p_cache
->
large
.
p_stack
[
l_index
].
l_size
>
2
*
l_size
)
if
(
p_cache
->
large
buffer
.
p_stack
[
l_index
].
l_size
<
l_size
||
p_cache
->
large
buffer
.
p_stack
[
l_index
].
l_size
>
2
*
l_size
)
{
p_data
->
p_buffer
=
realloc
(
p_data
->
p_buffer
,
l_size
);
p_data
->
l_size
=
l_size
;
}
else
{
p_data
->
l_size
=
p_cache
->
large
.
p_stack
[
l_index
].
l_size
;
p_data
->
l_size
=
p_cache
->
large
buffer
.
p_stack
[
l_index
].
l_size
;
}
}
}
...
...
@@ -750,7 +756,8 @@ static pes_packet_t * NewPES( void * p_packet_cache )
if
(
p_cache
->
pes
.
l_index
==
0
)
{
/* Allocates a new packet */
if
(
(
p_pes
=
malloc
(
sizeof
(
pes_packet_t
)
))
==
NULL
)
p_pes
=
malloc
(
sizeof
(
pes_packet_t
)
);
if
(
p_pes
==
NULL
)
{
intf_DbgMsg
(
"Out of memory"
);
vlc_mutex_unlock
(
&
p_cache
->
lock
);
...
...
@@ -763,8 +770,8 @@ static pes_packet_t * NewPES( void * p_packet_cache )
else
{
/* Takes the packet out from the cache */
if
(
(
p_pes
=
p_cache
->
pes
.
p_stack
[
--
p_cache
->
pes
.
l_index
])
==
NULL
)
p_pes
=
p_cache
->
pes
.
p_stack
[
--
p_cache
->
pes
.
l_index
];
if
(
p_pes
==
NULL
)
{
intf_ErrMsg
(
"NULL packet in the data cache"
);
vlc_mutex_unlock
(
&
p_cache
->
lock
);
...
...
@@ -814,12 +821,12 @@ static void DeletePacket( void * p_packet_cache,
if
(
p_data
->
l_size
<
MAX_SMALL_SIZE
)
{
/* Checks whether the small buffer cache is full */
if
(
p_cache
->
small
.
l_index
<
SMALL_CACHE_SIZE
)
if
(
p_cache
->
small
buffer
.
l_index
<
SMALL_CACHE_SIZE
)
{
p_cache
->
small
.
p_stack
[
p_cache
->
small
.
l_index
].
l_size
=
p_data
->
l_size
;
p_cache
->
small
.
p_stack
[
p_cache
->
small
.
l_index
++
].
p_data
=
p_data
->
p_buffer
;
p_cache
->
small
buffer
.
p_stack
[
p_
cache
->
smallbuffer
.
l_index
].
l_size
=
p_
data
->
l_size
;
p_cache
->
small
buffer
.
p_stack
[
p_
cache
->
smallbuffer
.
l_index
++
].
p_data
=
p_
data
->
p_buffer
;
}
else
{
...
...
@@ -833,12 +840,12 @@ static void DeletePacket( void * p_packet_cache,
else
{
/* Checks whether the large buffer cache is full */
if
(
p_cache
->
large
.
l_index
<
LARGE_CACHE_SIZE
)
if
(
p_cache
->
large
buffer
.
l_index
<
LARGE_CACHE_SIZE
)
{
p_cache
->
large
.
p_stack
[
p_cache
->
large
.
l_index
].
l_size
=
p_data
->
l_size
;
p_cache
->
large
.
p_stack
[
p_cache
->
large
.
l_index
++
].
p_data
=
p_data
->
p_buffer
;
p_cache
->
large
buffer
.
p_stack
[
p_
cache
->
largebuffer
.
l_index
].
l_size
=
p_
data
->
l_size
;
p_cache
->
large
buffer
.
p_stack
[
p_
cache
->
largebuffer
.
l_index
++
].
p_data
=
p_
data
->
p_buffer
;
}
else
{
...
...
plugins/mpeg/input_ps.h
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* input_ps.h: thread structure of the PS plugin
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ps.h,v 1.
7 2001/05/31 01:37:08
sam Exp $
* $Id: input_ps.h,v 1.
8 2001/05/31 03:12:49
sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Cyril Deguet <asmax@via.ecp.fr>
...
...
@@ -22,10 +22,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#if defined( _MSC_VER )
#undef small
#endif
/*****************************************************************************
* thread_ps_data_t: extension of input_thread_t
*****************************************************************************/
...
...
@@ -82,8 +78,8 @@ typedef struct
vlc_mutex_t
lock
;
data_packet_cache_t
data
;
pes_packet_cache_t
pes
;
small_buffer_cache_t
small
;
large_buffer_cache_t
large
;
small_buffer_cache_t
small
buffer
;
large_buffer_cache_t
large
buffer
;
}
packet_cache_t
;
plugins/mpeg/input_ts.c
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* input_ts.c: TS demux and netlist management
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: input_ts.c,v 1.2
2 2001/05/31 01:37:08
sam Exp $
* $Id: input_ts.c,v 1.2
3 2001/05/31 03:12:49
sam Exp $
*
* Authors: Henri Fallon <henri@videolan.org>
*
...
...
@@ -31,34 +31,35 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#ifdef STRNCASECMP_IN_STRINGS_H
# include <strings.h>
#endif
#include <errno.h>
#include <sys/types.h>
#if !defined( _MSC_VER )
#include <sys/time.h>
#
include <sys/time.h>
#endif
#ifdef SYS_NTO
#include <sys/select.h>
#
include <sys/select.h>
#endif
#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#endif
#include <fcntl.h>
#if !defined( WIN32 )
#include <sys/uio.h>
/* struct iovec */
#if defined( WIN32 )
# include <io.h>
# include "iovec.h"
#else
#include <io.h>
#include "iovec.h"
# include <sys/uio.h>
/* struct iovec */
#endif
#include "config.h"
...
...
src/audio_output/aout_spdif.c
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* aout_spdif: ac3 passthrough output
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: aout_spdif.c,v 1.
9 2001/05/31 01:37:08
sam Exp $
* $Id: aout_spdif.c,v 1.
10 2001/05/31 03:12:49
sam Exp $
*
* Authors: Michel Kaempf <maxx@via.ecp.fr>
* Stphane Borel <stef@via.ecp.fr>
...
...
@@ -114,9 +114,9 @@ void aout_SpdifThread( aout_thread_t * p_aout )
mlast
=
mplay
;
/* play spdif frame to the external decoder */
p_aout
->
pf_play
(
p_aout
,
((
byte_t
*
)
p_aout
->
fifo
[
i_fifo
].
buffer
+
p_aout
->
fifo
[
i_fifo
].
l_start_frame
*
SPDIF_FRAME_SIZE
),
(
(
byte_t
*
)
p_aout
->
fifo
[
i_fifo
].
buffer
+
p_aout
->
fifo
[
i_fifo
].
l_start_frame
*
SPDIF_FRAME_SIZE
),
p_aout
->
fifo
[
i_fifo
].
l_frame_size
);
p_aout
->
fifo
[
i_fifo
].
l_start_frame
=
...
...
src/input/input.c
View file @
b8ce47bb
...
...
@@ -4,7 +4,7 @@
* decoders.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: input.c,v 1.11
5 2001/05/31 01:37:08
sam Exp $
* $Id: input.c,v 1.11
6 2001/05/31 03:12:49
sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
...
...
@@ -34,33 +34,27 @@
#include <fcntl.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#
include <unistd.h>
#elif defined( _MSC_VER ) && defined( _WIN32 )
#include <io.h>
#
include <io.h>
#endif
#include <string.h>
#include <errno.h>
#ifdef STRNCASECMP_IN_STRINGS_H
# include <strings.h>
#endif
#include <errno.h>
/* WinSock Includes */
#ifdef WIN32
#include <winsock2.h>
#endif
/* Network functions */
#if !defined( SYS_BEOS ) && !defined( SYS_NTO ) && !defined( WIN32 )
#include <netdb.h>
/* hostent ... */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
# include <winsock2.h>
#elif !defined( SYS_BEOS ) && !defined( SYS_NTO )
# include <netdb.h>
/* hostent ... */
# include <sys/socket.h>
# include <netinet/in.h>
# include <arpa/inet.h>
# include <sys/types.h>
# include <sys/socket.h>
#endif
#ifdef STATS
...
...
@@ -86,7 +80,6 @@
#include "main.h"
/*****************************************************************************
* Local prototypes
*****************************************************************************/
...
...
@@ -260,6 +253,7 @@ static void RunThread( input_thread_t *p_input )
if
(
pp_packets
==
NULL
)
{
intf_ErrMsg
(
"input error: out of memory"
);
free
(
pp_packets
);
p_input
->
b_error
=
1
;
}
...
...
@@ -504,6 +498,10 @@ static void FileOpen( input_thread_t * p_input )
struct
stat
stat_info
;
int
i_stat
;
#if defined( WIN32 )
char
buf
[
7
]
=
{
0
};
#endif
char
*
psz_name
=
p_input
->
p_source
;
/* FIXME: this code ought to be in the plugin so that code can
...
...
@@ -518,6 +516,9 @@ static void FileOpen( input_thread_t * p_input )
/* get rid of the 'dvd:' stuff and try again */
psz_name
+=
4
;
i_stat
=
stat
(
psz_name
,
&
stat_info
);
#if defined( WIN32 )
snprintf
(
buf
,
7
,
"
\\\\
.
\\
%c:"
,
psz_name
[
0
]
);
#endif
}
else
if
(
(
i_size
>
5
)
&&
!
strncasecmp
(
psz_name
,
"file:"
,
5
)
)
...
...
@@ -527,7 +528,11 @@ static void FileOpen( input_thread_t * p_input )
i_stat
=
stat
(
psz_name
,
&
stat_info
);
}
if
(
i_stat
==
(
-
1
)
)
if
(
i_stat
==
(
-
1
)
#if defined( WIN32 )
&&
!
buf
[
0
]
#endif
)
{
intf_ErrMsg
(
"input error: cannot stat() file `%s' (%s)"
,
psz_name
,
strerror
(
errno
));
...
...
@@ -542,7 +547,11 @@ static void FileOpen( input_thread_t * p_input )
p_input
->
stream
.
b_pace_control
=
1
;
if
(
S_ISREG
(
stat_info
.
st_mode
)
||
S_ISCHR
(
stat_info
.
st_mode
)
||
S_ISBLK
(
stat_info
.
st_mode
)
)
||
S_ISBLK
(
stat_info
.
st_mode
)
#if defined( WIN32 )
||
(
buf
[
0
]
&&
(
(
stat_info
.
st_size
=
0
)
==
0
)
)
#endif
)
{
p_input
->
stream
.
b_seekable
=
1
;
p_input
->
stream
.
p_selected_area
->
i_size
=
stat_info
.
st_size
;
...
...
@@ -573,8 +582,10 @@ static void FileOpen( input_thread_t * p_input )
if
(
(
p_input
->
i_handle
=
open
(
psz_name
,
/*O_NONBLOCK | O_LARGEFILE*/
0
))
==
(
-
1
)
)
#else
if
(
(
p_input
->
i_handle
=
open
(
psz_name
,
O_BINARY
/*O_NONBLOCK | O_LARGEFILE*/
))
==
(
-
1
)
)
if
(
(
buf
[
0
]
&&
(
(
HANDLE
)
p_input
->
i_handle
=
CreateFile
(
buf
,
GENERIC_READ
|
GENERIC_WRITE
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
NULL
,
OPEN_EXISTING
,
0
,
NULL
)
)
==
INVALID_HANDLE_VALUE
)
||
(
!
buf
[
0
]
&&
(
p_input
->
i_handle
=
open
(
psz_name
,
O_BINARY
)
)
==
(
-
1
)
)
)
#endif
{
intf_ErrMsg
(
"input error: cannot open file (%s)"
,
strerror
(
errno
)
);
...
...
@@ -590,6 +601,14 @@ static void FileOpen( input_thread_t * p_input )
static
void
FileClose
(
input_thread_t
*
p_input
)
{
intf_WarnMsg
(
1
,
"input: closing file `%s'"
,
p_input
->
p_source
);
#if defined( WIN32 )
if
(
(
strlen
(
p_input
->
p_source
)
>
4
)
&&
!
strncasecmp
(
p_input
->
p_source
,
"dvd:"
,
4
)
)
{
CloseHandle
(
(
HANDLE
)
p_input
->
i_handle
);
}
else
#endif
close
(
p_input
->
i_handle
);
return
;
...
...
src/misc/mtime.c
View file @
b8ce47bb
...
...
@@ -3,7 +3,7 @@
* Functions are prototyped in mtime.h.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: mtime.c,v 1.
19 2001/05/31 01:37:08
sam Exp $
* $Id: mtime.c,v 1.
20 2001/05/31 03:12:49
sam Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
...
...
@@ -35,25 +35,55 @@
#include <stdio.h>
/* sprintf() */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
/* select() */
#endif
#if !defined( _MSC_VER )
#include <sys/time.h>
# include <unistd.h>
/* select() */
#endif
#ifdef HAVE_KERNEL_OS_H
#include <kernel/OS.h>
#
include <kernel/OS.h>
#endif
#if defined( WIN32 )
#include <windows.h>
# include <windows.h>
#else
# include <sys/time.h>
#endif
#include "config.h"
#include "common.h"
#include "mtime.h"
#if defined( WIN32 )
/*****************************************************************************
* usleep: microsecond sleep for win32
*****************************************************************************
* This function uses performance counter if available, and Sleep() if not.
*****************************************************************************/
static
__inline__
void
usleep
(
unsigned
int
i_useconds
)
{
s64
i_cur
,
i_freq
;
s64
i_now
,
i_then
;
if
(
i_useconds
<
1000
&&
QueryPerformanceFrequency
(
(
LARGE_INTEGER
*
)
&
i_freq
)
)
{
QueryPerformanceCounter
(
(
LARGE_INTEGER
*
)
&
i_cur
);
i_now
=
(
cur
*
1000
*
1000
/
i_freq
);
i_then
=
i_now
+
i_useconds
;
while
(
i_now
<
i_then
)
{
QueryPerformanceCounter
(
(
LARGE_INTEGER
*
)
&
i_cur
);
now
=
cur
*
1000
*
1000
/
i_freq
;
}
}
else
{
Sleep
(
(
int
)
((
i_useconds
+
500
)
/
1000
)
);
}
}
#endif
/*****************************************************************************
* mstrtime: return a date in a readable format
*****************************************************************************
...
...
@@ -87,22 +117,19 @@ mtime_t mdate( void )
/* We don't get the real date, just the value of a high precision timer.
* this is because the usual time functions have at best only a milisecond
* resolution */
mtime_t
freq
,
usec_time
;
mtime_t
freq
,
usec_time
;
if
(
!
QueryPerformanceFrequency
((
LARGE_INTEGER
*
)
&
freq
)
)
if
(
QueryPerformanceFrequency
(
(
LARGE_INTEGER
*
)
&
freq
)
)
{
/* Milisecond resolution */
FILETIME
file_time
;
GetSystemTimeAsFileTime
((
FILETIME
*
)
&
file_time
);
usec_time
*=
1000
;
/* Microsecond resolution */
QueryPerformanceCounter
(
(
LARGE_INTEGER
*
)
&
usec_time
);
return
(
usec_time
*
1000000
)
/
freq
;
}
else
{
/* Microsecond resolution */
QueryPerformanceCounter
((
LARGE_INTEGER
*
)
&
usec_time
);
usec_time
/=
(
freq
/
1000000
);
/* Milisecond resolution */
return
1000
*
GetTickCount
();
}
return
(
usec_time
);
#else
struct
timeval
tv_date
;
...
...
@@ -144,8 +171,8 @@ void mwait( mtime_t date )
{
return
;
}
/* Sleep only has milisecond resolution */
Sleep
(
(
DWORD
)(
delay
/
1000
)
);
usleep
(
delay
);
#else
...
...
@@ -160,7 +187,10 @@ void mwait( mtime_t date )
gettimeofday
(
&
tv_date
,
NULL
);
/* calculate delay and check if current date is before wished date */
delay
=
date
-
(
mtime_t
)
tv_date
.
tv_sec
*
1000000
-
(
mtime_t
)
tv_date
.
tv_usec
-
10000
;
delay
=
date
-
(
mtime_t
)
tv_date
.
tv_sec
*
1000000
-
(
mtime_t
)
tv_date
.
tv_usec
-
10000
;
/* Linux/i386 has a granularity of 10 ms. It's better to be in advance
* than to be late. */
if
(
delay
<=
0
)
/* wished date is now or already passed */
...
...
@@ -191,12 +221,7 @@ void msleep( mtime_t delay )
#if defined( HAVE_KERNEL_OS_H )
snooze
(
delay
);
#elif defined( WIN32 )
Sleep
(
delay
/
1000
);
/* Sleep only has milisecond resolution */
/* Maybe we could use the multimedia timer to reach the right resolution, */
/* or the old Winsock select() function ?*/
#elif defined( HAVE_USLEEP )
#elif defined( HAVE_USLEEP ) || defined( WIN32 )
usleep
(
delay
);
#else
...
...
src/video_output/video_text.c
View file @
b8ce47bb
...
...
@@ -2,7 +2,7 @@
* video_text.c : text manipulation functions
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: video_text.c,v 1.2
7 2001/05/31 01:37:08
sam Exp $
* $Id: video_text.c,v 1.2
8 2001/05/31 03:12:49
sam Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -34,9 +34,9 @@
#include <fcntl.h>
/* open() */
#ifdef HAVE_UNISTD_H
#
include <unistd.h>
/* read(), close() */
#
include <unistd.h>
/* read(), close() */
#elif defined( _MSC_VER ) && defined( _WIN32 )
#include <io.h>
#
include <io.h>
#endif
#ifdef SYS_BEOS
...
...
@@ -47,6 +47,10 @@
# include "darwin_specific.h"
#endif
#if defined( WIN32 )
# include <io.h>
#endif
#include "config.h"
#include "common.h"
#include "video_text.h"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment