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
c570d9bc
Commit
c570d9bc
authored
Dec 21, 2000
by
Christophe Massiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Removed all arbitrary limits on the number of elementary streams.
parent
cc50abf7
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
71 additions
and
100 deletions
+71
-100
include/config.h.in
include/config.h.in
+0
-6
include/input_ext-intf.h
include/input_ext-intf.h
+5
-4
src/input/input.c
src/input/input.c
+6
-13
src/input/input_programs.c
src/input/input_programs.c
+46
-67
src/input/mpeg_system.c
src/input/mpeg_system.c
+14
-10
No files found.
include/config.h.in
View file @
c570d9bc
...
...
@@ -168,12 +168,6 @@
* interface, and is in fact an interface limitation */
#define INPUT_MAX_THREADS 10
/* Maximum number of ES definitions in a TS stream */
#define INPUT_MAX_ES 42
/* Maximum number of selected ES in an input thread */
#define INPUT_MAX_SELECTED_ES 42
/* Maximum size of a data packet (128 kB) */
#define INPUT_MAX_PACKET_SIZE 131072
...
...
include/input_ext-intf.h
View file @
c570d9bc
...
...
@@ -4,7 +4,7 @@
* control the pace of reading.
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-intf.h,v 1.
5 2000/12/20 17:49:40
massiot Exp $
* $Id: input_ext-intf.h,v 1.
6 2000/12/21 13:54:15
massiot Exp $
*
* Authors:
*
...
...
@@ -210,11 +210,12 @@ typedef struct input_thread_s
/* General stream description */
stream_descriptor_t
stream
;
/* PAT tables */
es_descriptor_t
p_es
[
INPUT_MAX_ES
];
/* carried elementary streams */
es_descriptor_t
**
pp_es
;
/* carried elementary streams */
int
i_es_number
;
/* List of streams to demux */
es_descriptor_t
*
pp_selected_es
[
INPUT_MAX_SELECTED_ES
];
es_descriptor_t
**
pp_selected_es
;
int
i_selected_es_number
;
/* For auto-launch of decoders */
struct
aout_thread_s
*
p_default_aout
;
...
...
src/input/input.c
View file @
c570d9bc
...
...
@@ -4,7 +4,7 @@
* decoders.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: input.c,v 1.6
0 2000/12/20 16:04:31
massiot Exp $
* $Id: input.c,v 1.6
1 2000/12/21 13:54:15
massiot Exp $
*
* Authors:
*
...
...
@@ -75,7 +75,6 @@ input_thread_t *input_CreateThread ( input_config_t * p_config, int *pi_status )
{
input_thread_t
*
p_input
;
/* thread descriptor */
int
i_status
;
/* thread status */
int
i
;
/* Allocate descriptor */
intf_DbgMsg
(
"
\n
"
);
...
...
@@ -96,14 +95,10 @@ input_thread_t *input_CreateThread ( input_config_t * p_config, int *pi_status )
p_input
->
p_config
=
p_config
;
/* Initialize stream description */
for
(
i
=
0
;
i
<
INPUT_MAX_SELECTED_ES
;
i
++
)
{
p_input
->
pp_selected_es
[
i
]
=
NULL
;
}
for
(
i
=
0
;
i
<
INPUT_MAX_ES
;
i
++
)
{
p_input
->
p_es
[
i
].
i_id
=
EMPTY_ID
;
}
p_input
->
pp_es
=
NULL
;
p_input
->
pp_selected_es
=
NULL
;
p_input
->
i_es_number
=
0
;
p_input
->
i_selected_es_number
=
0
;
p_input
->
stream
.
i_pgrm_number
=
0
;
/* Initialize stream control properties. */
...
...
@@ -318,9 +313,7 @@ static void EndThread( input_thread_t * p_input )
#endif
/* Destroy all decoder threads */
for
(
i_es_loop
=
0
;
(
i_es_loop
<
INPUT_MAX_ES
)
&&
(
p_input
->
pp_selected_es
[
i_es_loop
]
!=
NULL
)
;
for
(
i_es_loop
=
0
;
i_es_loop
<
p_input
->
i_selected_es_number
;
i_es_loop
++
)
{
p_input
->
pp_selected_es
[
i_es_loop
]
->
p_decoder_fifo
->
b_die
=
1
;
...
...
src/input/input_programs.c
View file @
c570d9bc
/*****************************************************************************
* input_programs.c: es_descriptor_t, pgrm_descriptor_t management
* FIXME : check the return value of realloc() and malloc() !
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: input_programs.c,v 1.1
0 2000/12/21 13:25:51
massiot Exp $
* $Id: input_programs.c,v 1.1
1 2000/12/21 13:54:15
massiot Exp $
*
* Authors:
*
...
...
@@ -184,27 +185,16 @@ es_descriptor_t * input_AddES( input_thread_t * p_input,
pgrm_descriptor_t
*
p_pgrm
,
u16
i_es_id
,
size_t
i_data_len
)
{
int
i_index
;
es_descriptor_t
*
p_es
=
NULL
;
es_descriptor_t
*
p_es
;
intf_DbgMsg
(
"Adding description for ES %d"
,
i_es_id
);
/* Find an empty slot to store the description of that es */
for
(
i_index
=
0
;
i_index
<
INPUT_MAX_ES
&&
p_input
->
p_es
[
i_index
].
i_id
!=
EMPTY_ID
;
i_index
++
);
if
(
i_index
>=
INPUT_MAX_ES
)
{
/* No slot is empty */
intf_ErrMsg
(
"Stream carries too many ES for our decoder"
);
}
else
{
/* Reserve the slot for that ES */
p_es
=
&
p_input
->
p_es
[
i_index
];
p_es
=
(
es_descriptor_t
*
)
malloc
(
sizeof
(
es_descriptor_t
)
);
p_input
->
i_es_number
++
;
p_input
->
pp_es
=
realloc
(
p_input
->
pp_es
,
p_input
->
i_es_number
*
sizeof
(
es_descriptor_t
*
)
);
p_input
->
pp_es
[
p_input
->
i_es_number
-
1
]
=
p_es
;
p_es
->
i_id
=
i_es_id
;
intf_DbgMsg
(
"Slot %d in p_es table assigned to ES %d"
,
i_index
,
i_es_id
);
/* Init its values */
p_es
->
b_discontinuity
=
0
;
...
...
@@ -231,7 +221,6 @@ es_descriptor_t * input_AddES( input_thread_t * p_input,
{
p_es
->
p_pgrm
=
NULL
;
}
}
return
p_es
;
}
...
...
@@ -241,17 +230,17 @@ es_descriptor_t * input_AddES( input_thread_t * p_input,
*****************************************************************************/
void
input_DelES
(
input_thread_t
*
p_input
,
u16
i_id
)
{
int
i_index
;
int
i_index
,
i_es
;
pgrm_descriptor_t
*
p_pgrm
=
NULL
;
es_descriptor_t
*
p_es
=
NULL
;
/* Look for the description of the ES */
for
(
i_
index
=
0
;
i_index
<
INPUT_MAX_ES
;
i_index
++
)
for
(
i_
es
=
0
;
i_es
<
p_input
->
i_es_number
;
i_es
++
)
{
if
(
p_input
->
p
_es
[
i_index
].
i_id
==
i_id
)
if
(
p_input
->
p
p_es
[
i_es
]
->
i_id
==
i_id
)
{
p_es
=
&
p_input
->
p_es
[
i_index
];
p_pgrm
=
p_input
->
p
_es
[
i_index
].
p_pgrm
;
p_es
=
p_input
->
pp_es
[
i_es
];
p_pgrm
=
p_input
->
p
p_es
[
i_es
]
->
p_pgrm
;
break
;
}
}
...
...
@@ -276,15 +265,18 @@ void input_DelES( input_thread_t * p_input, u16 i_id )
}
}
/* The table of stream descriptors is static, so don't free memory
* but just mark the slot as unused */
p_es
->
i_id
=
EMPTY_ID
;
/* Free the demux data */
if
(
p_es
->
p_demux_data
!=
NULL
)
{
free
(
p_es
->
p_demux_data
);
}
/* Free the ES */
free
(
p_es
);
p_input
->
i_es_number
--
;
p_input
->
pp_es
[
i_es
]
=
p_input
->
pp_es
[
p_input
->
i_es_number
];
p_input
->
pp_es
=
realloc
(
p_input
->
pp_es
,
p_input
->
i_es_number
*
sizeof
(
es_descriptor_t
*
));
}
#ifdef STATS
...
...
@@ -402,7 +394,6 @@ static adec_config_t * GetAdecConfig( input_thread_t * p_input,
int
input_SelectES
(
input_thread_t
*
p_input
,
es_descriptor_t
*
p_es
)
{
int
i
;
es_descriptor_t
**
p_spot
=
NULL
;
#ifdef DEBUG_INPUT
intf_DbgMsg
(
"Selecting ES %d"
,
p_es
->
i_id
);
...
...
@@ -414,22 +405,6 @@ int input_SelectES( input_thread_t * p_input, es_descriptor_t * p_es )
return
(
-
1
);
}
/* Find a free spot in pp_selected_es. */
for
(
i
=
0
;
i
<
INPUT_MAX_SELECTED_ES
;
i
++
)
{
if
(
p_input
->
pp_selected_es
[
i
]
==
NULL
)
{
p_spot
=
&
p_input
->
pp_selected_es
[
i
];
break
;
}
}
if
(
p_spot
==
NULL
)
{
intf_ErrMsg
(
"Too many ES selected"
);
return
(
-
1
);
}
switch
(
p_es
->
i_type
)
{
case
MPEG1_AUDIO_ES
:
...
...
@@ -474,7 +449,11 @@ int input_SelectES( input_thread_t * p_input, es_descriptor_t * p_es )
if
(
p_es
->
p_decoder_fifo
!=
NULL
)
{
*
p_spot
=
p_es
;
p_input
->
i_selected_es_number
++
;
p_input
->
pp_selected_es
=
realloc
(
p_input
->
pp_selected_es
,
p_input
->
i_selected_es_number
*
sizeof
(
es_descriptor_t
*
)
);
p_input
->
pp_selected_es
[
p_input
->
i_selected_es_number
-
1
]
=
p_es
;
}
return
(
0
);
}
src/input/mpeg_system.c
View file @
c570d9bc
...
...
@@ -2,7 +2,7 @@
* mpeg_system.c: TS, PS and PES management
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: mpeg_system.c,v 1.1
2 2000/12/20 20:09:19 sam
Exp $
* $Id: mpeg_system.c,v 1.1
3 2000/12/21 13:54:15 massiot
Exp $
*
* Authors:
*
...
...
@@ -667,6 +667,7 @@ static u16 GetID( data_packet_t * p_data )
/*****************************************************************************
* DecodePSM: Decode the Program Stream Map information
*****************************************************************************/
/* FIXME : deprecated code ! */
static
void
DecodePSM
(
input_thread_t
*
p_input
,
data_packet_t
*
p_data
)
{
stream_ps_data_t
*
p_demux
=
...
...
@@ -709,6 +710,7 @@ static void DecodePSM( input_thread_t * p_input, data_packet_t * p_data )
/* 4 == minimum useful size of a section */
while
(
p_byte
+
4
<=
p_end
)
{
#if 0
p_input->p_es[i_es].i_id
= p_input->p_es[i_es].i_stream_id
= p_byte[1];
...
...
@@ -735,6 +737,7 @@ static void DecodePSM( input_thread_t * p_input, data_packet_t * p_data )
#endif
i_es++;
#endif
}
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
...
...
@@ -771,7 +774,8 @@ es_descriptor_t * input_ParsePS( input_thread_t * p_input,
if
(
p_input
->
stream
.
pp_programs
[
0
]
->
b_is_ok
)
{
/* Look only at the selected ES. */
for
(
i_dummy
=
0
;
i_dummy
<
INPUT_MAX_SELECTED_ES
;
i_dummy
++
)
for
(
i_dummy
=
0
;
i_dummy
<
p_input
->
i_selected_es_number
;
i_dummy
++
)
{
if
(
p_input
->
pp_selected_es
[
i_dummy
]
!=
NULL
&&
p_input
->
pp_selected_es
[
i_dummy
]
->
i_id
==
i_id
)
...
...
@@ -784,12 +788,12 @@ es_descriptor_t * input_ParsePS( input_thread_t * p_input,
else
{
/* Search all ES ; if not found -> AddES */
for
(
i_dummy
=
0
;
i_dummy
<
INPUT_MAX_ES
;
i_dummy
++
)
for
(
i_dummy
=
0
;
i_dummy
<
p_input
->
i_es_number
;
i_dummy
++
)
{
if
(
p_input
->
p
_es
[
i_dummy
].
i_id
!=
EMPTY_ID
&&
p_input
->
p
_es
[
i_dummy
].
i_id
==
i_id
)
if
(
p_input
->
p
p_es
[
i_dummy
]
!=
NULL
&&
p_input
->
p
p_es
[
i_dummy
]
->
i_id
==
i_id
)
{
p_es
=
&
p_input
->
p_es
[
i_dummy
];
p_es
=
p_input
->
p
p_es
[
i_dummy
];
break
;
}
}
...
...
@@ -995,13 +999,13 @@ void input_DemuxTS( input_thread_t * p_input, data_packet_t * p_data )
/* Find out the elementary stream. */
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
for
(
i_dummy
=
0
;
i_dummy
<
INPUT_MAX_ES
;
i_dummy
++
)
for
(
i_dummy
=
0
;
i_dummy
<
p_input
->
i_es_number
;
i_dummy
++
)
{
if
(
p_input
->
p
_es
[
i_dummy
].
i_id
!=
EMPTY_ID
)
if
(
p_input
->
p
p_es
[
i_dummy
]
!=
NULL
)
{
if
(
p_input
->
p
_es
[
i_dummy
].
i_id
==
i_pid
)
if
(
p_input
->
p
p_es
[
i_dummy
]
->
i_id
==
i_pid
)
{
p_es
=
&
p_input
->
p_es
[
i_dummy
];
p_es
=
p_input
->
p
p_es
[
i_dummy
];
p_es_demux
=
(
es_ts_data_t
*
)
p_es
->
p_demux_data
;
p_pgrm_demux
=
(
pgrm_ts_data_t
*
)
p_es
->
p_pgrm
->
p_demux_data
;
break
;
...
...
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