Message ID | 20200101005837.11356-4-andreas.rheinhardt@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | Matroska muxer patches | expand |
Context | Check | Description |
---|---|---|
andriy/ffmpeg-patchwork | success | Make fate finished |
On 12/31/2019 9:58 PM, Andreas Rheinhardt wrote: > Write a few numbers directly via AV_WB32 instead of using an AVIOContext > (that is initialized only for this very purpose) to write these numbers > at known offsets into a fixed buffer. > > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> > --- > libavformat/matroskaenc.c | 23 ++++++++++------------- > 1 file changed, 10 insertions(+), 13 deletions(-) > > diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c > index bbf9b55e78..d51c8cbebf 100644 > --- a/libavformat/matroskaenc.c > +++ b/libavformat/matroskaenc.c > @@ -946,7 +946,6 @@ static int mkv_write_video_color(AVIOContext *pb, AVCodecParameters *par, AVStre > static int mkv_write_video_projection(AVFormatContext *s, AVIOContext *pb, > AVStream *st) > { > - AVIOContext b; > ebml_master projection; > int side_data_size = 0; > uint8_t private[20]; > @@ -976,26 +975,24 @@ static int mkv_write_video_projection(AVFormatContext *s, AVIOContext *pb, > MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR); > break; > case AV_SPHERICAL_EQUIRECTANGULAR_TILE: > - ffio_init_context(&b, private, 20, 1, NULL, NULL, NULL, NULL); > put_ebml_uint(pb, MATROSKA_ID_VIDEOPROJECTIONTYPE, > MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR); > - avio_wb32(&b, 0); // version + flags > - avio_wb32(&b, spherical->bound_top); > - avio_wb32(&b, spherical->bound_bottom); > - avio_wb32(&b, spherical->bound_left); > - avio_wb32(&b, spherical->bound_right); > + AV_WB32(private , 0); // version + flags > + AV_WB32(private + 4, spherical->bound_top); > + AV_WB32(private + 8, spherical->bound_bottom); > + AV_WB32(private + 12, spherical->bound_left); > + AV_WB32(private + 16, spherical->bound_right); > put_ebml_binary(pb, MATROSKA_ID_VIDEOPROJECTIONPRIVATE, > - private, avio_tell(&b)); > + private, 20); > break; > case AV_SPHERICAL_CUBEMAP: > - ffio_init_context(&b, private, 12, 1, NULL, NULL, NULL, NULL); > put_ebml_uint(pb, MATROSKA_ID_VIDEOPROJECTIONTYPE, > MATROSKA_VIDEO_PROJECTION_TYPE_CUBEMAP); > - avio_wb32(&b, 0); // version + flags > - avio_wb32(&b, 0); // layout > - avio_wb32(&b, spherical->padding); > + AV_WB32(private , 0); // version + flags > + AV_WB32(private + 4, 0); // layout > + AV_WB32(private + 8, spherical->padding); > put_ebml_binary(pb, MATROSKA_ID_VIDEOPROJECTIONPRIVATE, > - private, avio_tell(&b)); > + private, 12); > break; > } Pushed.
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index bbf9b55e78..d51c8cbebf 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -946,7 +946,6 @@ static int mkv_write_video_color(AVIOContext *pb, AVCodecParameters *par, AVStre static int mkv_write_video_projection(AVFormatContext *s, AVIOContext *pb, AVStream *st) { - AVIOContext b; ebml_master projection; int side_data_size = 0; uint8_t private[20]; @@ -976,26 +975,24 @@ static int mkv_write_video_projection(AVFormatContext *s, AVIOContext *pb, MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR); break; case AV_SPHERICAL_EQUIRECTANGULAR_TILE: - ffio_init_context(&b, private, 20, 1, NULL, NULL, NULL, NULL); put_ebml_uint(pb, MATROSKA_ID_VIDEOPROJECTIONTYPE, MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR); - avio_wb32(&b, 0); // version + flags - avio_wb32(&b, spherical->bound_top); - avio_wb32(&b, spherical->bound_bottom); - avio_wb32(&b, spherical->bound_left); - avio_wb32(&b, spherical->bound_right); + AV_WB32(private , 0); // version + flags + AV_WB32(private + 4, spherical->bound_top); + AV_WB32(private + 8, spherical->bound_bottom); + AV_WB32(private + 12, spherical->bound_left); + AV_WB32(private + 16, spherical->bound_right); put_ebml_binary(pb, MATROSKA_ID_VIDEOPROJECTIONPRIVATE, - private, avio_tell(&b)); + private, 20); break; case AV_SPHERICAL_CUBEMAP: - ffio_init_context(&b, private, 12, 1, NULL, NULL, NULL, NULL); put_ebml_uint(pb, MATROSKA_ID_VIDEOPROJECTIONTYPE, MATROSKA_VIDEO_PROJECTION_TYPE_CUBEMAP); - avio_wb32(&b, 0); // version + flags - avio_wb32(&b, 0); // layout - avio_wb32(&b, spherical->padding); + AV_WB32(private , 0); // version + flags + AV_WB32(private + 4, 0); // layout + AV_WB32(private + 8, spherical->padding); put_ebml_binary(pb, MATROSKA_ID_VIDEOPROJECTIONPRIVATE, - private, avio_tell(&b)); + private, 12); break; }
Write a few numbers directly via AV_WB32 instead of using an AVIOContext (that is initialized only for this very purpose) to write these numbers at known offsets into a fixed buffer. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> --- libavformat/matroskaenc.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-)