Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
36e88eb4
Commit
36e88eb4
authored
Dec 30, 2001
by
Stéphane Borel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*Some fixes for dvdread plugin.
It compiles but doesn't work yet.
parent
cc0f0bb6
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
114 additions
and
78 deletions
+114
-78
extras/libdvdread/Makefile
extras/libdvdread/Makefile
+28
-38
plugins/dvdread/dvdread.c
plugins/dvdread/dvdread.c
+7
-7
plugins/dvdread/input_dvdread.c
plugins/dvdread/input_dvdread.c
+79
-33
No files found.
extras/libdvdread/Makefile
View file @
36e88eb4
...
@@ -16,33 +16,22 @@ ALL_SOFLAGS := $(SOFLAGS)$(MAJOR_SO)
...
@@ -16,33 +16,22 @@ ALL_SOFLAGS := $(SOFLAGS)$(MAJOR_SO)
SOFLAGS
:=
SOFLAGS
:=
endif
endif
#
# C headers directories
#
CFLAGS
:=
-I
../../include
-I
../../extras
$(CFLAGS)
#
#
# Objects
# Objects
#
#
OBJ_C
=
dvdread.o dvd_udf.o nav_print.o nav_read.o ifo_print.o ifo_read.o
OBJ_C
=
dvdread.o dvd_udf.o nav_print.o nav_read.o ifo_print.o ifo_read.o
ALL_OBJ
=
$(OBJ_C)
$(OBJ_LIBDVDREAD)
PLUGIN_OBJ
=
$(OBJ_C)
$(OBJ_LIBDVDREAD)
#
BUILTIN_OBJ
=
$(OBJ_C:%.o=DVDREAD_%.o)
# Standard dependencies
#
ALL_OBJ
=
$(PLUGIN_OBJ)
$(BUILTIN_OBJ)
C_DEP
:=
$
(
ALL_OBJ:%.o
=
.dep/%.d
)
$(OBJ_C)
:
%.o: .dep/%.d
$(OBJ_C)
:
%.o: %.c
$(CC)
$(CFLAGS)
$(CFLAGS_LIBDVDREAD)
$(PCFLAGS)
-c
-o
$@
$<
$(BUILTIN_OBJ)
:
DVDREAD_%.o: .dep/%.d
$(BUILTIN_OBJ)
:
DVDREAD_%.o: %.c
$(CC)
$(CFLAGS)
$(CFLAGS_LIBDVDREAD)
$(PCFLAGS)
-c
-o
$@
$<
../../lib/$(FULL_SO)
:
$(OBJ_C) $(OBJ_LIBDVDREAD)
$(CC)
$(PCFLAGS)
$(ALL_SOFLAGS)
-o
$@
$^
$(PLCFLAGS)
$(LIB_LIBDVDREAD)
rm
-f
../../lib/
$(BASE_SO)
&&
ln
-s
$(FULL_SO)
../../lib/
$(BASE_SO)
rm
-f
../../lib/
$(MAJOR_SO)
&&
ln
-s
$(FULL_SO)
../../lib/
$(MAJOR_SO)
../../lib/$(BASE_A)
:
libdvdcss $(BUILTIN_OBJ) $(OBJ_LIBDVDREAD)
ar r
$@
$(BUILTIN_OBJ)
$(RANLIB)
$@
#
#
# Virtual targets
# Virtual targets
...
@@ -54,22 +43,23 @@ clean:
...
@@ -54,22 +43,23 @@ clean:
rm
-f
*
.o
rm
-f
*
.o
rm
-rf
.dep
rm
-rf
.dep
libdvdcss
:
FORCE
:
@
cd
../../
&&
$(MAKE)
libdvdcss
#install:
$(ALL_OBJ)
:
%.o: ../../Makefile.dep Makefile
# mkdir -p $(DESTDIR)$(includedir)/videolan
# $(INSTALL) -m 644 videolan/dvdcss.h $(DESTDIR)$(includedir)/videolan
$(C_DEP)
:
%.d: FORCE
# mkdir -p $(DESTDIR)$(libdir)
@
$(MAKE)
-s
--no-print-directory
-f
../../Makefile.dep
$@
# -$(INSTALL) -m 644 ../../lib/$(BASE_A) $(DESTDIR)$(libdir)
# -$(INSTALL) -m 644 ../../lib/$(FULL_SO) $(DESTDIR)$(libdir)
$(OBJ_C)
:
%.o: .dep/%.d
# rm -f $(DESTDIR)$(libdir)/$(BASE_SO) && ln -s $(FULL_SO) $(DESTDIR)$(libdir)/$(BASE_SO)
$(OBJ_C)
:
%.o: %.c
# rm -f $(DESTDIR)$(libdir)/$(MAJOR_SO) && ln -s $(FULL_SO) $(DESTDIR)$(libdir)/$(MAJOR_SO)
$(CC)
$(CFLAGS)
$(CFLAGS_LIBDVDREAD)
$(PCFLAGS)
-c
-o
$@
$<
#
#uninstall:
../../lib/$(FULL_SO)
:
$(OBJ_C) $(OBJ_LIBDVDREAD)
# rm -f $(DESTDIR)$(includedir)/videolan/dvdcss.h
$(CC)
$(PCFLAGS)
$(ALL_SOFLAGS)
-o
$@
$^
$(PLCFLAGS)
$(LIB_LIBDVDREAD)
# rm -f $(DESTDIR)$(libdir)/$(BASE_A)
rm
-f
../../lib/
$(BASE_SO)
&&
ln
-s
$(FULL_SO)
../../lib/
$(BASE_SO)
# rm -f $(DESTDIR)$(libdir)/$(BASE_SO)
rm
-f
../../lib/
$(MAJOR_SO)
&&
ln
-s
$(FULL_SO)
../../lib/
$(MAJOR_SO)
# rm -f $(DESTDIR)$(libdir)/$(MAJOR_SO)
# rm -f $(DESTDIR)$(libdir)/$(FULL_SO)
../../lib/$(BASE_A)
:
$(OBJ_C) $(OBJ_LIBDVDREAD)
ar r
$@
$^
$(RANLIB)
$@
plugins/dvdread/dvdread.c
View file @
36e88eb4
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* dvdread.c : DvdRead input module for vlc
* dvdread.c : DvdRead input module for vlc
*****************************************************************************
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* Copyright (C) 2001 VideoLAN
* $Id: dvdread.c,v 1.
4 2001/12/30 07:09:55 sam
Exp $
* $Id: dvdread.c,v 1.
5 2001/12/30 22:10:26 stef
Exp $
*
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Authors: Samuel Hocevar <sam@zoy.org>
*
*
...
@@ -52,18 +52,18 @@ static void UnprobeLibDVDCSS( void );
...
@@ -52,18 +52,18 @@ static void UnprobeLibDVDCSS( void );
* Build configuration tree.
* Build configuration tree.
*****************************************************************************/
*****************************************************************************/
MODULE_CONFIG_START
MODULE_CONFIG_START
ADD_WINDOW
(
"Configuration for DVD module"
)
ADD_COMMENT
(
"foobar !"
)
MODULE_CONFIG_STOP
MODULE_CONFIG_STOP
MODULE_INIT_START
MODULE_INIT_START
p_module
->
i_capabilities
=
MODULE_CAPABILITY_NULL
|
MODULE_CAPABILITY_INPUT
;
#ifdef GOD_DAMN_DMCA
#ifdef GOD_DAMN_DMCA
p_module
->
psz_longname
=
"DVD input module, uses libdvdcss if present"
;
SET_DESCRIPTION
(
"DVDRead input module, uses libdvdcss if present"
)
ADD_CAPABILITY
(
INPUT
,
70
)
#else
#else
p_module
->
psz_longname
=
"DVD input module, linked with libdvdcss"
;
SET_DESCRIPTION
(
"DVDRead input module, linked with libdvdcss"
)
ADD_CAPABILITY
(
INPUT
,
80
)
#endif
#endif
ADD_SHORTCUT
(
"dvdread"
)
MODULE_INIT_STOP
MODULE_INIT_STOP
MODULE_ACTIVATE_START
MODULE_ACTIVATE_START
...
...
plugins/dvdread/input_dvdread.c
View file @
36e88eb4
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
* It depends on: libdvdread for ifo files and block reading.
* It depends on: libdvdread for ifo files and block reading.
*****************************************************************************
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* Copyright (C) 2001 VideoLAN
* $Id: input_dvdread.c,v 1.1
2 2001/12/30 07:09:55 sam
Exp $
* $Id: input_dvdread.c,v 1.1
3 2001/12/30 22:10:26 stef
Exp $
*
*
* Author: Stphane Borel <stef@via.ecp.fr>
* Author: Stphane Borel <stef@via.ecp.fr>
*
*
...
@@ -85,6 +85,7 @@ static void DvdReadEnd ( struct input_thread_s * );
...
@@ -85,6 +85,7 @@ static void DvdReadEnd ( struct input_thread_s * );
static
void
DvdReadOpen
(
struct
input_thread_s
*
);
static
void
DvdReadOpen
(
struct
input_thread_s
*
);
static
void
DvdReadClose
(
struct
input_thread_s
*
);
static
void
DvdReadClose
(
struct
input_thread_s
*
);
static
int
DvdReadSetArea
(
struct
input_thread_s
*
,
struct
input_area_s
*
);
static
int
DvdReadSetArea
(
struct
input_thread_s
*
,
struct
input_area_s
*
);
static
int
DvdReadSetProgram
(
struct
input_thread_s
*
,
pgrm_descriptor_t
*
);
static
int
DvdReadRead
(
struct
input_thread_s
*
,
data_packet_t
**
);
static
int
DvdReadRead
(
struct
input_thread_s
*
,
data_packet_t
**
);
static
void
DvdReadSeek
(
struct
input_thread_s
*
,
off_t
);
static
void
DvdReadSeek
(
struct
input_thread_s
*
,
off_t
);
static
int
DvdReadRewind
(
struct
input_thread_s
*
);
static
int
DvdReadRewind
(
struct
input_thread_s
*
);
...
@@ -123,6 +124,7 @@ void _M( input_getfunctions )( function_list_t * p_function_list )
...
@@ -123,6 +124,7 @@ void _M( input_getfunctions )( function_list_t * p_function_list )
input
.
pf_init_bit_stream
=
InitBitstream
;
input
.
pf_init_bit_stream
=
InitBitstream
;
input
.
pf_read
=
DvdReadRead
;
input
.
pf_read
=
DvdReadRead
;
input
.
pf_set_area
=
DvdReadSetArea
;
input
.
pf_set_area
=
DvdReadSetArea
;
input
.
pf_set_program
=
DvdReadSetProgram
;
input
.
pf_demux
=
input_DemuxPS
;
input
.
pf_demux
=
input_DemuxPS
;
input
.
pf_new_packet
=
input_NewPacket
;
input
.
pf_new_packet
=
input_NewPacket
;
input
.
pf_new_pes
=
input_NewPES
;
input
.
pf_new_pes
=
input_NewPES
;
...
@@ -130,6 +132,7 @@ void _M( input_getfunctions )( function_list_t * p_function_list )
...
@@ -130,6 +132,7 @@ void _M( input_getfunctions )( function_list_t * p_function_list )
input
.
pf_delete_pes
=
input_DeletePES
;
input
.
pf_delete_pes
=
input_DeletePES
;
input
.
pf_rewind
=
DvdReadRewind
;
input
.
pf_rewind
=
DvdReadRewind
;
input
.
pf_seek
=
DvdReadSeek
;
input
.
pf_seek
=
DvdReadSeek
;
#undef input
#undef input
}
}
...
@@ -147,17 +150,12 @@ static int DvdReadProbe( probedata_t *p_data )
...
@@ -147,17 +150,12 @@ static int DvdReadProbe( probedata_t *p_data )
char
*
psz_name
=
p_input
->
p_source
;
char
*
psz_name
=
p_input
->
p_source
;
int
i_score
=
5
;
int
i_score
=
5
;
if
(
TestMethod
(
INPUT_METHOD_VAR
,
"dvdread"
)
)
{
return
(
999
);
}
if
(
(
strlen
(
psz_name
)
>
8
)
&&
!
strncasecmp
(
psz_name
,
"dvdread:"
,
8
)
)
if
(
(
strlen
(
psz_name
)
>
8
)
&&
!
strncasecmp
(
psz_name
,
"dvdread:"
,
8
)
)
{
{
/* If the user specified "dvdread:" then he probably wants
/* If the user specified "dvdread:" then he probably wants
* to use libdvdread */
* to use libdvdread */
i_score
=
100
;
i_score
=
100
;
psz_name
+=
4
;
psz_name
+=
8
;
}
}
return
(
i_score
);
return
(
i_score
);
...
@@ -351,6 +349,15 @@ static void DvdReadEnd( input_thread_t * p_input )
...
@@ -351,6 +349,15 @@ static void DvdReadEnd( input_thread_t * p_input )
input_BuffersEnd
(
p_input
->
p_method_data
);
input_BuffersEnd
(
p_input
->
p_method_data
);
}
}
/*****************************************************************************
* DvdReadSetProgram: Does nothing, a DVD is mono-program
*****************************************************************************/
static
int
DvdReadSetProgram
(
input_thread_t
*
p_input
,
pgrm_descriptor_t
*
p_program
)
{
return
0
;
}
#define p_pgc p_dvd->p_cur_pgc
#define p_pgc p_dvd->p_cur_pgc
/*****************************************************************************
/*****************************************************************************
...
@@ -508,23 +515,24 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
...
@@ -508,23 +515,24 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
}
}
free
(
p_input
->
stream
.
pp_selected_es
);
free
(
p_input
->
stream
.
pp_selected_es
);
input_DelProgram
(
p_input
,
p_input
->
stream
.
p
p_programs
[
0
]
);
input_DelProgram
(
p_input
,
p_input
->
stream
.
p
_selected_program
);
p_input
->
stream
.
pp_selected_es
=
NULL
;
p_input
->
stream
.
pp_selected_es
=
NULL
;
p_input
->
stream
.
i_selected_es_number
=
0
;
p_input
->
stream
.
i_selected_es_number
=
0
;
}
}
input_AddProgram
(
p_input
,
0
,
sizeof
(
stream_ps_data_t
)
);
input_AddProgram
(
p_input
,
0
,
sizeof
(
stream_ps_data_t
)
);
p_input
->
stream
.
p_selected_program
=
p_input
->
stream
.
pp_programs
[
0
];
/* No PSM to read in DVD mode, we already have all information */
/* No PSM to read in DVD mode, we already have all information */
p_input
->
stream
.
p
p_programs
[
0
]
->
b_is_ok
=
1
;
p_input
->
stream
.
p
_selected_program
->
b_is_ok
=
1
;
p_es
=
NULL
;
p_es
=
NULL
;
/* ES 0 -> video MPEG2 */
/* ES 0 -> video MPEG2 */
// IfoPrintVideo( p_dvd );
// IfoPrintVideo( p_dvd );
p_es
=
input_AddES
(
p_input
,
p_input
->
stream
.
p
p_programs
[
0
]
,
0xe0
,
0
);
p_es
=
input_AddES
(
p_input
,
p_input
->
stream
.
p
_selected_program
,
0xe0
,
0
);
p_es
->
i_stream_id
=
0xe0
;
p_es
->
i_stream_id
=
0xe0
;
p_es
->
i_type
=
MPEG2_VIDEO_ES
;
p_es
->
i_type
=
MPEG2_VIDEO_ES
;
p_es
->
i_cat
=
VIDEO_ES
;
p_es
->
i_cat
=
VIDEO_ES
;
...
@@ -555,7 +563,7 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
...
@@ -555,7 +563,7 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
case
0x00
:
/* AC3 */
case
0x00
:
/* AC3 */
i_id
=
(
(
0x80
+
i_position
)
<<
8
)
|
0xbd
;
i_id
=
(
(
0x80
+
i_position
)
<<
8
)
|
0xbd
;
p_es
=
input_AddES
(
p_input
,
p_es
=
input_AddES
(
p_input
,
p_input
->
stream
.
p
p_programs
[
0
]
,
i_id
,
0
);
p_input
->
stream
.
p
_selected_program
,
i_id
,
0
);
p_es
->
i_stream_id
=
0xbd
;
p_es
->
i_stream_id
=
0xbd
;
p_es
->
i_type
=
AC3_AUDIO_ES
;
p_es
->
i_type
=
AC3_AUDIO_ES
;
p_es
->
b_audio
=
1
;
p_es
->
b_audio
=
1
;
...
@@ -569,7 +577,7 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
...
@@ -569,7 +577,7 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
case
0x03
:
/* MPEG audio */
case
0x03
:
/* MPEG audio */
i_id
=
0xc0
+
i_position
;
i_id
=
0xc0
+
i_position
;
p_es
=
input_AddES
(
p_input
,
p_es
=
input_AddES
(
p_input
,
p_input
->
stream
.
p
p_programs
[
0
]
,
i_id
,
0
);
p_input
->
stream
.
p
_selected_program
,
i_id
,
0
);
p_es
->
i_stream_id
=
i_id
;
p_es
->
i_stream_id
=
i_id
;
p_es
->
i_type
=
MPEG2_AUDIO_ES
;
p_es
->
i_type
=
MPEG2_AUDIO_ES
;
p_es
->
b_audio
=
1
;
p_es
->
b_audio
=
1
;
...
@@ -583,7 +591,7 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
...
@@ -583,7 +591,7 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
i_id
=
(
(
0xa0
+
i_position
)
<<
8
)
|
0xbd
;
i_id
=
(
(
0xa0
+
i_position
)
<<
8
)
|
0xbd
;
p_es
=
input_AddES
(
p_input
,
p_es
=
input_AddES
(
p_input
,
p_input
->
stream
.
p
p_programs
[
0
]
,
i_id
,
0
);
p_input
->
stream
.
p
_selected_program
,
i_id
,
0
);
p_es
->
i_stream_id
=
i_id
;
p_es
->
i_stream_id
=
i_id
;
p_es
->
i_type
=
LPCM_AUDIO_ES
;
p_es
->
i_type
=
LPCM_AUDIO_ES
;
p_es
->
b_audio
=
1
;
p_es
->
b_audio
=
1
;
...
@@ -648,7 +656,7 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
...
@@ -648,7 +656,7 @@ static int DvdReadSetArea( input_thread_t * p_input, input_area_t * p_area )
i_id
=
(
(
0x20
+
i_position
)
<<
8
)
|
0xbd
;
i_id
=
(
(
0x20
+
i_position
)
<<
8
)
|
0xbd
;
p_es
=
input_AddES
(
p_input
,
p_es
=
input_AddES
(
p_input
,
p_input
->
stream
.
p
p_programs
[
0
]
,
i_id
,
0
);
p_input
->
stream
.
p
_selected_program
,
i_id
,
0
);
p_es
->
i_stream_id
=
0xbd
;
p_es
->
i_stream_id
=
0xbd
;
p_es
->
i_type
=
DVD_SPU_ES
;
p_es
->
i_type
=
DVD_SPU_ES
;
p_es
->
i_cat
=
SPU_ES
;
p_es
->
i_cat
=
SPU_ES
;
...
@@ -782,6 +790,7 @@ static int DvdReadRead( input_thread_t * p_input,
...
@@ -782,6 +790,7 @@ static int DvdReadRead( input_thread_t * p_input,
int
i_packet
;
int
i_packet
;
int
i_pos
;
int
i_pos
;
data_packet_t
*
p_data_p
;
data_packet_t
*
p_data_p
;
boolean_t
b_eot
=
0
;
p_dvd
=
(
thread_dvd_data_t
*
)
p_input
->
p_plugin_data
;
p_dvd
=
(
thread_dvd_data_t
*
)
p_input
->
p_plugin_data
;
...
@@ -807,8 +816,11 @@ static int DvdReadRead( input_thread_t * p_input,
...
@@ -807,8 +816,11 @@ static int DvdReadRead( input_thread_t * p_input,
return
-
1
;
return
-
1
;
}
}
/* basic check to be sure we don't have a empty title
* go to next title if so */
assert
(
p_data
[
41
]
==
0xbf
&&
p_data
[
1027
]
==
0xbf
);
assert
(
p_data
[
41
]
==
0xbf
&&
p_data
[
1027
]
==
0xbf
);
if
(
p_data
[
41
]
==
0xbf
&&
p_data
[
1027
]
==
0xbf
)
{
/*
/*
* Parse the contained dsi packet.
* Parse the contained dsi packet.
*/
*/
...
@@ -822,11 +834,17 @@ static int DvdReadRead( input_thread_t * p_input,
...
@@ -822,11 +834,17 @@ static int DvdReadRead( input_thread_t * p_input,
}
}
assert
(
p_dvd
->
i_pack_len
<
1024
);
assert
(
p_dvd
->
i_pack_len
<
1024
);
/*
Ugly kludge: we send the pack block to the input for it
/* FIXME:
Ugly kludge: we send the pack block to the input for it
* sometimes has a zero scr and restart the sync */
* sometimes has a zero scr and restart the sync */
//
p_dvd->i_cur_block ++;
//
p_dvd->i_cur_block ++;
p_dvd
->
i_pack_len
++
;
p_dvd
->
i_pack_len
++
;
}
else
{
b_eot
=
1
;
p_dvd
->
i_pack_len
=
0
;
return
1
;
}
}
}
/*
/*
...
@@ -900,6 +918,9 @@ static int DvdReadRead( input_thread_t * p_input,
...
@@ -900,6 +918,9 @@ static int DvdReadRead( input_thread_t * p_input,
(
*
pp_data
)
->
p_payload_end
=
(
*
pp_data
)
->
p_payload_end
=
(
*
pp_data
)
->
p_payload_start
+
i_packet_size
+
6
;
(
*
pp_data
)
->
p_payload_start
+
i_packet_size
+
6
;
// pp_packets[i_packet]->p_next = NULL;
// pp_packets[i_packet]->b_discard_payload = 0;
i_packet
++
;
i_packet
++
;
i_pos
+=
i_packet_size
+
6
;
i_pos
+=
i_packet_size
+
6
;
pp_data
=
&
(
*
pp_data
)
->
p_next
;
pp_data
=
&
(
*
pp_data
)
->
p_next
;
...
@@ -909,6 +930,13 @@ static int DvdReadRead( input_thread_t * p_input,
...
@@ -909,6 +930,13 @@ static int DvdReadRead( input_thread_t * p_input,
p_input
->
pf_delete_packet
(
p_input
->
p_method_data
,
p_data_p
);
p_input
->
pf_delete_packet
(
p_input
->
p_method_data
,
p_data_p
);
*
pp_data
=
NULL
;
*
pp_data
=
NULL
;
while
(
p_data_p
!=
NULL
)
{
data_packet_t
*
p_next
=
p_data_p
->
p_next
;
p_input
->
pf_delete_packet
(
p_input
->
p_method_data
,
p_data_p
);
p_data_p
=
p_next
;
}
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
p_input
->
stream
.
p_selected_area
->
i_tell
=
p_input
->
stream
.
p_selected_area
->
i_tell
=
...
@@ -923,6 +951,24 @@ static int DvdReadRead( input_thread_t * p_input,
...
@@ -923,6 +951,24 @@ static int DvdReadRead( input_thread_t * p_input,
p_dvd
->
b_eoc
=
0
;
p_dvd
->
b_eoc
=
0
;
}
}
if
(
p_input
->
stream
.
p_selected_area
->
i_tell
>=
p_input
->
stream
.
p_selected_area
->
i_size
||
b_eot
)
{
if
(
(
p_input
->
stream
.
p_selected_area
->
i_id
+
1
)
>=
p_input
->
stream
.
i_area_nb
)
{
/* EOF */
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
return
1
;
}
/* EOT */
intf_WarnMsg
(
4
,
"dvd info: new title"
);
DvdReadSetArea
(
p_input
,
p_input
->
stream
.
pp_areas
[
p_input
->
stream
.
p_selected_area
->
i_id
+
1
]
);
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
return
0
;
}
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
...
@@ -973,9 +1019,9 @@ static void DvdReadSeek( input_thread_t * p_input, off_t i_off )
...
@@ -973,9 +1019,9 @@ static void DvdReadSeek( input_thread_t * p_input, off_t i_off )
i_chapter
++
;
i_chapter
++
;
pgc_id
=
p_dvd
->
p_vts_file
->
vts_ptt_srpt
->
title
[
pgc_id
=
p_dvd
->
p_vts_file
->
vts_ptt_srpt
->
title
[
p_dvd
->
i_ttn
-
1
].
ptt
[
i_chapter
].
pgcn
;
p_dvd
->
i_ttn
-
1
].
ptt
[
i_chapter
-
1
].
pgcn
;
pgn
=
p_dvd
->
p_vts_file
->
vts_ptt_srpt
->
title
[
pgn
=
p_dvd
->
p_vts_file
->
vts_ptt_srpt
->
title
[
p_dvd
->
i_ttn
-
1
].
ptt
[
i_chapter
].
pgn
;
p_dvd
->
i_ttn
-
1
].
ptt
[
i_chapter
-
1
].
pgn
;
p_pgc
=
p_dvd
->
p_vts_file
->
vts_pgcit
->
pgci_srp
[
pgc_id
-
1
].
pgc
;
p_pgc
=
p_dvd
->
p_vts_file
->
vts_pgcit
->
pgci_srp
[
pgc_id
-
1
].
pgc
;
i_tmp
=
p_pgc
->
program_map
[
pgn
-
1
];
i_tmp
=
p_pgc
->
program_map
[
pgn
-
1
];
...
@@ -1150,9 +1196,9 @@ static void DvdReadFindCell( thread_dvd_data_t * p_dvd )
...
@@ -1150,9 +1196,9 @@ static void DvdReadFindCell( thread_dvd_data_t * p_dvd )
}
}
#undef cell
#undef cell
pgc_id
=
p_dvd
->
p_vts_file
->
vts_ptt_srpt
->
title
[
pgc_id
=
p_dvd
->
p_vts_file
->
vts_ptt_srpt
->
title
[
p_dvd
->
i_ttn
-
1
].
ptt
[
p_dvd
->
i_chapter
].
pgcn
;
p_dvd
->
i_ttn
-
1
].
ptt
[
p_dvd
->
i_chapter
-
1
].
pgcn
;
pgn
=
p_dvd
->
p_vts_file
->
vts_ptt_srpt
->
title
[
pgn
=
p_dvd
->
p_vts_file
->
vts_ptt_srpt
->
title
[
p_dvd
->
i_ttn
-
1
].
ptt
[
p_dvd
->
i_chapter
].
pgn
;
p_dvd
->
i_ttn
-
1
].
ptt
[
p_dvd
->
i_chapter
-
1
].
pgn
;
p_pgc
=
p_dvd
->
p_vts_file
->
vts_pgcit
->
pgci_srp
[
pgc_id
-
1
].
pgc
;
p_pgc
=
p_dvd
->
p_vts_file
->
vts_pgcit
->
pgci_srp
[
pgc_id
-
1
].
pgc
;
if
(
p_pgc
->
program_map
[
pgn
-
1
]
<=
p_dvd
->
i_cur_cell
)
if
(
p_pgc
->
program_map
[
pgn
-
1
]
<=
p_dvd
->
i_cur_cell
)
...
...
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