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
453d866a
Commit
453d866a
authored
Feb 24, 2003
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* stream_output.c : fixed compilation.
* mux/* implemented pf_mux_capacity.
parent
3755de85
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
125 additions
and
17 deletions
+125
-17
modules/mux/avi.c
modules/mux/avi.c
+14
-2
modules/mux/dummy.c
modules/mux/dummy.c
+14
-2
modules/mux/mpeg/ps.c
modules/mux/mpeg/ps.c
+14
-2
modules/mux/mpeg/ts.c
modules/mux/mpeg/ts.c
+14
-2
src/stream_output/stream_output.c
src/stream_output/stream_output.c
+69
-9
No files found.
modules/mux/avi.c
View file @
453d866a
...
...
@@ -2,7 +2,7 @@
* avi.c
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* $Id: avi.c,v 1.
6 2003/02/24 10:45:55
fenrir Exp $
* $Id: avi.c,v 1.
7 2003/02/24 12:34:29
fenrir Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
...
...
@@ -65,6 +65,7 @@
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
int
Capability
(
int
,
void
*
,
void
*
);
static
int
AddStream
(
sout_instance_t
*
,
sout_input_t
*
);
static
int
DelStream
(
sout_instance_t
*
,
sout_input_t
*
);
static
int
Mux
(
sout_instance_t
*
);
...
...
@@ -170,7 +171,7 @@ static int Open( vlc_object_t *p_this )
msg_Info
(
p_sout
,
"Open"
);
p_sout
->
pf_mux_capacity
=
NULL
;
p_sout
->
pf_mux_capacity
=
Capability
;
p_sout
->
pf_mux_addstream
=
AddStream
;
p_sout
->
pf_mux_delstream
=
DelStream
;
p_sout
->
pf_mux
=
Mux
;
...
...
@@ -237,6 +238,17 @@ static void Close( vlc_object_t * p_this )
sout_AccessOutWrite
(
p_sout
->
p_access
,
p_hdr
);
}
static
int
Capability
(
int
i_query
,
void
*
p_args
,
void
*
p_answer
)
{
switch
(
i_query
)
{
case
SOUT_MUX_CAP_GET_ADD_STREAM_ANY_TIME
:
*
(
vlc_bool_t
*
)
p_answer
=
VLC_TRUE
;
return
(
SOUT_MUX_CAP_ERR_OK
);
default:
return
(
SOUT_MUX_CAP_ERR_UNIMPLEMENTED
);
}
}
static
int
AddStream
(
sout_instance_t
*
p_sout
,
sout_input_t
*
p_input
)
{
...
...
modules/mux/dummy.c
View file @
453d866a
...
...
@@ -2,7 +2,7 @@
* dummy.c
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* $Id: dummy.c,v 1.
3 2003/02/24 10:45:55
fenrir Exp $
* $Id: dummy.c,v 1.
4 2003/02/24 12:34:29
fenrir Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org>
...
...
@@ -50,6 +50,7 @@
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
int
Capability
(
int
,
void
*
,
void
*
);
static
int
AddStream
(
sout_instance_t
*
,
sout_input_t
*
);
static
int
DelStream
(
sout_instance_t
*
,
sout_input_t
*
);
static
int
Mux
(
sout_instance_t
*
);
...
...
@@ -73,7 +74,7 @@ static int Open( vlc_object_t *p_this )
msg_Info
(
p_sout
,
"Open"
);
p_sout
->
pf_mux_capacity
=
NULL
;
p_sout
->
pf_mux_capacity
=
Capability
;
p_sout
->
pf_mux_addstream
=
AddStream
;
p_sout
->
pf_mux_delstream
=
DelStream
;
p_sout
->
pf_mux
=
Mux
;
...
...
@@ -91,6 +92,17 @@ static void Close( vlc_object_t * p_this )
msg_Info
(
p_sout
,
"Close"
);
}
static
int
Capability
(
int
i_query
,
void
*
p_args
,
void
*
p_answer
)
{
switch
(
i_query
)
{
case
SOUT_MUX_CAP_GET_ADD_STREAM_ANY_TIME
:
*
(
vlc_bool_t
*
)
p_answer
=
VLC_TRUE
;
return
(
SOUT_MUX_CAP_ERR_OK
);
default:
return
(
SOUT_MUX_CAP_ERR_UNIMPLEMENTED
);
}
}
static
int
AddStream
(
sout_instance_t
*
p_sout
,
sout_input_t
*
p_input
)
{
...
...
modules/mux/mpeg/ps.c
View file @
453d866a
...
...
@@ -2,7 +2,7 @@
* ps.c
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* $Id: ps.c,v 1.
7 2003/02/24 10:45:55
fenrir Exp $
* $Id: ps.c,v 1.
8 2003/02/24 12:34:29
fenrir Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org>
...
...
@@ -53,6 +53,7 @@
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
int
Capability
(
int
,
void
*
,
void
*
);
static
int
AddStream
(
sout_instance_t
*
,
sout_input_t
*
);
static
int
DelStream
(
sout_instance_t
*
,
sout_input_t
*
);
static
int
Mux
(
sout_instance_t
*
);
...
...
@@ -116,7 +117,7 @@ static int Open( vlc_object_t *p_this )
p_mux
=
malloc
(
sizeof
(
sout_mux_t
)
);
p_sout
->
pf_mux_capacity
=
NULL
;
p_sout
->
pf_mux_capacity
=
Capability
;
p_sout
->
pf_mux_addstream
=
AddStream
;
p_sout
->
pf_mux_delstream
=
DelStream
;
p_sout
->
pf_mux
=
Mux
;
...
...
@@ -156,6 +157,17 @@ static void Close( vlc_object_t * p_this )
p_sout
->
p_mux_data
=
NULL
;
}
static
int
Capability
(
int
i_query
,
void
*
p_args
,
void
*
p_answer
)
{
switch
(
i_query
)
{
case
SOUT_MUX_CAP_GET_ADD_STREAM_ANY_TIME
:
*
(
vlc_bool_t
*
)
p_answer
=
VLC_TRUE
;
return
(
SOUT_MUX_CAP_ERR_OK
);
default:
return
(
SOUT_MUX_CAP_ERR_UNIMPLEMENTED
);
}
}
static
int
AddStream
(
sout_instance_t
*
p_sout
,
sout_input_t
*
p_input
)
{
...
...
modules/mux/mpeg/ts.c
View file @
453d866a
...
...
@@ -2,7 +2,7 @@
* ts.c
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* $Id: ts.c,v 1.1
0 2003/02/24 10:45:55
fenrir Exp $
* $Id: ts.c,v 1.1
1 2003/02/24 12:34:29
fenrir Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org>
...
...
@@ -115,6 +115,7 @@ typedef struct sout_mux_s
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
int
Capability
(
int
,
void
*
,
void
*
);
static
int
AddStream
(
sout_instance_t
*
,
sout_input_t
*
);
static
int
DelStream
(
sout_instance_t
*
,
sout_input_t
*
);
static
int
Mux
(
sout_instance_t
*
);
...
...
@@ -158,7 +159,7 @@ static int Open( vlc_object_t *p_this )
p_mux
=
malloc
(
sizeof
(
sout_mux_t
)
);
p_sout
->
pf_mux_capacity
=
NULL
;
p_sout
->
pf_mux_capacity
=
Capability
;
p_sout
->
pf_mux_addstream
=
AddStream
;
p_sout
->
pf_mux_delstream
=
DelStream
;
p_sout
->
pf_mux
=
Mux
;
...
...
@@ -205,6 +206,17 @@ static void Close( vlc_object_t * p_this )
p_sout
->
p_mux_data
=
NULL
;
}
static
int
Capability
(
int
i_query
,
void
*
p_args
,
void
*
p_answer
)
{
switch
(
i_query
)
{
case
SOUT_MUX_CAP_GET_ADD_STREAM_ANY_TIME
:
*
(
vlc_bool_t
*
)
p_answer
=
VLC_TRUE
;
return
(
SOUT_MUX_CAP_ERR_OK
);
default:
return
(
SOUT_MUX_CAP_ERR_UNIMPLEMENTED
);
}
}
static
int
AddStream
(
sout_instance_t
*
p_sout
,
sout_input_t
*
p_input
)
{
...
...
src/stream_output/stream_output.c
View file @
453d866a
...
...
@@ -2,7 +2,7 @@
* stream_output.c : stream output module
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: stream_output.c,v 1.1
3 2003/02/16 14:10:44
fenrir Exp $
* $Id: stream_output.c,v 1.1
4 2003/02/24 12:34:29
fenrir Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
...
...
@@ -39,6 +39,18 @@
*****************************************************************************/
static
int
InitInstance
(
sout_instance_t
*
);
struct
sout_instance_sys_t
{
/* if muxer doesn't support adding stream at any time then we first wait
* for stream then we refuse all stream and start muxing */
vlc_bool_t
b_add_stream_any_time
;
vlc_bool_t
b_waiting_stream
;
/* we wait one second after first stream added */
mtime_t
i_add_stream_start
;
};
/*****************************************************************************
* sout_NewInstance: creates a new stream output instance
*****************************************************************************/
...
...
@@ -86,6 +98,11 @@ static int InitInstance( sout_instance_t * p_sout )
p_sout
->
i_nb_inputs
=
0
;
p_sout
->
pp_inputs
=
NULL
;
vlc_mutex_init
(
p_sout
,
&
p_sout
->
lock
);
p_sout
->
p_sys
=
malloc
(
sizeof
(
sout_instance_sys_t
)
);
/* fixed after opening muxer */
p_sout
->
p_sys
->
b_add_stream_any_time
=
VLC_FALSE
;
p_sout
->
p_sys
->
b_waiting_stream
=
VLC_TRUE
;
p_sout
->
p_sys
->
i_add_stream_start
=
-
1
;
/* Skip the plug-in names */
while
(
*
psz_parser
&&
*
psz_parser
!=
':'
)
...
...
@@ -182,10 +199,30 @@ static int InitInstance( sout_instance_t * p_sout )
msg_Err
(
p_sout
,
"no suitable mux module for `%s/%s://%s'"
,
p_sout
->
psz_access
,
p_sout
->
psz_mux
,
p_sout
->
psz_name
);
sout_AccessDelete
(
p_sout
->
p_access
);
sout_Access
Out
Delete
(
p_sout
->
p_access
);
return
-
1
;
}
if
(
p_sout
->
pf_mux_capacity
)
{
int
b_answer
;
if
(
p_sout
->
pf_mux_capacity
(
p_sout
,
SOUT_MUX_CAP_GET_ADD_STREAM_ANY_TIME
,
NULL
,
(
void
*
)
&
b_answer
)
!=
SOUT_MUX_CAP_ERR_OK
)
{
b_answer
=
VLC_FALSE
;
}
if
(
b_answer
)
{
msg_Dbg
(
p_sout
,
"muxer support adding stream at any time"
);
p_sout
->
p_sys
->
b_add_stream_any_time
=
VLC_TRUE
;
p_sout
->
p_sys
->
b_waiting_stream
=
VLC_FALSE
;
}
else
{
p_sout
->
p_sys
->
b_add_stream_any_time
=
VLC_FALSE
;
p_sout
->
p_sys
->
b_waiting_stream
=
VLC_TRUE
;
}
}
p_sout
->
i_nb_inputs
=
0
;
p_sout
->
pp_inputs
=
NULL
;
...
...
@@ -206,7 +243,7 @@ void sout_DeleteInstance( sout_instance_t * p_sout )
}
if
(
p_sout
->
p_access
)
{
sout_AccessDelete
(
p_sout
->
p_access
);
sout_Access
Out
Delete
(
p_sout
->
p_access
);
}
vlc_mutex_destroy
(
&
p_sout
->
lock
);
...
...
@@ -251,7 +288,7 @@ sout_access_out_t *sout_AccessOutNew( sout_instance_t *p_sout,
/*****************************************************************************
* sout_AccessDelete: delete an access out
*****************************************************************************/
void
sout_AccessDelete
(
sout_access_out_t
*
p_access
)
void
sout_Access
Out
Delete
(
sout_access_out_t
*
p_access
)
{
if
(
p_access
->
p_module
)
{
...
...
@@ -266,7 +303,7 @@ void sout_AccessDelete( sout_access_out_t *p_access )
/*****************************************************************************
* sout_AccessSeek:
*****************************************************************************/
int
sout_AccessSeek
(
sout_access_out_t
*
p_access
,
off_t
i_pos
)
int
sout_Access
Out
Seek
(
sout_access_out_t
*
p_access
,
off_t
i_pos
)
{
return
(
p_access
->
pf_seek
(
p_access
,
i_pos
)
);
}
...
...
@@ -274,7 +311,7 @@ int sout_AccessSeek( sout_access_out_t *p_access, off_t i_pos )
/*****************************************************************************
* sout_AccessWrite:
*****************************************************************************/
int
sout_AccessWrite
(
sout_access_out_t
*
p_access
,
sout_buffer_t
*
p_buffer
)
int
sout_Access
Out
Write
(
sout_access_out_t
*
p_access
,
sout_buffer_t
*
p_buffer
)
{
return
(
p_access
->
pf_write
(
p_access
,
p_buffer
)
);
}
...
...
@@ -292,7 +329,7 @@ sout_input_t *__sout_InputNew( vlc_object_t *p_this,
int
i_try
;
/* search an stream output */
for
(
i_try
=
0
;
i_try
<
200
;
i_try
++
)
for
(
i_try
=
0
;
i_try
<
12
;
i_try
++
)
{
p_sout
=
vlc_object_find
(
p_this
,
VLC_OBJECT_SOUT
,
FIND_ANYWHERE
);
if
(
!
p_sout
)
...
...
@@ -311,8 +348,18 @@ sout_input_t *__sout_InputNew( vlc_object_t *p_this,
msg_Err
(
p_this
,
"cannot find any stream ouput"
);
return
(
NULL
);
}
if
(
!
p_sout
->
p_sys
->
b_add_stream_any_time
&&
!
p_sout
->
p_sys
->
b_waiting_stream
)
{
msg_Err
(
p_sout
,
"cannot add a new stream (unsuported while muxing for this format)"
);
return
(
NULL
);
}
msg_Dbg
(
p_sout
,
"adding a new input"
);
if
(
p_sout
->
p_sys
->
i_add_stream_start
<
0
)
{
/* we wait for one second */
p_sout
->
p_sys
->
i_add_stream_start
=
mdate
();
}
/* create a new sout input */
p_input
=
malloc
(
sizeof
(
sout_input_t
)
);
...
...
@@ -421,6 +468,7 @@ int sout_InputDelete( sout_input_t *p_input )
int
sout_InputSendBuffer
(
sout_input_t
*
p_input
,
sout_buffer_t
*
p_buffer
)
{
sout_instance_sys_t
*
p_sys
=
p_input
->
p_sout
->
p_sys
;
/* msg_Dbg( p_input->p_sout,
"send buffer, size:%d", p_buffer->i_size ); */
...
...
@@ -428,10 +476,22 @@ int sout_InputSendBuffer( sout_input_t *p_input, sout_buffer_t *p_buffer )
{
sout_FifoPut
(
p_input
->
p_fifo
,
p_buffer
);
if
(
p_sys
->
b_waiting_stream
)
{
if
(
p_sys
->
i_add_stream_start
>
0
&&
p_sys
->
i_add_stream_start
+
(
mtime_t
)
1000000
<
mdate
()
)
{
/* more than 1 second, start muxing */
p_sys
->
b_waiting_stream
=
VLC_FALSE
;
}
else
{
return
(
0
);
}
}
vlc_mutex_lock
(
&
p_input
->
p_sout
->
lock
);
p_input
->
p_sout
->
pf_mux
(
p_input
->
p_sout
);
vlc_mutex_unlock
(
&
p_input
->
p_sout
->
lock
);
}
else
{
...
...
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