mirror of https://git.ffmpeg.org/ffmpeg.git
parent
29ebb7ba8d
commit
70feca926b
|
@ -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,
|
||||||
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;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
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
|
||||||
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
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
e888e1354cd0968895ab89cb169fec31
|
1c68def68db6536c235819cbe0638e00
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
0c2096fedf7c971742b2e879bb303ce9
|
cbeb015b1125757eed814f212cfc6c9c
|
||||||
|
|
Loading…
Reference in New Issue