Commit 663a5d9d authored by David Conrad's avatar David Conrad

Write subtitle tracks

Originally committed as revision 10330 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 95527e06
...@@ -475,6 +475,9 @@ static int mkv_write_tracks(AVFormatContext *s) ...@@ -475,6 +475,9 @@ static int mkv_write_tracks(AVFormatContext *s)
end_ebml_master(pb, subinfo); end_ebml_master(pb, subinfo);
break; break;
case CODEC_TYPE_SUBTITLE:
put_ebml_uint(pb, MATROSKA_ID_TRACKTYPE, MATROSKA_TRACK_TYPE_SUBTITLE);
break;
default: default:
av_log(s, AV_LOG_ERROR, "Only audio and video are supported for Matroska."); av_log(s, AV_LOG_ERROR, "Only audio and video are supported for Matroska.");
break; break;
...@@ -583,7 +586,14 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -583,7 +586,14 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt)
mkv->cluster_pts = pkt->pts; 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); 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 (s->streams[pkt->stream_index]->codec->codec_type == CODEC_TYPE_VIDEO && keyframe) {
if (mkv_add_cuepoint(mkv->cues, pkt, mkv->cluster_pos) < 0) if (mkv_add_cuepoint(mkv->cues, pkt, mkv->cluster_pos) < 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment