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
53102b68
Commit
53102b68
authored
Feb 25, 2007
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added
VC-1
detection (SMPTE RP 227 + ISO 13818-1 Amendment 2)
parent
8d001a38
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
77 additions
and
2 deletions
+77
-2
modules/demux/ps.h
modules/demux/ps.h
+77
-2
No files found.
modules/demux/ps.h
View file @
53102b68
...
...
@@ -23,9 +23,10 @@
#include <vlc_demux.h>
#define PS_TK_COUNT (512 - 0xc0)
/* 256-0xC0 for normal stream, 256 for 0xbd stream, 256 for 0xfd stream */
#define PS_TK_COUNT (768 - 0xc0)
#define PS_ID_TO_TK( id ) ((id) <= 0xff ? (id) - 0xc0 : \
((id)&0xff) + (256 - 0xc0)
)
((id)&0xff) + (((id)&0xff00) == 0xbd00 ? 256-0xC0 : 512-0xc0)
)
typedef
struct
ps_psm_t
ps_psm_t
;
static
inline
int
ps_id_to_type
(
const
ps_psm_t
*
,
int
);
...
...
@@ -106,6 +107,19 @@ static inline int ps_track_fill( ps_track_t *tk, ps_psm_t *p_psm, int i_id )
return
VLC_EGENERIC
;
}
}
else
if
(
(
i_id
&
0xff00
)
==
0xfd00
)
{
uint8_t
i_sub_id
=
i_id
&
0xff
;
if
(
i_sub_id
>=
0x55
&&
i_sub_id
<=
0x5f
)
{
es_format_Init
(
&
tk
->
fmt
,
VIDEO_ES
,
VLC_FOURCC
(
'W'
,
'V'
,
'C'
,
'1'
)
);
}
else
{
es_format_Init
(
&
tk
->
fmt
,
UNKNOWN_ES
,
0
);
return
VLC_EGENERIC
;
}
}
else
{
int
i_type
=
ps_id_to_type
(
p_psm
,
i_id
);
...
...
@@ -164,8 +178,64 @@ static inline int ps_pkt_id( block_t *p_pkt )
p_pkt
->
i_buffer
>=
9
&&
p_pkt
->
i_buffer
>=
9
+
p_pkt
->
p_buffer
[
8
]
)
{
/* VOB extension */
return
0xbd00
|
p_pkt
->
p_buffer
[
9
+
p_pkt
->
p_buffer
[
8
]];
}
else
if
(
p_pkt
->
p_buffer
[
3
]
==
0xfd
&&
p_pkt
->
i_buffer
>=
9
&&
(
p_pkt
->
p_buffer
[
6
]
&
0xC0
)
==
0x80
&&
/* mpeg2 */
(
p_pkt
->
p_buffer
[
7
]
&
0x01
)
==
0x01
)
/* extension_flag */
{
/* ISO 13818 amendment 2 and SMPTE RP 227 */
const
uint8_t
i_flags
=
p_pkt
->
p_buffer
[
7
];
int
i_skip
=
9
;
/* Find PES extension */
if
(
(
i_flags
&
0x80
)
)
{
i_skip
+=
5
;
/* pts */
if
(
(
i_flags
&
0x40
)
)
i_skip
+=
5
;
/* dts */
}
if
(
(
i_flags
&
0x20
)
)
i_skip
+=
6
;
if
(
(
i_flags
&
0x10
)
)
i_skip
+=
3
;
if
(
(
i_flags
&
0x08
)
)
i_skip
+=
1
;
if
(
(
i_flags
&
0x04
)
)
i_skip
+=
1
;
if
(
(
i_flags
&
0x02
)
)
i_skip
+=
2
;
if
(
i_skip
<
p_pkt
->
i_buffer
&&
(
p_pkt
->
p_buffer
[
i_skip
]
&
0x01
)
)
{
const
uint8_t
i_flags2
=
p_pkt
->
p_buffer
[
i_skip
];
/* Find PES extension 2 */
i_skip
+=
1
;
if
(
i_flags2
&
0x80
)
i_skip
+=
16
;
if
(
(
i_flags2
&
0x40
)
&&
i_skip
<
p_pkt
->
i_buffer
)
i_skip
+=
1
+
p_pkt
->
p_buffer
[
i_skip
];
if
(
i_flags2
&
0x20
)
i_skip
+=
2
;
if
(
i_flags2
&
0x10
)
i_skip
+=
2
;
if
(
i_skip
+
1
<
p_pkt
->
i_buffer
)
{
const
int
i_extension_field_length
=
p_pkt
->
p_buffer
[
i_skip
]
&
0x7f
;
if
(
i_extension_field_length
>=
1
)
{
int
i_stream_id_extension_flag
=
(
p_pkt
->
p_buffer
[
i_skip
+
1
]
>>
7
)
&
0x1
;
if
(
i_stream_id_extension_flag
==
0
)
return
0xfd00
|
(
p_pkt
->
p_buffer
[
i_skip
+
1
]
&
0x7f
);
}
}
}
}
return
p_pkt
->
p_buffer
[
3
];
}
...
...
@@ -472,6 +542,11 @@ static inline int ps_psm_fill( ps_psm_t *p_psm, block_t *p_pkt,
if
(
i_es_base
+
4
+
i_info_length
>
i_length
)
break
;
/* TODO Add support for VC-1 stream:
* stream_type=0xea, stream_id=0xfd AND registration
* descriptor 0x5 with format_identifier == 0x56432D31 (VC-1)
* (I need a sample that use PSM with VC-1) */
es
.
p_descriptor
=
0
;
es
.
i_descriptor
=
i_info_length
;
if
(
i_info_length
>
0
)
...
...
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