Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
70feca92
Commit
70feca92
authored
Apr 07, 2013
by
Nicolas George
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavc: check decoded subtitles encoding.
Address trac ticket #2431.
parent
29ebb7ba
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
36 additions
and
7 deletions
+36
-7
utils.c
libavcodec/utils.c
+30
-1
subtitles.mak
tests/fate/subtitles.mak
+4
-4
sub-aqtitle
tests/ref/fate/sub-aqtitle
+1
-1
sub-subviewer1
tests/ref/fate/sub-subviewer1
+1
-1
No files found.
libavcodec/utils.c
View file @
70feca92
...
@@ -2206,11 +2206,30 @@ end:
...
@@ -2206,11 +2206,30 @@ end:
#endif
#endif
}
}
static
int
utf8_check
(
const
uint8_t
*
str
)
{
const
uint8_t
*
byte
;
uint32_t
codepoint
,
min
;
while
(
*
str
)
{
byte
=
str
;
GET_UTF8
(
codepoint
,
*
(
byte
++
),
return
0
;);
min
=
byte
-
str
==
1
?
0
:
byte
-
str
==
2
?
0x80
:
1
<<
(
5
*
(
byte
-
str
)
-
4
);
if
(
codepoint
<
min
||
codepoint
>=
0x110000
||
codepoint
==
0xFFFE
/* BOM */
||
codepoint
>=
0xD800
&&
codepoint
<=
0xDFFF
/* surrogates */
)
return
0
;
str
=
byte
;
}
return
1
;
}
int
avcodec_decode_subtitle2
(
AVCodecContext
*
avctx
,
AVSubtitle
*
sub
,
int
avcodec_decode_subtitle2
(
AVCodecContext
*
avctx
,
AVSubtitle
*
sub
,
int
*
got_sub_ptr
,
int
*
got_sub_ptr
,
AVPacket
*
avpkt
)
AVPacket
*
avpkt
)
{
{
int
ret
=
0
;
int
i
,
ret
=
0
;
if
(
avctx
->
codec
->
type
!=
AVMEDIA_TYPE_SUBTITLE
)
{
if
(
avctx
->
codec
->
type
!=
AVMEDIA_TYPE_SUBTITLE
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Invalid media type for subtitles
\n
"
);
av_log
(
avctx
,
AV_LOG_ERROR
,
"Invalid media type for subtitles
\n
"
);
...
@@ -2247,6 +2266,16 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
...
@@ -2247,6 +2266,16 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
avctx
->
pkt_timebase
,
ms
);
avctx
->
pkt_timebase
,
ms
);
}
}
for
(
i
=
0
;
i
<
sub
->
num_rects
;
i
++
)
{
if
(
sub
->
rects
[
i
]
->
ass
&&
!
utf8_check
(
sub
->
rects
[
i
]
->
ass
))
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Invalid UTF-8 in decoded subtitles text; "
"maybe missing -sub_charenc option
\n
"
);
avsubtitle_free
(
sub
);
return
AVERROR_INVALIDDATA
;
}
}
if
(
tmp
.
data
!=
pkt_recoded
.
data
)
{
// did we recode?
if
(
tmp
.
data
!=
pkt_recoded
.
data
)
{
// did we recode?
/* prevent from destroying side data from original packet */
/* prevent from destroying side data from original packet */
pkt_recoded
.
side_data
=
NULL
;
pkt_recoded
.
side_data
=
NULL
;
...
...
tests/fate/subtitles.mak
View file @
70feca92
FATE_SUBTITLES_ASS-$(call
DEMDEC, AQTITLE, TEXT
) += fate-sub-aqtitle
FATE_SUBTITLES_ASS-$(call
ALLYES, AQTITLE_DEMUXER TEXT_DECODER ICONV
) += fate-sub-aqtitle
fate-sub-aqtitle: CMD = md5 -i $(SAMPLES)/sub/AQTitle_capability_tester.aqt -f ass
fate-sub-aqtitle: CMD = md5 -
sub_charenc windows-1250 -
i $(SAMPLES)/sub/AQTitle_capability_tester.aqt -f ass
FATE_SUBTITLES_ASS-$(call DEMDEC, JACOSUB, JACOSUB) += fate-sub-jacosub
FATE_SUBTITLES_ASS-$(call DEMDEC, JACOSUB, JACOSUB) += fate-sub-jacosub
fate-sub-jacosub: CMD = md5 -i $(SAMPLES)/sub/JACOsub_capability_tester.jss -f ass
fate-sub-jacosub: CMD = md5 -i $(SAMPLES)/sub/JACOsub_capability_tester.jss -f ass
...
@@ -40,8 +40,8 @@ fate-sub-srt: CMD = md5 -i $(SAMPLES)/sub/SubRip_capability_tester.srt -f ass
...
@@ -40,8 +40,8 @@ fate-sub-srt: CMD = md5 -i $(SAMPLES)/sub/SubRip_capability_tester.srt -f ass
FATE_SUBTITLES-$(call ALLYES, MOV_DEMUXER MOVTEXT_DECODER SUBRIP_ENCODER) += fate-sub-subripenc
FATE_SUBTITLES-$(call ALLYES, MOV_DEMUXER MOVTEXT_DECODER SUBRIP_ENCODER) += fate-sub-subripenc
fate-sub-subripenc: CMD = md5 -i $(SAMPLES)/sub/MovText_capability_tester.mp4 -scodec subrip -f srt
fate-sub-subripenc: CMD = md5 -i $(SAMPLES)/sub/MovText_capability_tester.mp4 -scodec subrip -f srt
FATE_SUBTITLES_ASS-$(call
DEMDEC, SUBVIEWER1, SUBVIEWER1
) += fate-sub-subviewer1
FATE_SUBTITLES_ASS-$(call
ALLYES, SUBVIEWER1_DEMUXER SUBVIEWER1_DECODER ICONV
) += fate-sub-subviewer1
fate-sub-subviewer1: CMD = md5 -i $(SAMPLES)/sub/SubViewer1_capability_tester.sub -f ass
fate-sub-subviewer1: CMD = md5 -
sub_charenc windows-1250 -
i $(SAMPLES)/sub/SubViewer1_capability_tester.sub -f ass
FATE_SUBTITLES_ASS-$(call DEMDEC, SUBVIEWER, SUBVIEWER) += fate-sub-subviewer
FATE_SUBTITLES_ASS-$(call DEMDEC, SUBVIEWER, SUBVIEWER) += fate-sub-subviewer
fate-sub-subviewer: CMD = md5 -i $(SAMPLES)/sub/SubViewer_capability_tester.sub -f ass
fate-sub-subviewer: CMD = md5 -i $(SAMPLES)/sub/SubViewer_capability_tester.sub -f ass
...
...
tests/ref/fate/sub-aqtitle
View file @
70feca92
e888e1354cd0968895ab89cb169fec31
1c68def68db6536c235819cbe0638e00
tests/ref/fate/sub-subviewer1
View file @
70feca92
0c2096fedf7c971742b2e879bb303ce9
cbeb015b1125757eed814f212cfc6c9c
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