--- libavformat/mov.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
diff --git a/libavformat/mov.c b/libavformat/mov.c index 47af98c..2223c81 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -3912,6 +3912,11 @@ static int mov_read_uuid(MOVContext *c, AVIOContext *pb, MOVAtom atom) 0xbe, 0x7a, 0xcf, 0xcb, 0x97, 0xa9, 0x42, 0xe8, 0x9c, 0x71, 0x99, 0x94, 0x91, 0xe3, 0xaf, 0xac }; + static const uint8_t uuid_spherical[] = { + 0xFF, 0xCC, 0x82, 0x63, 0xF8, 0x55, 0x4A, 0x93, + 0x88, 0x14, 0x58, 0x7A, 0x02, 0x52, 0x1F, 0xDD + }; + if (atom.size < sizeof(uuid) || atom.size == INT64_MAX) return AVERROR_INVALIDDATA; @@ -3987,6 +3992,27 @@ static int mov_read_uuid(MOVContext *c, AVIOContext *pb, MOVAtom atom) av_dict_set(&c->fc->metadata, "xmp", buffer, 0); } av_free(buffer); + } else if (!memcmp(uuid, uuid_spherical, sizeof(uuid))) { + uint8_t *buffer; + size_t len = atom.size - sizeof(uuid); + + buffer = av_mallocz(len + 1); + if (!buffer) { + return AVERROR(ENOMEM); + } + ret = avio_read(pb, buffer, len); + if (ret < 0) { + av_free(buffer); + return ret; + } else if (ret != len) { + av_free(buffer); + return AVERROR_INVALIDDATA; + } + if (c->export_all) { + buffer[len] = '\0'; + av_dict_set(&c->fc->metadata, "spherical", buffer, 0); + } + av_free(buffer); } return 0; } -- 2.6.3 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel