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
671f21a0
Commit
671f21a0
authored
Jun 03, 2004
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* directory: converted to access2.
parent
4d536223
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
152 additions
and
56 deletions
+152
-56
modules/access/directory.c
modules/access/directory.c
+151
-56
modules/demux/demux2.c
modules/demux/demux2.c
+1
-0
No files found.
modules/access/directory.c
View file @
671f21a0
...
@@ -56,24 +56,13 @@
...
@@ -56,24 +56,13 @@
#endif
#endif
/*****************************************************************************
/*****************************************************************************
* Constants and structures
* Module descriptor
*****************************************************************************/
#define MODE_EXPAND 0
#define MODE_COLLAPSE 1
#define MODE_NONE 2
/*****************************************************************************
* Local prototypes
*****************************************************************************/
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
);
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
ssize_t
Read
(
input_thread_t
*
,
byte_t
*
,
size_t
);
static
int
DemuxOpen
(
vlc_object_t
*
);
int
ReadDir
(
playlist_t
*
p_playlist
,
char
*
psz_name
,
int
i_mode
,
int
*
pi_pos
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
#define RECURSIVE_TEXT N_("Subdirectory behavior")
#define RECURSIVE_TEXT N_("Subdirectory behavior")
#define RECURSIVE_LONGTEXT N_( \
#define RECURSIVE_LONGTEXT N_( \
"Select whether subdirectories must be expanded.\n" \
"Select whether subdirectories must be expanded.\n" \
...
@@ -87,50 +76,67 @@ static char *psz_recursive_list_text[] = { N_("none"), N_("collapse"),
...
@@ -87,50 +76,67 @@ static char *psz_recursive_list_text[] = { N_("none"), N_("collapse"),
vlc_module_begin
();
vlc_module_begin
();
set_description
(
_
(
"Standard filesystem directory input"
)
);
set_description
(
_
(
"Standard filesystem directory input"
)
);
set_capability
(
"access"
,
55
);
set_capability
(
"access
2
"
,
55
);
add_shortcut
(
"directory"
);
add_shortcut
(
"directory"
);
add_shortcut
(
"dir"
);
add_shortcut
(
"dir"
);
add_string
(
"recursive"
,
"expand"
,
NULL
,
RECURSIVE_TEXT
,
add_string
(
"recursive"
,
"expand"
,
NULL
,
RECURSIVE_TEXT
,
RECURSIVE_LONGTEXT
,
VLC_FALSE
);
RECURSIVE_LONGTEXT
,
VLC_FALSE
);
change_string_list
(
psz_recursive_list
,
psz_recursive_list_text
,
0
);
change_string_list
(
psz_recursive_list
,
psz_recursive_list_text
,
0
);
set_callbacks
(
Open
,
Close
);
set_callbacks
(
Open
,
Close
);
add_submodule
();
set_description
(
_
(
"Directory EOF"
)
);
set_capability
(
"demux2"
,
0
);
add_shortcut
(
"directory"
);
set_callbacks
(
DemuxOpen
,
NULL
);
vlc_module_end
();
vlc_module_end
();
/*****************************************************************************
* Local prototypes, constants, structures
*****************************************************************************/
#define MODE_EXPAND 0
#define MODE_COLLAPSE 1
#define MODE_NONE 2
static
int
Read
(
access_t
*
,
uint8_t
*
,
int
);
static
int
ReadNull
(
access_t
*
,
uint8_t
*
,
int
);
static
int
Control
(
access_t
*
,
int
,
va_list
);
static
int
Demux
(
demux_t
*
p_demux
);
static
int
DemuxControl
(
demux_t
*
p_demux
,
int
i_query
,
va_list
args
);
static
int
ReadDir
(
playlist_t
*
,
char
*
psz_name
,
int
i_mode
,
int
*
pi_pos
);
/*****************************************************************************
/*****************************************************************************
* Open: open the directory
* Open: open the directory
*****************************************************************************/
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
p_this
)
static
int
Open
(
vlc_object_t
*
p_this
)
{
{
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_this
;
access_t
*
p_access
=
(
access_t
*
)
p_this
;
#ifdef HAVE_SYS_STAT_H
struct
stat
stat_info
;
#endif
/* Initialize access plug-in structures. */
if
(
p_input
->
i_mtu
==
0
)
{
/* Improve speed. */
p_input
->
i_bufsize
=
INPUT_DEFAULT_BUFSIZE
;
}
p_input
->
pf_read
=
Read
;
p_input
->
pf_set_program
=
NULL
;
p_input
->
pf_set_area
=
NULL
;
p_input
->
pf_seek
=
NULL
;
#ifdef HAVE_SYS_STAT_H
#ifdef HAVE_SYS_STAT_H
if
(
(
stat
(
p_input
->
psz_name
,
&
stat_info
)
==
-
1
)
||
struct
stat
stat_info
;
if
(
(
stat
(
p_access
->
psz_path
,
&
stat_info
)
==
-
1
)
||
!
S_ISDIR
(
stat_info
.
st_mode
)
)
!
S_ISDIR
(
stat_info
.
st_mode
)
)
#else
#else
if
(
!
p_input
->
psz_access
||
strcmp
(
p_input
->
psz_access
,
"dir"
)
)
if
(
strcmp
(
p_access
->
psz_access
,
"dir"
)
&&
strcmp
(
p_access
->
psz_access
,
"directory"
)
)
#endif
#endif
{
{
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
p_access
->
pf_read
=
Read
;
p_access
->
pf_block
=
NULL
;
p_access
->
pf_seek
=
NULL
;
p_access
->
pf_control
=
Control
;
/* Force a demux */
/* Force a demux */
p_
input
->
psz_demux
=
"dummy"
;
p_
access
->
psz_demux
=
strdup
(
"directory"
)
;
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
...
@@ -140,32 +146,40 @@ static int Open( vlc_object_t *p_this )
...
@@ -140,32 +146,40 @@ static int Open( vlc_object_t *p_this )
*****************************************************************************/
*****************************************************************************/
static
void
Close
(
vlc_object_t
*
p_this
)
static
void
Close
(
vlc_object_t
*
p_this
)
{
{
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_this
;
msg_Info
(
p_input
,
"closing `%s/%s://%s'"
,
}
p_input
->
psz_access
,
p_input
->
psz_demux
,
p_input
->
psz_name
);
/*****************************************************************************
* ReadNull: read the directory
*****************************************************************************/
static
int
ReadNull
(
access_t
*
p_access
,
uint8_t
*
p_buffer
,
int
i_len
)
{
/* Return fake data */
memset
(
p_buffer
,
0
,
i_len
);
return
i_len
;
}
}
/*****************************************************************************
/*****************************************************************************
* Read: read the directory
* Read: read the directory
*****************************************************************************/
*****************************************************************************/
static
ssize_t
Read
(
input_thread_t
*
p_input
,
byte_t
*
p_buffer
,
size_
t
i_len
)
static
int
Read
(
access_t
*
p_access
,
uint8_t
*
p_buffer
,
in
t
i_len
)
{
{
char
*
psz_name
=
0
;
char
*
psz_name
=
0
;
char
*
psz_mode
=
0
;
vlc_value_t
val
;
int
i_mode
,
i_pos
;
int
i_mode
,
i_pos
;
playlist_t
*
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
playlist_t
*
p_playlist
=
p_input
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
(
playlist_t
*
)
vlc_object_find
(
p_access
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
!
p_playlist
)
if
(
!
p_playlist
)
{
{
msg_Err
(
p_
input
,
"can't find playlist"
);
msg_Err
(
p_
access
,
"can't find playlist"
);
goto
end
;
goto
end
;
}
}
/* Remove the ending '/' char */
/* Remove the ending '/' char */
psz_name
=
strdup
(
p_
input
->
psz_name
);
psz_name
=
strdup
(
p_
access
->
psz_path
);
if
(
psz_name
==
NULL
)
if
(
psz_name
==
NULL
)
goto
end
;
goto
end
;
...
@@ -174,14 +188,15 @@ static ssize_t Read( input_thread_t * p_input, byte_t * p_buffer, size_t i_len)
...
@@ -174,14 +188,15 @@ static ssize_t Read( input_thread_t * p_input, byte_t * p_buffer, size_t i_len)
{
{
psz_name
[
strlen
(
psz_name
)
-
1
]
=
'\0'
;
psz_name
[
strlen
(
psz_name
)
-
1
]
=
'\0'
;
}
}
/* Initialize structure */
/* Initialize structure */
psz_mode
=
config_GetPsz
(
p_input
,
"recursive"
);
var_Create
(
p_access
,
"recursive"
,
VLC_VAR_STRING
|
VLC_VAR_DOINHERIT
);
if
(
!
psz_mode
||
!
strncmp
(
psz_mode
,
"none"
,
4
)
)
var_Get
(
p_access
,
"recursive"
,
&
val
);
if
(
*
val
.
psz_string
==
'\0'
||
!
strncmp
(
val
.
psz_string
,
"none"
,
4
)
)
{
{
i_mode
=
MODE_NONE
;
i_mode
=
MODE_NONE
;
}
}
else
if
(
!
strncmp
(
psz_mode
,
"collapse"
,
8
)
)
else
if
(
!
strncmp
(
val
.
psz_string
,
"collapse"
,
8
)
)
{
{
i_mode
=
MODE_COLLAPSE
;
i_mode
=
MODE_COLLAPSE
;
}
}
...
@@ -189,13 +204,14 @@ static ssize_t Read( input_thread_t * p_input, byte_t * p_buffer, size_t i_len)
...
@@ -189,13 +204,14 @@ static ssize_t Read( input_thread_t * p_input, byte_t * p_buffer, size_t i_len)
{
{
i_mode
=
MODE_EXPAND
;
i_mode
=
MODE_EXPAND
;
}
}
free
(
val
.
psz_string
);
/* Make sure we are deleted when we are done */
/* Make sure we are deleted when we are done */
p_playlist
->
pp_items
[
p_playlist
->
i_index
]
->
b_autodeletion
=
VLC_TRUE
;
p_playlist
->
pp_items
[
p_playlist
->
i_index
]
->
b_autodeletion
=
VLC_TRUE
;
/* The playlist position we will use for the add */
/* The playlist position we will use for the add */
i_pos
=
p_playlist
->
i_index
+
1
;
i_pos
=
p_playlist
->
i_index
+
1
;
msg_Dbg
(
p_
input
,
"opening directory `%s'"
,
psz_name
);
msg_Dbg
(
p_
access
,
"opening directory `%s'"
,
psz_name
);
if
(
ReadDir
(
p_playlist
,
psz_name
,
i_mode
,
&
i_pos
)
!=
VLC_SUCCESS
)
if
(
ReadDir
(
p_playlist
,
psz_name
,
i_mode
,
&
i_pos
)
!=
VLC_SUCCESS
)
{
{
goto
end
;
goto
end
;
...
@@ -203,18 +219,95 @@ static ssize_t Read( input_thread_t * p_input, byte_t * p_buffer, size_t i_len)
...
@@ -203,18 +219,95 @@ static ssize_t Read( input_thread_t * p_input, byte_t * p_buffer, size_t i_len)
end:
end:
if
(
psz_name
)
free
(
psz_name
);
if
(
psz_name
)
free
(
psz_name
);
if
(
psz_mode
)
free
(
psz_mode
);
vlc_object_release
(
p_playlist
);
vlc_object_release
(
p_playlist
);
p_input
->
b_eof
=
1
;
return
0
;
/* Return fake data forever */
p_access
->
pf_read
=
ReadNull
;
return
ReadNull
(
p_access
,
p_buffer
,
i_len
);
}
/*****************************************************************************
* DemuxOpen:
*****************************************************************************/
static
int
Control
(
access_t
*
p_access
,
int
i_query
,
va_list
args
)
{
vlc_bool_t
*
pb_bool
;
int
*
pi_int
;
int64_t
*
pi_64
;
switch
(
i_query
)
{
/* */
case
ACCESS_CAN_SEEK
:
case
ACCESS_CAN_FASTSEEK
:
case
ACCESS_CAN_PAUSE
:
case
ACCESS_CAN_CONTROL_PACE
:
pb_bool
=
(
vlc_bool_t
*
)
va_arg
(
args
,
vlc_bool_t
*
);
*
pb_bool
=
VLC_FALSE
;
/* FIXME */
break
;
/* */
case
ACCESS_GET_MTU
:
pi_int
=
(
int
*
)
va_arg
(
args
,
int
*
);
*
pi_int
=
0
;
break
;
case
ACCESS_GET_PTS_DELAY
:
pi_64
=
(
int64_t
*
)
va_arg
(
args
,
int64_t
*
);
*
pi_64
=
DEFAULT_PTS_DELAY
*
1000
;
break
;
/* */
case
ACCESS_SET_PAUSE_STATE
:
case
ACCESS_GET_TITLE_INFO
:
case
ACCESS_SET_TITLE
:
case
ACCESS_SET_SEEKPOINT
:
return
VLC_EGENERIC
;
default:
msg_Err
(
p_access
,
"unimplemented query in control"
);
return
VLC_EGENERIC
;
}
return
VLC_SUCCESS
;
}
/*****************************************************************************
* DemuxOpen:
*****************************************************************************/
static
int
DemuxOpen
(
vlc_object_t
*
p_this
)
{
demux_t
*
p_demux
=
(
demux_t
*
)
p_this
;
if
(
strcmp
(
p_demux
->
psz_demux
,
"directory"
)
)
return
VLC_EGENERIC
;
p_demux
->
pf_demux
=
Demux
;
p_demux
->
pf_control
=
DemuxControl
;
return
VLC_SUCCESS
;
}
}
/* Local functions */
/*****************************************************************************
* Demux: EOF
*****************************************************************************/
static
int
Demux
(
demux_t
*
p_demux
)
{
return
0
;
}
/*****************************************************************************
* DemuxControl:
*****************************************************************************/
static
int
DemuxControl
(
demux_t
*
p_demux
,
int
i_query
,
va_list
args
)
{
return
demux2_vaControlHelper
(
p_demux
->
s
,
0
,
0
,
0
,
1
,
i_query
,
args
);
}
/*****************************************************************************
/*****************************************************************************
* ReadDir: read a directory and add its content to the list
* ReadDir: read a directory and add its content to the list
*****************************************************************************/
*****************************************************************************/
int
ReadDir
(
playlist_t
*
p_playlist
,
char
*
psz_name
,
int
i_mode
,
int
*
pi_position
)
static
int
ReadDir
(
playlist_t
*
p_playlist
,
char
*
psz_name
,
int
i_mode
,
int
*
pi_position
)
{
{
DIR
*
p_current_dir
;
DIR
*
p_current_dir
;
struct
dirent
*
p_dir_content
;
struct
dirent
*
p_dir_content
;
...
@@ -288,3 +381,5 @@ int ReadDir( playlist_t *p_playlist, char *psz_name , int i_mode, int *pi_positi
...
@@ -288,3 +381,5 @@ int ReadDir( playlist_t *p_playlist, char *psz_name , int i_mode, int *pi_positi
closedir
(
p_current_dir
);
closedir
(
p_current_dir
);
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
modules/demux/demux2.c
View file @
671f21a0
...
@@ -68,6 +68,7 @@ vlc_module_begin();
...
@@ -68,6 +68,7 @@ vlc_module_begin();
add_shortcut
(
"h264"
);
add_shortcut
(
"h264"
);
add_shortcut
(
"avi"
);
add_shortcut
(
"avi"
);
add_shortcut
(
"mjpeg"
);
add_shortcut
(
"mjpeg"
);
add_shortcut
(
"directory"
);
vlc_module_end
();
vlc_module_end
();
/*****************************************************************************
/*****************************************************************************
...
...
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