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
31bfaf90
Commit
31bfaf90
authored
Sep 22, 2004
by
Gildas Bazin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* modules/demux/ps.c: small cleanup.
parent
29be1e00
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
78 additions
and
65 deletions
+78
-65
modules/demux/ps.c
modules/demux/ps.c
+78
-65
No files found.
modules/demux/ps.c
View file @
31bfaf90
/*****************************************************************************
* ps.c
* ps.c
: Program Stream demux module for VLC.
*****************************************************************************
* Copyright (C) 2004 VideoLAN
* $Id$
...
...
@@ -40,7 +40,7 @@
* Module descriptor
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
vlc_module_begin
();
set_description
(
_
(
"PS demuxer"
)
);
...
...
@@ -83,9 +83,11 @@ static int Open( vlc_object_t *p_this )
return
VLC_EGENERIC
;
}
if
(
p_peek
[
0
]
!=
0
||
p_peek
[
1
]
!=
0
||
p_peek
[
2
]
!=
1
||
p_peek
[
3
]
<
0xb9
)
if
(
p_peek
[
0
]
!=
0
||
p_peek
[
1
]
!=
0
||
p_peek
[
2
]
!=
1
||
p_peek
[
3
]
<
0xb9
)
{
msg_Warn
(
p_demux
,
"this does not look like an MPEG PS stream, continuing anyway"
);
msg_Warn
(
p_demux
,
"this does not look like an MPEG PS stream, "
"continuing anyway"
);
}
/* Fill p_demux field */
...
...
@@ -111,6 +113,17 @@ static void Close( vlc_object_t *p_this )
{
demux_t
*
p_demux
=
(
demux_t
*
)
p_this
;
demux_sys_t
*
p_sys
=
p_demux
->
p_sys
;
int
i
;
for
(
i
=
0
;
i
<
PS_TK_COUNT
;
i
++
)
{
ps_track_t
*
tk
=
&
p_sys
->
tk
[
i
];
if
(
tk
->
b_seen
)
{
es_format_Clean
(
&
tk
->
fmt
);
if
(
tk
->
es
)
es_out_Del
(
p_demux
->
out
,
tk
->
es
);
}
}
free
(
p_sys
);
}
...
...
@@ -121,7 +134,7 @@ static void Close( vlc_object_t *p_this )
static
int
Demux
(
demux_t
*
p_demux
)
{
demux_sys_t
*
p_sys
=
p_demux
->
p_sys
;
int
i_ret
;
int
i_ret
,
i_id
,
i_mux_rate
;
uint32_t
i_code
;
block_t
*
p_pkt
;
...
...
@@ -146,21 +159,16 @@ static int Demux( demux_t *p_demux )
case
0x1b9
:
block_Release
(
p_pkt
);
break
;
case
0x1ba
:
{
int
i_mux_rate
;
case
0x1ba
:
if
(
!
ps_pkt_parse_pack
(
p_pkt
,
&
p_sys
->
i_scr
,
&
i_mux_rate
)
)
{
es_out_Control
(
p_demux
->
out
,
ES_OUT_SET_PCR
,
p_sys
->
i_scr
);
if
(
i_mux_rate
>
0
)
{
p_sys
->
i_mux_rate
=
i_mux_rate
;
}
if
(
i_mux_rate
>
0
)
p_sys
->
i_mux_rate
=
i_mux_rate
;
}
block_Release
(
p_pkt
);
break
;
}
case
0x1bb
:
if
(
!
ps_pkt_parse_system
(
p_pkt
,
p_sys
->
tk
)
)
{
...
...
@@ -177,15 +185,14 @@ static int Demux( demux_t *p_demux )
}
block_Release
(
p_pkt
);
break
;
case
0x1bc
:
/* TODO PSM */
block_Release
(
p_pkt
);
break
;
default:
{
int
i_id
=
ps_pkt_id
(
p_pkt
);
if
(
i_id
>=
0xc0
)
if
(
(
i_id
=
ps_pkt_id
(
p_pkt
))
>=
0xc0
)
{
ps_track_t
*
tk
=
&
p_sys
->
tk
[
PS_ID_TO_TK
(
i_id
)];
...
...
@@ -197,7 +204,8 @@ static int Demux( demux_t *p_demux )
}
tk
->
b_seen
=
VLC_TRUE
;
}
if
(
tk
->
b_seen
&&
tk
->
es
&&
!
ps_pkt_parse_pes
(
p_pkt
,
tk
->
i_skip
)
)
if
(
tk
->
b_seen
&&
tk
->
es
&&
!
ps_pkt_parse_pes
(
p_pkt
,
tk
->
i_skip
)
)
{
es_out_Send
(
p_demux
->
out
,
tk
->
es
,
p_pkt
);
}
...
...
@@ -212,7 +220,7 @@ static int Demux( demux_t *p_demux )
}
break
;
}
}
return
1
;
}
...
...
@@ -239,6 +247,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
*
pf
=
0
.
0
;
}
return
VLC_SUCCESS
;
case
DEMUX_SET_POSITION
:
f
=
(
double
)
va_arg
(
args
,
double
);
i64
=
stream_Size
(
p_demux
->
s
);
...
...
@@ -251,7 +260,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
pi64
=
(
int64_t
*
)
va_arg
(
args
,
int64_t
*
);
if
(
p_sys
->
i_mux_rate
>
0
)
{
*
pi64
=
(
int64_t
)
1000000
*
(
stream_Tell
(
p_demux
->
s
)
/
50
)
/
p_sys
->
i_mux_rate
;
*
pi64
=
(
int64_t
)
1000000
*
(
stream_Tell
(
p_demux
->
s
)
/
50
)
/
p_sys
->
i_mux_rate
;
return
VLC_SUCCESS
;
}
*
pi64
=
0
;
...
...
@@ -261,7 +271,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
pi64
=
(
int64_t
*
)
va_arg
(
args
,
int64_t
*
);
if
(
p_sys
->
i_mux_rate
>
0
)
{
*
pi64
=
(
int64_t
)
1000000
*
(
stream_Size
(
p_demux
->
s
)
/
50
)
/
p_sys
->
i_mux_rate
;
*
pi64
=
(
int64_t
)
1000000
*
(
stream_Size
(
p_demux
->
s
)
/
50
)
/
p_sys
->
i_mux_rate
;
return
VLC_SUCCESS
;
}
*
pi64
=
0
;
...
...
@@ -278,7 +289,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
* Divers:
*****************************************************************************/
/* PSResynch: resynch on a system
e
starcode
/* PSResynch: resynch on a system starcode
* It doesn't skip more than 512 bytes
* -1 -> error, 0 -> not synch, 1 -> ok
*/
...
...
@@ -292,7 +303,8 @@ static int ps_pkt_resynch( stream_t *s, uint32_t *pi_code )
{
return
-
1
;
}
if
(
p_peek
[
0
]
==
0
&&
p_peek
[
1
]
==
0
&&
p_peek
[
2
]
==
1
&&
p_peek
[
3
]
>=
0xb9
)
if
(
p_peek
[
0
]
==
0
&&
p_peek
[
1
]
==
0
&&
p_peek
[
2
]
==
1
&&
p_peek
[
3
]
>=
0xb9
)
{
*
pi_code
=
0x100
|
p_peek
[
3
];
return
1
;
...
...
@@ -310,7 +322,8 @@ static int ps_pkt_resynch( stream_t *s, uint32_t *pi_code )
{
break
;
}
if
(
p_peek
[
0
]
==
0
&&
p_peek
[
1
]
==
0
&&
p_peek
[
2
]
==
1
&&
p_peek
[
3
]
>=
0xb9
)
if
(
p_peek
[
0
]
==
0
&&
p_peek
[
1
]
==
0
&&
p_peek
[
2
]
==
1
&&
p_peek
[
3
]
>=
0xb9
)
{
*
pi_code
=
0x100
|
p_peek
[
3
];
return
stream_Read
(
s
,
NULL
,
i_skip
)
==
i_skip
?
1
:
-
1
;
...
...
@@ -342,7 +355,8 @@ static block_t *ps_pkt_read( stream_t *s, uint32_t i_code )
}
while
(
i_size
<=
i_peek
-
4
)
{
if
(
p_peek
[
i_size
]
==
0x00
&&
p_peek
[
i_size
+
1
]
==
0x00
&&
p_peek
[
i_size
+
2
]
==
0x01
&&
p_peek
[
i_size
+
3
]
>=
0xb9
)
if
(
p_peek
[
i_size
]
==
0x00
&&
p_peek
[
i_size
+
1
]
==
0x00
&&
p_peek
[
i_size
+
2
]
==
0x01
&&
p_peek
[
i_size
+
3
]
>=
0xb9
)
{
return
stream_Block
(
s
,
i_size
);
}
...
...
@@ -358,4 +372,3 @@ static block_t *ps_pkt_read( stream_t *s, uint32_t i_code )
return
NULL
;
}
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