mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-24 08:12:44 +00:00
avformat/matroskaenc: Avoid allocation for small dynamic buffers
By using avio_get_dyn_buf() + ffio_free_dyn_buf() instead of avio_close_dyn_buf() + av_free() one can avoid an allocation + copy for small dynamic buffers (i.e. small master elements). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
aad82270b6
commit
3a58ec7c77
@ -845,11 +845,11 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb,
|
|||||||
ff_put_wav_header(s, dyn_cp, par, FF_PUT_WAV_HEADER_FORCE_WAVEFORMATEX);
|
ff_put_wav_header(s, dyn_cp, par, FF_PUT_WAV_HEADER_FORCE_WAVEFORMATEX);
|
||||||
}
|
}
|
||||||
|
|
||||||
codecpriv_size = avio_close_dyn_buf(dyn_cp, &codecpriv);
|
codecpriv_size = avio_get_dyn_buf(dyn_cp, &codecpriv);
|
||||||
if (codecpriv_size)
|
if (codecpriv_size)
|
||||||
put_ebml_binary(pb, MATROSKA_ID_CODECPRIVATE, codecpriv,
|
put_ebml_binary(pb, MATROSKA_ID_CODECPRIVATE, codecpriv,
|
||||||
codecpriv_size);
|
codecpriv_size);
|
||||||
av_free(codecpriv);
|
ffio_free_dyn_buf(&dyn_cp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -933,13 +933,13 @@ static int mkv_write_video_color(AVIOContext *pb, AVCodecParameters *par, AVStre
|
|||||||
end_ebml_master(dyn_cp, meta_element);
|
end_ebml_master(dyn_cp, meta_element);
|
||||||
}
|
}
|
||||||
|
|
||||||
colorinfo_size = avio_close_dyn_buf(dyn_cp, &colorinfo_ptr);
|
colorinfo_size = avio_get_dyn_buf(dyn_cp, &colorinfo_ptr);
|
||||||
if (colorinfo_size) {
|
if (colorinfo_size) {
|
||||||
ebml_master colorinfo = start_ebml_master(pb, MATROSKA_ID_VIDEOCOLOR, colorinfo_size);
|
ebml_master colorinfo = start_ebml_master(pb, MATROSKA_ID_VIDEOCOLOR, colorinfo_size);
|
||||||
avio_write(pb, colorinfo_ptr, colorinfo_size);
|
avio_write(pb, colorinfo_ptr, colorinfo_size);
|
||||||
end_ebml_master(pb, colorinfo);
|
end_ebml_master(pb, colorinfo);
|
||||||
}
|
}
|
||||||
av_free(colorinfo_ptr);
|
ffio_free_dyn_buf(&dyn_cp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user