On 5/20/2020 3:10 AM, Martin Storsjö wrote: > Sticking a full frame in the extradata works, as the code for writing > the avcC/hvcC extracts the relevant parameter set NAL units - provided > that they actually exist in the frame. > > Some encoders don't provide split out extradata directly on init (or > at all). In particular, the MediaFoundation encoder wrapper doesn't > always (depending on the actual encoder device) - this is the case for > Qualcomm's HEVC encoder on SD835, and also on some QSV H264 encoders). > > This only works for cases where the moov hasn't already been written > (e.g. when not writing fragmented mp4 with empty_moov, unless using > the delay_moov option). > > Signed-off-by: Martin Storsjö <mar...@martin.st> > --- > libavformat/movenc.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/libavformat/movenc.c b/libavformat/movenc.c > index 27d7621e27..6a85440a3f 100644 > --- a/libavformat/movenc.c > +++ b/libavformat/movenc.c > @@ -5584,7 +5584,9 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket > *pkt) > > if ((par->codec_id == AV_CODEC_ID_DNXHD || > par->codec_id == AV_CODEC_ID_TRUEHD || > - par->codec_id == AV_CODEC_ID_AC3) && !trk->vos_len) { > + par->codec_id == AV_CODEC_ID_AC3 || > + par->codec_id == AV_CODEC_ID_H264 || > + par->codec_id == AV_CODEC_ID_HEVC) && !trk->vos_len) {
nit: You could add the h264 and hevc lines above the truehd one, and get a smaller diff. LGTM either way. > /* copy frame to create needed atoms */ > trk->vos_len = size; > trk->vos_data = av_malloc(size + AV_INPUT_BUFFER_PADDING_SIZE); > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".