diff options
author | David Conrad <lessen42@gmail.com> | 2007-09-05 00:23:49 +0000 |
---|---|---|
committer | David Conrad <lessen42@gmail.com> | 2007-09-05 00:23:49 +0000 |
commit | 663a5d9d2d93e02922d9a3478d5738d82f136d46 (patch) | |
tree | ff96ee3ab1d0b235d45f8f0f833149f020f9717e /libavformat/matroskaenc.c | |
parent | 95527e066938e4d342b1c59a79a23487bba36efb (diff) | |
download | ffmpeg-663a5d9d2d93e02922d9a3478d5738d82f136d46.tar.gz |
Write subtitle tracks
Originally committed as revision 10330 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/matroskaenc.c')
-rw-r--r-- | libavformat/matroskaenc.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 51913a3bb2..c6e4fb2be8 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -475,6 +475,9 @@ static int mkv_write_tracks(AVFormatContext *s) end_ebml_master(pb, subinfo); break; + case CODEC_TYPE_SUBTITLE: + put_ebml_uint(pb, MATROSKA_ID_TRACKTYPE, MATROSKA_TRACK_TYPE_SUBTITLE); + break; default: av_log(s, AV_LOG_ERROR, "Only audio and video are supported for Matroska."); break; @@ -583,7 +586,14 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt) mkv->cluster_pts = pkt->pts; } + if (s->streams[pkt->stream_index]->codec->codec_type != CODEC_TYPE_SUBTITLE) { mkv_write_block(s, MATROSKA_ID_SIMPLEBLOCK, pkt, keyframe << 7); + } else { + offset_t blockgroup = start_ebml_master(pb, MATROSKA_ID_BLOCKGROUP); + mkv_write_block(s, MATROSKA_ID_BLOCK, pkt, 0); + put_ebml_uint(pb, MATROSKA_ID_DURATION, pkt->duration); + end_ebml_master(pb, blockgroup); + } if (s->streams[pkt->stream_index]->codec->codec_type == CODEC_TYPE_VIDEO && keyframe) { if (mkv_add_cuepoint(mkv->cues, pkt, mkv->cluster_pos) < 0) |