Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
Steve Lhomme
VLC
Commits
d468e111
Commit
d468e111
authored
Jul 24, 2017
by
François Cartegnie
🤞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mux: ts: don't set fmt.extra for subt
parent
935eece4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
69 additions
and
58 deletions
+69
-58
modules/mux/mpeg/tables.c
modules/mux/mpeg/tables.c
+62
-1
modules/mux/mpeg/ts.c
modules/mux/mpeg/ts.c
+7
-57
No files found.
modules/mux/mpeg/tables.c
View file @
d468e111
...
...
@@ -119,6 +119,57 @@ static uint32_t GetDescriptorLength24b( int i_length )
return
(
0x808000
|
(
i_l3
<<
16
)
|
(
i_l2
<<
8
)
|
i_l1
);
}
static
void
Mpeg4SUBTDecoderSpecific_55
(
bits_buffer_t
*
b
)
{
bits_write
(
b
,
8
,
0x10
);
/* textFormat, 0x10 for 3GPP TS 26.245 */
bits_write
(
b
,
8
,
0x00
);
/* flags: 1b: associated video info flag
3b: reserved
1b: duration flag
3b: reserved */
bits_write
(
b
,
8
,
52
);
/* remaining size */
bits_write
(
b
,
32
,
0x00
);
/* display flags */
bits_write
(
b
,
8
,
0x00
);
/* horizontal justification (-1: left, 0 center, 1 right) */
bits_write
(
b
,
8
,
0x01
);
/* vertical justification (-1: top, 0 center, 1 bottom) */
bits_write
(
b
,
24
,
0x00
);
/* background rgb */
bits_write
(
b
,
8
,
0xff
);
/* background a */
bits_write
(
b
,
16
,
0x00
);
/* text box top */
bits_write
(
b
,
16
,
0x00
);
/* text box left */
bits_write
(
b
,
16
,
0x00
);
/* text box bottom */
bits_write
(
b
,
16
,
0x00
);
/* text box right */
bits_write
(
b
,
16
,
0x00
);
/* start char */
bits_write
(
b
,
16
,
0x00
);
/* end char */
bits_write
(
b
,
16
,
0x00
);
/* default font id */
bits_write
(
b
,
8
,
0x00
);
/* font style flags */
bits_write
(
b
,
8
,
12
);
/* font size */
bits_write
(
b
,
24
,
0x00
);
/* foreground rgb */
bits_write
(
b
,
8
,
0x00
);
/* foreground a */
bits_write
(
b
,
24
,
0x00
);
bits_write
(
b
,
8
,
22
);
/* atom size */
bits_write
(
b
,
8
,
'f'
);
/* atom id */
bits_write
(
b
,
8
,
't'
);
bits_write
(
b
,
8
,
'a'
);
bits_write
(
b
,
8
,
'b'
);
bits_write
(
b
,
8
,
0x00
);
bits_write
(
b
,
8
,
0x01
);
/* entry count */
bits_write
(
b
,
16
,
0x00
);
/* font id */
bits_write
(
b
,
8
,
9
);
/* font name length */
const
char
fontname
[]
=
"Helvetica"
;
for
(
int
i
=
0
;
i
<
9
;
i
++
)
bits_write
(
b
,
8
,
fontname
[
i
]
);
/* font name */
}
static
void
GetPMTmpeg4
(
vlc_object_t
*
p_object
,
dvbpsi_pmt_t
*
p_dvbpmt
,
unsigned
i_mapped_streams
,
const
pes_mapped_stream_t
*
p_mapped_streams
)
{
...
...
@@ -211,7 +262,16 @@ static void GetPMTmpeg4( vlc_object_t *p_object, dvbpsi_pmt_t *p_dvbpmt,
bits_write
(
&
bits
,
32
,
0x7fffffff
);
/* maxBitrate */
bits_write
(
&
bits
,
32
,
0
);
/* avgBitrate */
if
(
p_stream
->
pes
->
i_extra
>
0
)
/* DecoderSpecificInfo */
if
(
p_stream
->
pes
->
i_codec
==
VLC_CODEC_SUBT
)
{
bits_align
(
&
bits
);
bits_write
(
&
bits
,
8
,
0x05
);
/* tag */
bits_write
(
&
bits
,
24
,
55
);
/* Create decoder specific info for subt */
Mpeg4SUBTDecoderSpecific_55
(
&
bits
);
}
else
if
(
p_stream
->
pes
->
i_extra
>
0
)
{
/* DecoderSpecificInfo */
bits_align
(
&
bits
);
...
...
@@ -224,6 +284,7 @@ static void GetPMTmpeg4( vlc_object_t *p_object, dvbpsi_pmt_t *p_dvbpmt,
((
uint8_t
*
)
p_stream
->
pes
->
p_extra
)[
j
]
);
}
}
/* fix Decoder length */
bits_write
(
&
bits_fix_Decoder
,
24
,
GetDescriptorLength24b
(
bits
.
i_data
-
...
...
modules/mux/mpeg/ts.c
View file @
d468e111
...
...
@@ -974,66 +974,16 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
}
}
/* Create decoder specific info for subt */
if
(
p_stream
->
pes
.
i_codec
==
VLC_CODEC_SUBT
)
/* Copy extra data (VOL for MPEG-4 and extra BitMapInfoHeader for VFW */
const
es_format_t
*
fmt
=
p_input
->
p_fmt
;
if
(
fmt
->
i_extra
>
0
)
{
p_stream
->
pes
.
i_extra
=
55
;
p_stream
->
pes
.
p_extra
=
malloc
(
p_stream
->
pes
.
i_extra
);
if
(
!
p_stream
->
pes
.
p_extra
)
p_stream
->
pes
.
i_extra
=
fmt
->
i_extra
;
p_stream
->
pes
.
p_extra
=
malloc
(
fmt
->
i_extra
);
if
(
!
p_stream
->
pes
.
p_extra
)
goto
oom
;
uint8_t
*
p
=
p_stream
->
pes
.
p_extra
;
p
[
0
]
=
0x10
;
/* textFormat, 0x10 for 3GPP TS 26.245 */
p
[
1
]
=
0x00
;
/* flags: 1b: associated video info flag
3b: reserved
1b: duration flag
3b: reserved */
p
[
2
]
=
52
;
/* remaining size */
p
+=
3
;
p
[
0
]
=
p
[
1
]
=
p
[
2
]
=
p
[
3
]
=
0
;
p
+=
4
;
/* display flags */
*
p
++
=
0
;
/* horizontal justification (-1: left, 0 center, 1 right) */
*
p
++
=
1
;
/* vertical justification (-1: top, 0 center, 1 bottom) */
p
[
0
]
=
p
[
1
]
=
p
[
2
]
=
0x00
;
p
+=
3
;
/* background rgb */
*
p
++
=
0xff
;
/* background a */
p
[
0
]
=
p
[
1
]
=
0
;
p
+=
2
;
/* text box top */
p
[
0
]
=
p
[
1
]
=
0
;
p
+=
2
;
/* text box left */
p
[
0
]
=
p
[
1
]
=
0
;
p
+=
2
;
/* text box bottom */
p
[
0
]
=
p
[
1
]
=
0
;
p
+=
2
;
/* text box right */
p
[
0
]
=
p
[
1
]
=
0
;
p
+=
2
;
/* start char */
p
[
0
]
=
p
[
1
]
=
0
;
p
+=
2
;
/* end char */
p
[
0
]
=
p
[
1
]
=
0
;
p
+=
2
;
/* default font id */
*
p
++
=
0
;
/* font style flags */
*
p
++
=
12
;
/* font size */
p
[
0
]
=
p
[
1
]
=
p
[
2
]
=
0x00
;
p
+=
3
;
/* foreground rgb */
*
p
++
=
0x00
;
/* foreground a */
p
[
0
]
=
p
[
1
]
=
p
[
2
]
=
0
;
p
[
3
]
=
22
;
p
+=
4
;
memcpy
(
p
,
"ftab"
,
4
);
p
+=
4
;
*
p
++
=
0
;
*
p
++
=
1
;
/* entry count */
p
[
0
]
=
p
[
1
]
=
0
;
p
+=
2
;
/* font id */
*
p
++
=
9
;
/* font name length */
memcpy
(
p
,
"Helvetica"
,
9
);
/* font name */
}
else
{
/* Copy extra data (VOL for MPEG-4 and extra BitMapInfoHeader for VFW */
const
es_format_t
*
fmt
=
p_input
->
p_fmt
;
if
(
fmt
->
i_extra
>
0
)
{
p_stream
->
pes
.
i_extra
=
fmt
->
i_extra
;
p_stream
->
pes
.
p_extra
=
malloc
(
fmt
->
i_extra
);
if
(
!
p_stream
->
pes
.
p_extra
)
goto
oom
;
memcpy
(
p_stream
->
pes
.
p_extra
,
fmt
->
p_extra
,
fmt
->
i_extra
);
}
memcpy
(
p_stream
->
pes
.
p_extra
,
fmt
->
p_extra
,
fmt
->
i_extra
);
}
/* Init pes chain */
...
...
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