+ av_free(buffer);
+ } else if (!memcmp(uuid, uuid_xmp, 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_xmp) {
+ buffer[len] = '\0';
+ av_dict_set(&c->fc->metadata, "xmp", buffer, 0);
+ }