Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2013-08-03 18:40:21 +0400
committerHendrik Leppkes <h.leppkes@gmail.com>2017-08-04 20:12:12 +0300
commitf6a60cc07740a85b7e5a9353d218298c4ee2815a (patch)
tree6c3b5c02147bc5ea678e801868c45345748b44d1
parent10f5f18d174baf6fd15d9018b214cbb4d6a4bd92 (diff)
matroskadec_haali: fix dvb streams without the full dvb start code
-rw-r--r--libavformat/matroskadec_haali.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libavformat/matroskadec_haali.c b/libavformat/matroskadec_haali.c
index 9648ebb223..72f2f7d0b5 100644
--- a/libavformat/matroskadec_haali.c
+++ b/libavformat/matroskadec_haali.c
@@ -1526,6 +1526,14 @@ again:
}
av_buffer_unref(pkt->buf);
av_packet_from_data(pkt, wv_data, wv_size);
+ } else if (track->stream->codec->codec_id == AV_CODEC_ID_DVB_SUBTITLE && pkt->size >= 2 && AV_RB16(pkt->data) != 0x2000) {
+ int dvbsize = pkt->size + 2;
+ uint8_t *dvbdata = av_malloc(dvbsize + FF_INPUT_BUFFER_PADDING_SIZE);
+ AV_WB16(dvbdata, 0x2000);
+ memcpy(dvbdata+2, pkt->data, pkt->size);
+ memset(dvbdata+dvbsize, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+ av_buffer_unref(pkt->buf);
+ av_packet_from_data(pkt, dvbdata, dvbsize);
}
if (track->refresh_extradata) {