diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index 578be5d2dd..0d8b3acf37 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -830,10 +830,15 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt) goto skip; } else if (type == FLV_TAG_TYPE_META) { stream_type=FLV_STREAM_TYPE_DATA; - if (size > 13 + 1 + 4 && dts == 0) { // Header-type metadata stuff + if (size > 13 + 1 + 4) { // Header-type metadata stuff + int type; meta_pos = avio_tell(s->pb); - if (flv_read_metabody(s, next) <= 0) { + type = flv_read_metabody(s, next); + if (type == 0 && dts == 0 || type < 0) { goto skip; + } else if (type == TYPE_ONTEXTDATA) { + avpriv_request_sample(s, "OnTextData packet"); + return flv_data_packet(s, pkt, dts, next); } avio_seek(s->pb, meta_pos, SEEK_SET); }