On 12/13/2017 07:14 PM, James Almer wrote: > Signed-off-by: James Almer <jamr...@gmail.com> > --- > libavformat/matroskaenc.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > This only has an effect when muxing h265 streams originating from the > libx265 wrapper atm, as no other encoder or demuxer currently sets > the flag. > > I compared the output of our muxer with the latest mkvmerge, and in > the latter a few more SimpleBlocks were flagged as discardable than > by our muxer after this patch. > I can't say if our libx265 wrapper is not properly flagging what it > should, or if mkvmerge's parser is flagging more frames than it > should. > > diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c > index f22c2ab70c..915ef3c107 100644 > --- a/libavformat/matroskaenc.c > +++ b/libavformat/matroskaenc.c > @@ -2100,7 +2100,8 @@ static void mkv_write_block(AVFormatContext *s, > AVIOContext *pb, > MatroskaMuxContext *mkv = s->priv_data; > AVCodecParameters *par = s->streams[pkt->stream_index]->codecpar; > uint8_t *data = NULL, *side_data = NULL; > - int offset = 0, size = pkt->size, side_data_size = 0; > + const int discardable = !!(pkt->flags & AV_PKT_FLAG_DISPOSABLE); > + int offset = 0, size = pkt->size, side_data_size = 0, flags = 0; > int64_t ts = mkv->tracks[pkt->stream_index].write_dts ? pkt->dts : > pkt->pts; > uint64_t additional_id = 0; > int64_t discard_padding = 0; > @@ -2160,12 +2161,15 @@ static void mkv_write_block(AVFormatContext *s, > AVIOContext *pb, > blockid = MATROSKA_ID_BLOCK; > } > > + if (blockid == MATROSKA_ID_SIMPLEBLOCK) > + flags = (keyframe << 7) | discardable; > + > put_ebml_id(pb, blockid); > put_ebml_num(pb, size + 4, 0); > // this assumes stream_index is less than 126 > avio_w8(pb, 0x80 | track_number); > avio_wb16(pb, ts - mkv->cluster_pts); > - avio_w8(pb, (blockid == MATROSKA_ID_SIMPLEBLOCK && keyframe) ? (1 << 7) > : 0); > + avio_w8(pb, flags); > avio_write(pb, data + offset, size); > if (data != pkt->data) > av_free(data);
LGTM. FYI, I have a pending patch that does the same thing (in a slightly different way) as well as a patch for reading the discardable flag from mkv files. But I wanted to wait till my other patches related to the discardable flag were fully reviewed and accepted before adding more to the list. As a reminder, there is still a patch to set discardable flag in the x264 encoder, a patch to read the flag in mp4 and a patch to use the flag in ffplay that are not yet accepted, though there are no unresolved comments for these patch submissions. -- John GnuPG fingerprint: D0EC B3DB C372 D1F1 0B01 83F0 49F1 D7B2 60D4 D0F7
signature.asc
Description: OpenPGP digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel