Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
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-1.1
Commits
ded081bc
Commit
ded081bc
authored
May 30, 2009
by
JP Dinger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vcdx: 100% cosmetics; indentation reformatting.
parent
f5078293
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
459 additions
and
475 deletions
+459
-475
modules/access/vcdx/access.c
modules/access/vcdx/access.c
+459
-475
No files found.
modules/access/vcdx/access.c
View file @
ded081bc
...
@@ -103,8 +103,7 @@ cdio_log_handler (cdio_log_level_t level, const char message[])
...
@@ -103,8 +103,7 @@ cdio_log_handler (cdio_log_level_t level, const char message[])
break
;
break
;
default:
default:
msg_Warn
(
p_vcd_access
,
"%s
\n
%s %d"
,
message
,
msg_Warn
(
p_vcd_access
,
"%s
\n
%s %d"
,
message
,
"The above message had unknown log level"
,
"The above message had unknown log level"
,
level
);
level
);
}
}
return
;
return
;
}
}
...
@@ -129,8 +128,7 @@ vcd_log_handler (vcd_log_level_t level, const char message[])
...
@@ -129,8 +128,7 @@ vcd_log_handler (vcd_log_level_t level, const char message[])
break
;
break
;
default:
default:
msg_Warn
(
p_vcd_access
,
"%s
\n
%s %d"
,
message
,
msg_Warn
(
p_vcd_access
,
"%s
\n
%s %d"
,
message
,
"The above message had unknown vcdimager log level"
,
"The above message had unknown vcdimager log level"
,
level
);
level
);
}
}
return
;
return
;
}
}
...
@@ -177,7 +175,7 @@ VCDReadBlock( access_t * p_access )
...
@@ -177,7 +175,7 @@ VCDReadBlock( access_t * p_access )
right this shouldn't have to happen.
right this shouldn't have to happen.
*/
*/
#if 0
#if 0
if
( p_access->info.i_pos != p_access->info.i_size ) {
if
( p_access->info.i_pos != p_access->info.i_size ) {
msg_Warn( p_access,
msg_Warn( p_access,
"At end but pos (%llu) is not size (%llu). Adjusting.",
"At end but pos (%llu) is not size (%llu). Adjusting.",
p_access->info.i_pos, p_access->info.i_size );
p_access->info.i_pos, p_access->info.i_size );
...
@@ -189,19 +187,17 @@ VCDReadBlock( access_t * p_access )
...
@@ -189,19 +187,17 @@ VCDReadBlock( access_t * p_access )
return
NULL
;
return
NULL
;
case
READ_ERROR
:
case
READ_ERROR
:
/* Some sort of error. Should we increment lsn? to skip block?
/* Some sort of error. Should we increment lsn? to skip block? */
*/
block_Release
(
p_block
);
block_Release
(
p_block
);
return
NULL
;
return
NULL
;
case
READ_STILL_FRAME
:
case
READ_STILL_FRAME
:
{
/* FIXME The below should be done in an event thread.
/* FIXME The below should be done in an event thread.
Until then...
Until then...
*/
*/
#if 1
#if 1
msleep
(
MILLISECONDS_PER_SEC
*
*
p_buf
);
msleep
(
MILLISECONDS_PER_SEC
*
*
p_buf
);
VCDSetOrigin
(
p_access
,
p_vcdplayer
->
origin_lsn
,
p_vcdplayer
->
i_track
,
VCDSetOrigin
(
p_access
,
p_vcdplayer
->
origin_lsn
,
&
(
p_vcdplayer
->
play_item
));
p_vcdplayer
->
i_track
,
&
(
p_vcdplayer
->
play_item
));
// p_vcd->in_still = false;
// p_vcd->in_still = false;
dbg_print
(
INPUT_DBG_STILL
,
"still wait time done"
);
dbg_print
(
INPUT_DBG_STILL
,
"still wait time done"
);
#else
#else
...
@@ -210,12 +206,11 @@ VCDReadBlock( access_t * p_access )
...
@@ -210,12 +206,11 @@ VCDReadBlock( access_t * p_access )
block_Release
(
p_block
);
block_Release
(
p_block
);
return
NULL
;
return
NULL
;
}
default:
default:
case
READ_BLOCK
:
case
READ_BLOCK
:
/* Read buffer */
/* Read buffer */
;
break
;
}
}
p_buf
+=
M2F2_SECTOR_SIZE
;
p_buf
+=
M2F2_SECTOR_SIZE
;
...
@@ -249,7 +244,6 @@ int
...
@@ -249,7 +244,6 @@ int
VCDSeek
(
access_t
*
p_access
,
int64_t
i_pos
)
VCDSeek
(
access_t
*
p_access
,
int64_t
i_pos
)
{
{
if
(
!
p_access
||
!
p_access
->
p_sys
)
return
VLC_EGENERIC
;
if
(
!
p_access
||
!
p_access
->
p_sys
)
return
VLC_EGENERIC
;
{
{
vcdplayer_t
*
p_vcdplayer
=
(
vcdplayer_t
*
)
p_vcd_access
->
p_sys
;
vcdplayer_t
*
p_vcdplayer
=
(
vcdplayer_t
*
)
p_vcd_access
->
p_sys
;
const
input_title_t
*
t
=
p_vcdplayer
->
p_title
[
p_access
->
info
.
i_title
];
const
input_title_t
*
t
=
p_vcdplayer
->
p_title
[
p_access
->
info
.
i_title
];
...
@@ -261,12 +255,14 @@ VCDSeek( access_t * p_access, int64_t i_pos )
...
@@ -261,12 +255,14 @@ VCDSeek( access_t * p_access, int64_t i_pos )
p_vcdplayer
->
i_lsn
=
(
i_pos
/
(
int64_t
)
M2F2_SECTOR_SIZE
)
+
p_vcdplayer
->
i_lsn
=
(
i_pos
/
(
int64_t
)
M2F2_SECTOR_SIZE
)
+
p_vcdplayer
->
origin_lsn
;
p_vcdplayer
->
origin_lsn
;
switch
(
p_vcdplayer
->
play_item
.
type
)
{
switch
(
p_vcdplayer
->
play_item
.
type
)
{
case
VCDINFO_ITEM_TYPE_TRACK
:
case
VCDINFO_ITEM_TYPE_TRACK
:
case
VCDINFO_ITEM_TYPE_ENTRY
:
case
VCDINFO_ITEM_TYPE_ENTRY
:
break
;
break
;
default:
default:
p_vcdplayer
->
b_valid_ep
=
false
;
p_vcdplayer
->
b_valid_ep
=
false
;
break
;
}
}
/* Find entry */
/* Find entry */
...
@@ -286,8 +282,8 @@ VCDSeek( access_t * p_access, int64_t i_pos )
...
@@ -286,8 +282,8 @@ VCDSeek( access_t * p_access, int64_t i_pos )
vcdinfo_itemid_t
itemid
;
vcdinfo_itemid_t
itemid
;
itemid
.
num
=
i_entry
;
itemid
.
num
=
i_entry
;
itemid
.
type
=
VCDINFO_ITEM_TYPE_ENTRY
;
itemid
.
type
=
VCDINFO_ITEM_TYPE_ENTRY
;
VCDSetOrigin
(
p_access
,
p_vcdplayer
->
i_lsn
,
p_vcdplayer
->
i_track
,
VCDSetOrigin
(
p_access
,
p_vcdplayer
->
i_lsn
,
&
itemid
);
p_vcdplayer
->
i_track
,
&
itemid
);
}
}
}
}
...
@@ -312,11 +308,9 @@ VCDSeek( access_t * p_access, int64_t i_pos )
...
@@ -312,11 +308,9 @@ VCDSeek( access_t * p_access, int64_t i_pos )
p_access
->
info
.
i_update
|=
INPUT_UPDATE_SEEKPOINT
;
p_access
->
info
.
i_update
|=
INPUT_UPDATE_SEEKPOINT
;
p_access
->
info
.
i_seekpoint
=
i_seekpoint
;
p_access
->
info
.
i_seekpoint
=
i_seekpoint
;
}
}
}
}
p_access
->
info
.
b_eof
=
false
;
p_access
->
info
.
b_eof
=
false
;
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -329,10 +323,8 @@ VCDEntryPoints( access_t * p_access )
...
@@ -329,10 +323,8 @@ VCDEntryPoints( access_t * p_access )
{
{
if
(
!
p_access
||
!
p_access
->
p_sys
)
return
false
;
if
(
!
p_access
||
!
p_access
->
p_sys
)
return
false
;
{
vcdplayer_t
*
p_vcdplayer
=
(
vcdplayer_t
*
)
p_access
->
p_sys
;
vcdplayer_t
*
p_vcdplayer
=
(
vcdplayer_t
*
)
p_access
->
p_sys
;
const
unsigned
int
i_entries
=
const
unsigned
int
i_entries
=
vcdinfo_get_num_entries
(
p_vcdplayer
->
vcd
);
vcdinfo_get_num_entries
(
p_vcdplayer
->
vcd
);
const
track_t
i_last_track
const
track_t
i_last_track
=
cdio_get_num_tracks
(
vcdinfo_get_cd_image
(
p_vcdplayer
->
vcd
))
=
cdio_get_num_tracks
(
vcdinfo_get_cd_image
(
p_vcdplayer
->
vcd
))
+
cdio_get_first_track_num
(
vcdinfo_get_cd_image
(
p_vcdplayer
->
vcd
));
+
cdio_get_first_track_num
(
vcdinfo_get_cd_image
(
p_vcdplayer
->
vcd
));
...
@@ -356,21 +348,22 @@ VCDEntryPoints( access_t * p_access )
...
@@ -356,21 +348,22 @@ VCDEntryPoints( access_t * p_access )
for
(
i
=
0
;
i
<
i_entries
;
i
++
)
for
(
i
=
0
;
i
<
i_entries
;
i
++
)
{
{
const
track_t
i_track
=
vcdinfo_get_track
(
p_vcdplayer
->
vcd
,
i
);
const
track_t
i_track
=
vcdinfo_get_track
(
p_vcdplayer
->
vcd
,
i
);
if
(
i_track
<=
i_last_track
)
{
if
(
i_track
<=
i_last_track
)
{
seekpoint_t
*
s
=
vlc_seekpoint_New
();
seekpoint_t
*
s
=
vlc_seekpoint_New
();
char
psz_entry
[
100
];
char
psz_entry
[
100
];
snprintf
(
psz_entry
,
sizeof
(
psz_entry
),
"%s %02d"
,
_
(
"Entry"
),
i
);
snprintf
(
psz_entry
,
sizeof
(
psz_entry
),
"%s %02d"
,
_
(
"Entry"
),
i
);
p_vcdplayer
->
p_entries
[
i
]
=
vcdinfo_get_entry_lsn
(
p_vcdplayer
->
vcd
,
i
);
p_vcdplayer
->
p_entries
[
i
]
=
vcdinfo_get_entry_lsn
(
p_vcdplayer
->
vcd
,
i
);
s
->
psz_name
=
strdup
(
psz_entry
);
s
->
psz_name
=
strdup
(
psz_entry
);
s
->
i_byte_offset
=
s
->
i_byte_offset
=
(
p_vcdplayer
->
p_entries
[
i
]
(
p_vcdplayer
->
p_entries
[
i
]
-
vcdinfo_get_track_lsn
(
p_vcdplayer
->
vcd
,
i_track
))
-
vcdinfo_get_track_lsn
(
p_vcdplayer
->
vcd
,
i_track
))
*
M2F2_SECTOR_SIZE
;
*
M2F2_SECTOR_SIZE
;
dbg_print
(
INPUT_DBG_MRL
,
dbg_print
(
INPUT_DBG_MRL
,
"%s, lsn %d, byte_offset %ld"
,
"%s, lsn %d, byte_offset %ld"
,
s
->
psz_name
,
p_vcdplayer
->
p_entries
[
i
],
s
->
psz_name
,
p_vcdplayer
->
p_entries
[
i
],
(
unsigned
long
int
)
s
->
i_byte_offset
);
(
unsigned
long
int
)
s
->
i_byte_offset
);
TAB_APPEND
(
p_vcdplayer
->
p_title
[
i_track
-
1
]
->
i_seekpoint
,
TAB_APPEND
(
p_vcdplayer
->
p_title
[
i_track
-
1
]
->
i_seekpoint
,
...
@@ -381,7 +374,6 @@ VCDEntryPoints( access_t * p_access )
...
@@ -381,7 +374,6 @@ VCDEntryPoints( access_t * p_access )
}
}
p_vcdplayer
->
b_valid_ep
=
true
;
p_vcdplayer
->
b_valid_ep
=
true
;
return
true
;
return
true
;
}
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -410,8 +402,7 @@ VCDSegments( access_t * p_access )
...
@@ -410,8 +402,7 @@ VCDSegments( access_t * p_access )
/* We have one additional segment allocated so we can get the size
/* We have one additional segment allocated so we can get the size
by subtracting seg[i+1] - seg[i].
by subtracting seg[i+1] - seg[i].
*/
*/
p_vcdplayer
->
p_segments
=
p_vcdplayer
->
p_segments
=
malloc
(
sizeof
(
lsn_t
)
*
(
p_vcdplayer
->
i_segments
+
1
));
malloc
(
sizeof
(
lsn_t
)
*
(
p_vcdplayer
->
i_segments
+
1
)
);
if
(
p_vcdplayer
->
p_segments
==
NULL
)
if
(
p_vcdplayer
->
p_segments
==
NULL
)
{
{
LOG_ERR
(
"not enough memory for segment treatment"
);
LOG_ERR
(
"not enough memory for segment treatment"
);
...
@@ -597,7 +588,6 @@ VCDParse( access_t * p_access, /*out*/ vcdinfo_itemid_t * p_itemid,
...
@@ -597,7 +588,6 @@ VCDParse( access_t * p_access, /*out*/ vcdinfo_itemid_t * p_itemid,
*
psz_parser
=
'\0'
;
*
psz_parser
=
'\0'
;
++
psz_parser
;
++
psz_parser
;
if
(
*
psz_parser
)
if
(
*
psz_parser
)
{
switch
(
*
psz_parser
)
{
switch
(
*
psz_parser
)
{
case
'E'
:
case
'E'
:
p_itemid
->
type
=
VCDINFO_ITEM_TYPE_ENTRY
;
p_itemid
->
type
=
VCDINFO_ITEM_TYPE_ENTRY
;
...
@@ -619,8 +609,8 @@ VCDParse( access_t * p_access, /*out*/ vcdinfo_itemid_t * p_itemid,
...
@@ -619,8 +609,8 @@ VCDParse( access_t * p_access, /*out*/ vcdinfo_itemid_t * p_itemid,
++
psz_parser
;
++
psz_parser
;
*
play_single_item
=
true
;
*
play_single_item
=
true
;
break
;
break
;
default:
;
default:
}
break
;
}
}
num
=
strtol
(
psz_parser
,
&
psz_next
,
10
);
num
=
strtol
(
psz_parser
,
&
psz_next
,
10
);
...
@@ -634,20 +624,22 @@ VCDParse( access_t * p_access, /*out*/ vcdinfo_itemid_t * p_itemid,
...
@@ -634,20 +624,22 @@ VCDParse( access_t * p_access, /*out*/ vcdinfo_itemid_t * p_itemid,
}
}
if
(
!*
psz_source
)
{
if
(
!*
psz_source
)
{
/* No source specified, so figure it out. */
/* No source specified, so figure it out. */
if
(
!
p_access
->
psz_access
)
return
NULL
;
if
(
!
p_access
->
psz_access
)
return
NULL
;
psz_source
=
config_GetPsz
(
p_access
,
"vcd"
);
psz_source
=
config_GetPsz
(
p_access
,
"vcd"
);
if
(
!
psz_source
||
0
==
strlen
(
psz_source
)
)
{
if
(
!
psz_source
||
0
==
strlen
(
psz_source
)
)
{
free
(
psz_source
);
free
(
psz_source
);
/* Scan for a CD-ROM drive with a VCD in it. */
/* Scan for a CD-ROM drive with a VCD in it. */
char
**
cd_drives
=
cdio_get_devices_with_cap
(
NULL
,
char
**
cd_drives
=
cdio_get_devices_with_cap
(
NULL
,
(
CDIO_FS_ANAL_SVCD
|
CDIO_FS_ANAL_CVD
(
CDIO_FS_ANAL_SVCD
|
CDIO_FS_ANAL_CVD
|
CDIO_FS_ANAL_VIDEOCD
|
CDIO_FS_UNKNOWN
),
|
CDIO_FS_ANAL_VIDEOCD
|
CDIO_FS_UNKNOWN
),
true
);
true
);
if
(
NULL
==
cd_drives
)
return
NULL
;
if
(
NULL
==
cd_drives
)
return
NULL
;
if
(
cd_drives
[
0
]
==
NULL
)
if
(
cd_drives
[
0
]
==
NULL
)
{
{
...
@@ -676,12 +668,12 @@ VCDSetOrigin( access_t *p_access, lsn_t i_lsn, track_t i_track,
...
@@ -676,12 +668,12 @@ VCDSetOrigin( access_t *p_access, lsn_t i_lsn, track_t i_track,
vcdplayer_t
*
p_vcdplayer
=
(
vcdplayer_t
*
)
p_access
->
p_sys
;
vcdplayer_t
*
p_vcdplayer
=
(
vcdplayer_t
*
)
p_access
->
p_sys
;
dbg_print
(
(
INPUT_DBG_CALL
|
INPUT_DBG_LSN
),
dbg_print
(
(
INPUT_DBG_CALL
|
INPUT_DBG_LSN
),
"i_lsn: %lu, track: %d"
,
(
long
unsigned
int
)
i_lsn
,
"i_lsn: %lu, track: %d"
,
(
long
unsigned
int
)
i_lsn
,
i_track
);
i_track
);
vcdplayer_set_origin
(
p_access
,
i_lsn
,
i_track
,
p_itemid
);
vcdplayer_set_origin
(
p_access
,
i_lsn
,
i_track
,
p_itemid
);
switch
(
p_vcdplayer
->
play_item
.
type
)
{
switch
(
p_vcdplayer
->
play_item
.
type
)
{
case
VCDINFO_ITEM_TYPE_ENTRY
:
case
VCDINFO_ITEM_TYPE_ENTRY
:
VCDUpdateVar
(
p_access
,
p_itemid
->
num
,
VLC_VAR_SETVALUE
,
VCDUpdateVar
(
p_access
,
p_itemid
->
num
,
VLC_VAR_SETVALUE
,
"chapter"
,
_
(
"Entry"
),
"Setting entry/segment"
);
"chapter"
,
_
(
"Entry"
),
"Setting entry/segment"
);
...
@@ -690,10 +682,10 @@ VCDSetOrigin( access_t *p_access, lsn_t i_lsn, track_t i_track,
...
@@ -690,10 +682,10 @@ VCDSetOrigin( access_t *p_access, lsn_t i_lsn, track_t i_track,
{
{
p_access
->
info
.
i_size
=
p_vcdplayer
->
p_title
[
i_track
-
1
]
->
i_size
;
p_access
->
info
.
i_size
=
p_vcdplayer
->
p_title
[
i_track
-
1
]
->
i_size
;
p_access
->
info
.
i_pos
=
(
int64_t
)
M2F2_SECTOR_SIZE
*
p_access
->
info
.
i_pos
=
(
int64_t
)
M2F2_SECTOR_SIZE
*
(
vcdinfo_get_track_lsn
(
p_vcdplayer
->
vcd
,
i_track
)
-
i_lsn
);
(
vcdinfo_get_track_lsn
(
p_vcdplayer
->
vcd
,
i_track
)
-
i_lsn
);
}
else
{
}
else
{
p_access
->
info
.
i_size
=
M2F2_SECTOR_SIZE
*
(
int64_t
)
p_access
->
info
.
i_size
=
M2F2_SECTOR_SIZE
*
(
int64_t
)
vcdinfo_get_entry_sect_count
(
p_vcdplayer
->
vcd
,
p_itemid
->
num
);
vcdinfo_get_entry_sect_count
(
p_vcdplayer
->
vcd
,
p_itemid
->
num
);
p_access
->
info
.
i_pos
=
0
;
p_access
->
info
.
i_pos
=
0
;
}
}
dbg_print
(
(
INPUT_DBG_LSN
|
INPUT_DBG_PBC
),
"size: %llu, pos: %llu"
,
dbg_print
(
(
INPUT_DBG_LSN
|
INPUT_DBG_PBC
),
"size: %llu, pos: %llu"
,
...
@@ -753,8 +745,9 @@ vcd_Open( vlc_object_t *p_this, const char *psz_dev )
...
@@ -753,8 +745,9 @@ vcd_Open( vlc_object_t *p_this, const char *psz_dev )
if
(
!
psz_dev
)
return
NULL
;
if
(
!
psz_dev
)
return
NULL
;
actual_dev
=
ToLocaleDup
(
psz_dev
);
actual_dev
=
ToLocaleDup
(
psz_dev
);
if
(
vcdinfo_open
(
&
p_vcdobj
,
&
actual_dev
,
DRIVER_UNKNOWN
,
NULL
)
!=
if
(
vcdinfo_open
(
&
p_vcdobj
,
&
actual_dev
,
DRIVER_UNKNOWN
,
NULL
)
!=
VCDINFO_OPEN_VCD
)
{
VCDINFO_OPEN_VCD
)
{
free
(
actual_dev
);
free
(
actual_dev
);
return
NULL
;
return
NULL
;
}
}
...
@@ -764,11 +757,13 @@ vcd_Open( vlc_object_t *p_this, const char *psz_dev )
...
@@ -764,11 +757,13 @@ vcd_Open( vlc_object_t *p_this, const char *psz_dev )
Save summary info on tracks, segments and entries...
Save summary info on tracks, segments and entries...
*/
*/
if
(
0
<
(
p_vcdplayer
->
i_tracks
=
vcdinfo_get_num_tracks
(
p_vcdobj
))
)
{
if
(
0
<
(
p_vcdplayer
->
i_tracks
=
vcdinfo_get_num_tracks
(
p_vcdobj
))
)
{
p_vcdplayer
->
track
=
(
vcdplayer_play_item_info_t
*
)
p_vcdplayer
->
track
=
(
vcdplayer_play_item_info_t
*
)
calloc
(
p_vcdplayer
->
i_tracks
,
sizeof
(
vcdplayer_play_item_info_t
));
calloc
(
p_vcdplayer
->
i_tracks
,
sizeof
(
vcdplayer_play_item_info_t
));
for
(
i
=
0
;
i
<
p_vcdplayer
->
i_tracks
;
i
++
)
{
for
(
i
=
0
;
i
<
p_vcdplayer
->
i_tracks
;
i
++
)
{
unsigned
int
track_num
=
i
+
1
;
unsigned
int
track_num
=
i
+
1
;
p_vcdplayer
->
track
[
i
].
size
=
p_vcdplayer
->
track
[
i
].
size
=
vcdinfo_get_track_sect_count
(
p_vcdobj
,
track_num
);
vcdinfo_get_track_sect_count
(
p_vcdobj
,
track_num
);
...
@@ -778,26 +773,32 @@ vcd_Open( vlc_object_t *p_this, const char *psz_dev )
...
@@ -778,26 +773,32 @@ vcd_Open( vlc_object_t *p_this, const char *psz_dev )
}
else
}
else
p_vcdplayer
->
track
=
NULL
;
p_vcdplayer
->
track
=
NULL
;
if
(
0
<
(
p_vcdplayer
->
i_entries
=
vcdinfo_get_num_entries
(
p_vcdobj
))
)
{
if
(
0
<
(
p_vcdplayer
->
i_entries
=
vcdinfo_get_num_entries
(
p_vcdobj
))
)
{
p_vcdplayer
->
entry
=
(
vcdplayer_play_item_info_t
*
)
p_vcdplayer
->
entry
=
(
vcdplayer_play_item_info_t
*
)
calloc
(
p_vcdplayer
->
i_entries
,
sizeof
(
vcdplayer_play_item_info_t
));
calloc
(
p_vcdplayer
->
i_entries
,
sizeof
(
vcdplayer_play_item_info_t
));
for
(
i
=
0
;
i
<
p_vcdplayer
->
i_entries
;
i
++
)
{
for
(
i
=
0
;
i
<
p_vcdplayer
->
i_entries
;
i
++
)
{
p_vcdplayer
->
entry
[
i
].
size
=
p_vcdplayer
->
entry
[
i
].
size
=
vcdinfo_get_entry_sect_count
(
p_vcdobj
,
i
);
vcdinfo_get_entry_sect_count
(
p_vcdobj
,
i
);
p_vcdplayer
->
entry
[
i
].
start_LSN
=
vcdinfo_get_entry_lsn
(
p_vcdobj
,
i
);
p_vcdplayer
->
entry
[
i
].
start_LSN
=
vcdinfo_get_entry_lsn
(
p_vcdobj
,
i
);
}
}
}
else
}
else
p_vcdplayer
->
entry
=
NULL
;
p_vcdplayer
->
entry
=
NULL
;
if
(
0
<
(
p_vcdplayer
->
i_segments
=
vcdinfo_get_num_segments
(
p_vcdobj
))
)
{
if
(
0
<
(
p_vcdplayer
->
i_segments
=
vcdinfo_get_num_segments
(
p_vcdobj
))
)
{
p_vcdplayer
->
segment
=
(
vcdplayer_play_item_info_t
*
)
p_vcdplayer
->
segment
=
(
vcdplayer_play_item_info_t
*
)
calloc
(
p_vcdplayer
->
i_segments
,
sizeof
(
vcdplayer_play_item_info_t
));
calloc
(
p_vcdplayer
->
i_segments
,
sizeof
(
vcdplayer_play_item_info_t
));
for
(
i
=
0
;
i
<
p_vcdplayer
->
i_segments
;
i
++
)
{
for
(
i
=
0
;
i
<
p_vcdplayer
->
i_segments
;
i
++
)
{
p_vcdplayer
->
segment
[
i
].
size
=
p_vcdplayer
->
segment
[
i
].
size
=
vcdinfo_get_seg_sector_count
(
p_vcdobj
,
i
);
vcdinfo_get_seg_sector_count
(
p_vcdobj
,
i
);
p_vcdplayer
->
segment
[
i
].
start_LSN
=
vcdinfo_get_seg_lsn
(
p_vcdobj
,
i
);
p_vcdplayer
->
segment
[
i
].
start_LSN
=
vcdinfo_get_seg_lsn
(
p_vcdobj
,
i
);
}
}
}
else
}
else
p_vcdplayer
->
segment
=
NULL
;
p_vcdplayer
->
segment
=
NULL
;
...
@@ -815,11 +816,13 @@ VCDUpdateVar( access_t *p_access, int i_num, int i_action,
...
@@ -815,11 +816,13 @@ VCDUpdateVar( access_t *p_access, int i_num, int i_action,
{
{
vlc_value_t
val
;
vlc_value_t
val
;
val
.
i_int
=
i_num
;
val
.
i_int
=
i_num
;
if
(
p_access
)
{
if
(
p_access
)
{
const
vcdplayer_t
*
p_vcdplayer
=
(
vcdplayer_t
*
)
p_vcd_access
->
p_sys
;
const
vcdplayer_t
*
p_vcdplayer
=
(
vcdplayer_t
*
)
p_vcd_access
->
p_sys
;
dbg_print
(
INPUT_DBG_PBC
,
"%s %d"
,
p_debug_label
,
i_num
);
dbg_print
(
INPUT_DBG_PBC
,
"%s %d"
,
p_debug_label
,
i_num
);
}
}
if
(
p_label
)
{
if
(
p_label
)
{
vlc_value_t
text
;
vlc_value_t
text
;
text
.
psz_string
=
p_label
;
text
.
psz_string
=
p_label
;
var_Change
(
p_access
,
p_varname
,
VLC_VAR_SETTEXT
,
&
text
,
NULL
);
var_Change
(
p_access
,
p_varname
,
VLC_VAR_SETTEXT
,
&
text
,
NULL
);
...
@@ -912,7 +915,8 @@ VCDOpen ( vlc_object_t *p_this )
...
@@ -912,7 +915,8 @@ VCDOpen ( vlc_object_t *p_this )
/* Get track information. */
/* Get track information. */
p_vcdplayer
->
i_tracks
=
vcdinfo_get_num_tracks
(
p_vcdplayer
->
vcd
);
p_vcdplayer
->
i_tracks
=
vcdinfo_get_num_tracks
(
p_vcdplayer
->
vcd
);
if
(
p_vcdplayer
->
i_tracks
<
1
||
CDIO_INVALID_TRACK
==
p_vcdplayer
->
i_tracks
)
{
if
(
p_vcdplayer
->
i_tracks
<
1
||
CDIO_INVALID_TRACK
==
p_vcdplayer
->
i_tracks
)
{
vcdinfo_close
(
p_vcdplayer
->
vcd
);
vcdinfo_close
(
p_vcdplayer
->
vcd
);
LOG_ERR
(
"no movie tracks found"
);
LOG_ERR
(
"no movie tracks found"
);
goto
err_exit
;
goto
err_exit
;
...
@@ -950,9 +954,8 @@ VCDOpen ( vlc_object_t *p_this )
...
@@ -950,9 +954,8 @@ VCDOpen ( vlc_object_t *p_this )
p_access
->
psz_demux
=
strdup
(
"ps"
);
p_access
->
psz_demux
=
strdup
(
"ps"
);
#ifdef FIXED
#ifdef FIXED
if
(
play_single_item
)
if
(
play_single_item
)
VCDFixupPlayList
(
p_access
,
p_vcd
,
psz_source
,
&
itemid
,
VCDFixupPlayList
(
p_access
,
p_vcd
,
psz_source
,
&
itemid
,
play_single_item
);
play_single_item
);
#endif
#endif
#ifdef FIXED
#ifdef FIXED
...
@@ -1025,7 +1028,6 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
...
@@ -1025,7 +1028,6 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
during the Open/Initialize call.
during the Open/Initialize call.
*/
*/
case
ACCESS_GET_META
:
case
ACCESS_GET_META
:
{
dbg_print
(
INPUT_DBG_EVENT
,
"get meta info"
);
dbg_print
(
INPUT_DBG_EVENT
,
"get meta info"
);
#if 0
#if 0
if( p_vcdplayer->p_meta )
if( p_vcdplayer->p_meta )
...
@@ -1040,39 +1042,28 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
...
@@ -1040,39 +1042,28 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
msg_Warn
(
p_access
,
"tried to copy NULL meta info"
);
msg_Warn
(
p_access
,
"tried to copy NULL meta info"
);
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
return
VLC_EGENERIC
;
case
ACCESS_CAN_SEEK
:
case
ACCESS_CAN_SEEK
:
case
ACCESS_CAN_FASTSEEK
:
case
ACCESS_CAN_FASTSEEK
:
case
ACCESS_CAN_PAUSE
:
case
ACCESS_CAN_PAUSE
:
case
ACCESS_CAN_CONTROL_PACE
:
case
ACCESS_CAN_CONTROL_PACE
:
{
bool
*
pb_bool
=
(
bool
*
)
va_arg
(
args
,
bool
*
);
dbg_print
(
INPUT_DBG_EVENT
,
dbg_print
(
INPUT_DBG_EVENT
,
"seek/fastseek/pause/can_control_pace"
);
"seek/fastseek/pause/can_control_pace"
);
*
pb_bool
=
true
;
*
((
bool
*
)
va_arg
(
args
,
bool
*
))
=
true
;
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
break
;
}
/* */
/* */
case
ACCESS_GET_PTS_DELAY
:
case
ACCESS_GET_PTS_DELAY
:
{
*
(
int64_t
*
)
va_arg
(
args
,
int64_t
*
)
=
MILLISECONDS_PER_SEC
*
int64_t
*
pi_64
=
(
int64_t
*
)
va_arg
(
args
,
int64_t
*
);
var_GetInteger
(
p_access
,
MODULE_STRING
"-caching"
);
*
pi_64
=
var_GetInteger
(
p_access
,
MODULE_STRING
"-caching"
)
*
MILLISECONDS_PER_SEC
;
dbg_print
(
INPUT_DBG_EVENT
,
"GET PTS DELAY"
);
dbg_print
(
INPUT_DBG_EVENT
,
"GET PTS DELAY"
);
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
break
;
}
/* */
/* */
case
ACCESS_SET_PAUSE_STATE
:
case
ACCESS_SET_PAUSE_STATE
:
dbg_print
(
INPUT_DBG_EVENT
,
"SET PAUSE STATE"
);
dbg_print
(
INPUT_DBG_EVENT
,
"SET PAUSE STATE"
);
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
break
;
case
ACCESS_GET_TITLE_INFO
:
case
ACCESS_GET_TITLE_INFO
:
{
{
...
@@ -1103,17 +1094,14 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
...
@@ -1103,17 +1094,14 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
*
pi_int
=
p_vcdplayer
->
i_titles
;
*
pi_int
=
p_vcdplayer
->
i_titles
;
*
ppp_title
=
malloc
(
sizeof
(
input_title_t
**
)
*
ppp_title
=
malloc
(
sizeof
(
input_title_t
**
)
*
p_vcdplayer
->
i_titles
);
*
p_vcdplayer
->
i_titles
);
if
(
!*
ppp_title
)
return
VLC_ENOMEM
;
if
(
!*
ppp_title
)
return
VLC_ENOMEM
;
for
(
i
=
0
;
i
<
p_vcdplayer
->
i_titles
;
i
++
)
for
(
i
=
0
;
i
<
p_vcdplayer
->
i_titles
;
i
++
)
{
if
(
p_vcdplayer
->
p_title
[
i
]
)
if
(
p_vcdplayer
->
p_title
[
i
]
)
(
*
ppp_title
)[
i
]
=
(
*
ppp_title
)[
i
]
=
vlc_input_title_Duplicate
(
p_vcdplayer
->
p_title
[
i
]
);
vlc_input_title_Duplicate
(
p_vcdplayer
->
p_title
[
i
]);
}
}
}
break
;
break
;
...
@@ -1126,7 +1114,7 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
...
@@ -1126,7 +1114,7 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
vcdinfo_itemid_t
itemid
;
vcdinfo_itemid_t
itemid
;
track_t
i_track
=
i
+
1
;
track_t
i_track
=
i
+
1
;
unsigned
int
i_entry
=
unsigned
int
i_entry
=
vcdinfo_track_get_entry
(
p_vcdplayer
->
vcd
,
i_track
);
vcdinfo_track_get_entry
(
p_vcdplayer
->
vcd
,
i_track
);
if
(
i
<
p_vcdplayer
->
i_tracks
)
if
(
i
<
p_vcdplayer
->
i_tracks
)
{
{
...
@@ -1137,20 +1125,19 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
...
@@ -1137,20 +1125,19 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
}
}
else
else
{
{
/* FIXME! i_tracks+2 are Segments, but we need to
/* FIXME! i_tracks+2 are Segments, but we need to be able
be able to figure out which segment of that.
to figure out which segment of that. i_tracks+1 is
i_tracks+1 is either Segments (if no LIDs) or
either Segments (if no LIDs) or LIDs otherwise. Again
LIDs otherwise. Again need a way to get the LID
need a way to get the LID number. */
number. */
msg_Warn
(
p_access
,
msg_Warn
(
p_access
,
"Trying to set track (%u) beyond end "
"Trying to set track (%u) beyond end of last track (%u)."
,
"of last track (%u)."
,
i
+
1
,
p_vcdplayer
->
i_tracks
);
i
+
1
,
p_vcdplayer
->
i_tracks
);
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
VCDSetOrigin
(
p_access
,
VCDSetOrigin
(
p_access
,
vcdinfo_get_entry_lsn
(
p_vcdplayer
->
vcd
,
i_entry
),
vcdinfo_get_entry_lsn
(
p_vcdplayer
->
vcd
,
i_entry
),
i_track
,
&
itemid
);
i_track
,
&
itemid
);
}
}
break
;
break
;
...
@@ -1165,10 +1152,9 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
...
@@ -1165,10 +1152,9 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
track_t
i_track
=
p_access
->
info
.
i_title
+
1
;
track_t
i_track
=
p_access
->
info
.
i_title
+
1
;
lsn_t
lsn
;
lsn_t
lsn
;
/* FIXME! For now we are assuming titles are only
/* FIXME! For now we are assuming titles are only tracks and
tracks and that track == title+1 and we the play
that track == title+1 and we the play item is entries (not
item is entries (not tracks or lids).
tracks or lids). We need to generalize all of this.
We need to generalize all of this.
*/
*/
if
(
i
<
p_vcdplayer
->
i_entries
)
if
(
i
<
p_vcdplayer
->
i_entries
)
...
@@ -1178,8 +1164,7 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
...
@@ -1178,8 +1164,7 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
lsn
=
vcdinfo_get_entry_lsn
(
p_vcdplayer
->
vcd
,
i
);
lsn
=
vcdinfo_get_entry_lsn
(
p_vcdplayer
->
vcd
,
i
);
}
else
if
(
i
<
p_vcdplayer
->
i_entries
+
p_vcdplayer
->
i_lids
)
}
else
if
(
i
<
p_vcdplayer
->
i_entries
+
p_vcdplayer
->
i_lids
)
{
{
p_vcdplayer
->
play_item
.
num
=
i
p_vcdplayer
->
play_item
.
num
=
i
=
i
-
p_vcdplayer
->
i_entries
;
=
i
-
p_vcdplayer
->
i_entries
;
p_vcdplayer
->
play_item
.
type
=
VCDINFO_ITEM_TYPE_LID
;
p_vcdplayer
->
play_item
.
type
=
VCDINFO_ITEM_TYPE_LID
;
lsn
=
0
;
lsn
=
0
;
}
else
}
else
...
@@ -1190,9 +1175,8 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
...
@@ -1190,9 +1175,8 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
lsn
=
vcdinfo_get_seg_lsn
(
p_vcdplayer
->
vcd
,
i
);
lsn
=
vcdinfo_get_seg_lsn
(
p_vcdplayer
->
vcd
,
i
);
}
}
VCDSetOrigin
(
p_access
,
VCDSetOrigin
(
p_access
,
vcdinfo_get_entry_lsn
(
p_vcdplayer
->
vcd
,
i
),
vcdinfo_get_entry_lsn
(
p_vcdplayer
->
vcd
,
i
),
i_track
,
&
(
p_vcdplayer
->
play_item
));
i_track
,
&
(
p_vcdplayer
->
play_item
)
);
}
}
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
...
...
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