Commit e1acfd3c authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit 'b886f5c2'

* commit 'b886f5c2':
  mkv: Allow flushing the current cluster in progress

Conflicts:
	libavformat/matroskaenc.c
	libavformat/version.h
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents d169b56b b886f5c2
...@@ -1561,6 +1561,29 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -1561,6 +1561,29 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt)
return ret; return ret;
} }
static int mkv_write_flush_packet(AVFormatContext *s, AVPacket *pkt)
{
MatroskaMuxContext *mkv = s->priv_data;
AVIOContext *pb;
if (s->pb->seekable)
pb = s->pb;
else
pb = mkv->dyn_bc;
if (!pkt) {
if (mkv->cluster_pos != -1) {
av_log(s, AV_LOG_DEBUG, "Flushing cluster at offset %" PRIu64
" bytes\n", avio_tell(pb));
end_ebml_master(pb, mkv->cluster);
mkv->cluster_pos = -1;
if (mkv->dyn_bc)
mkv_flush_dynbuf(s);
avio_flush(s->pb);
}
return 0;
}
return mkv_write_packet(s, pkt);
}
static int mkv_write_trailer(AVFormatContext *s) static int mkv_write_trailer(AVFormatContext *s)
{ {
MatroskaMuxContext *mkv = s->priv_data; MatroskaMuxContext *mkv = s->priv_data;
...@@ -1703,10 +1726,10 @@ AVOutputFormat ff_matroska_muxer = { ...@@ -1703,10 +1726,10 @@ AVOutputFormat ff_matroska_muxer = {
.video_codec = CONFIG_LIBX264_ENCODER ? .video_codec = CONFIG_LIBX264_ENCODER ?
AV_CODEC_ID_H264 : AV_CODEC_ID_MPEG4, AV_CODEC_ID_H264 : AV_CODEC_ID_MPEG4,
.write_header = mkv_write_header, .write_header = mkv_write_header,
.write_packet = mkv_write_packet, .write_packet = mkv_write_flush_packet,
.write_trailer = mkv_write_trailer, .write_trailer = mkv_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS | .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS |
AVFMT_TS_NONSTRICT, AVFMT_TS_NONSTRICT | AVFMT_ALLOW_FLUSH,
.codec_tag = (const AVCodecTag* const []){ .codec_tag = (const AVCodecTag* const []){
ff_codec_bmp_tags, ff_codec_wav_tags, ff_codec_bmp_tags, ff_codec_wav_tags,
additional_audio_tags, additional_video_tags, 0 additional_audio_tags, additional_video_tags, 0
...@@ -1739,10 +1762,10 @@ AVOutputFormat ff_webm_muxer = { ...@@ -1739,10 +1762,10 @@ AVOutputFormat ff_webm_muxer = {
.video_codec = AV_CODEC_ID_VP8, .video_codec = AV_CODEC_ID_VP8,
.subtitle_codec = AV_CODEC_ID_WEBVTT, .subtitle_codec = AV_CODEC_ID_WEBVTT,
.write_header = mkv_write_header, .write_header = mkv_write_header,
.write_packet = mkv_write_packet, .write_packet = mkv_write_flush_packet,
.write_trailer = mkv_write_trailer, .write_trailer = mkv_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS | .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS |
AVFMT_TS_NONSTRICT, AVFMT_TS_NONSTRICT | AVFMT_ALLOW_FLUSH,
.priv_class = &webm_class, .priv_class = &webm_class,
}; };
#endif #endif
...@@ -1764,9 +1787,10 @@ AVOutputFormat ff_matroska_audio_muxer = { ...@@ -1764,9 +1787,10 @@ AVOutputFormat ff_matroska_audio_muxer = {
AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3, AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3,
.video_codec = AV_CODEC_ID_NONE, .video_codec = AV_CODEC_ID_NONE,
.write_header = mkv_write_header, .write_header = mkv_write_header,
.write_packet = mkv_write_packet, .write_packet = mkv_write_flush_packet,
.write_trailer = mkv_write_trailer, .write_trailer = mkv_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NONSTRICT, .flags = AVFMT_GLOBALHEADER | AVFMT_TS_NONSTRICT |
AVFMT_ALLOW_FLUSH,
.codec_tag = (const AVCodecTag* const []){ .codec_tag = (const AVCodecTag* const []){
ff_codec_wav_tags, additional_audio_tags, 0 ff_codec_wav_tags, additional_audio_tags, 0
}, },
......
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
#include "libavutil/avutil.h" #include "libavutil/avutil.h"
#define LIBAVFORMAT_VERSION_MAJOR 55 #define LIBAVFORMAT_VERSION_MAJOR 55
#define LIBAVFORMAT_VERSION_MINOR 13 #define LIBAVFORMAT_VERSION_MINOR 14
#define LIBAVFORMAT_VERSION_MICRO 103 #define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \ LIBAVFORMAT_VERSION_MINOR, \
......
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