diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-01-20 16:33:17 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-01-20 18:31:59 +0100 |
commit | 7512293cf912c65fa657eab680afd5e18fd47603 (patch) | |
tree | 0d447b2c8be9f9064370cd91da08fef794d39958 /libavformat/matroskaenc.c | |
parent | 0f5fd44dc9b41d6019cab5d2eb92dd370fe565fb (diff) | |
download | ffmpeg-7512293cf912c65fa657eab680afd5e18fd47603.tar.gz |
avformat/matroskaenc: Fix writing AV_SPHERICAL_EQUIRECTANGULAR
According to the documentation, the ISOBMFF 'equi' box must
be present for equirectangular projections.
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavformat/matroskaenc.c')
-rw-r--r-- | libavformat/matroskaenc.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 8c10a8c133..38d9485288 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1305,17 +1305,21 @@ static void mkv_write_video_projection(AVFormatContext *s, EbmlWriter *writer, switch (spherical->projection) { case AV_SPHERICAL_EQUIRECTANGULAR: - ebml_writer_add_uint(writer, MATROSKA_ID_VIDEOPROJECTIONTYPE, - MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR); - break; case AV_SPHERICAL_EQUIRECTANGULAR_TILE: ebml_writer_add_uint(writer, MATROSKA_ID_VIDEOPROJECTIONTYPE, MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR); 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); + if (spherical->projection == AV_SPHERICAL_EQUIRECTANGULAR) { + AV_WB32(private + 4, 0); + AV_WB32(private + 8, 0); + AV_WB32(private + 12, 0); + AV_WB32(private + 16, 0); + } else { + 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); + } ebml_writer_add_bin(writer, MATROSKA_ID_VIDEOPROJECTIONPRIVATE, private, 20); break; |