mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-28 05:50:43 +00:00
matroskaenc: Provide output bytestream markers
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
dbbaad32e3
commit
71852a1ba8
@ -105,6 +105,7 @@ typedef struct MatroskaMuxContext {
|
||||
AVPacket cur_audio_pkt;
|
||||
|
||||
int have_attachments;
|
||||
int have_video;
|
||||
|
||||
int reserve_cues_space;
|
||||
int cluster_size_limit;
|
||||
@ -843,6 +844,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv,
|
||||
|
||||
switch (par->codec_type) {
|
||||
case AVMEDIA_TYPE_VIDEO:
|
||||
mkv->have_video = 1;
|
||||
put_ebml_uint(pb, MATROSKA_ID_TRACKTYPE, MATROSKA_TRACK_TYPE_VIDEO);
|
||||
if (st->avg_frame_rate.num > 0 && st->avg_frame_rate.den > 0)
|
||||
put_ebml_uint(pb, MATROSKA_ID_TRACKDEFAULTDURATION, 1E9 / av_q2d(st->avg_frame_rate));
|
||||
@ -1635,6 +1637,11 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
avio_flush(s->pb);
|
||||
}
|
||||
|
||||
if (!mkv->cluster_pos)
|
||||
avio_write_marker(s->pb,
|
||||
av_rescale_q(pkt->dts, s->streams[pkt->stream_index]->time_base, AV_TIME_BASE_Q),
|
||||
keyframe && (mkv->have_video ? codec_type == AVMEDIA_TYPE_VIDEO : 1) ? AVIO_DATA_MARKER_SYNC_POINT : AVIO_DATA_MARKER_BOUNDARY_POINT);
|
||||
|
||||
// check if we have an audio packet cached
|
||||
if (mkv->cur_audio_pkt.size > 0) {
|
||||
ret = mkv_write_packet_internal(s, &mkv->cur_audio_pkt);
|
||||
|
Loading…
Reference in New Issue
Block a user