On Fri, 2015-03-06 at 13:24 -0800, Mark Reid wrote: > +static int mxf_read_indirect_value(void *arg, AVIOContext *pb, int size) > +{ > + MXFTaggedValue *tagged_value = arg; > + uint8_t key[17]; > + > + if (size <= 17) > + return 0; > + > + avio_read(pb, key, 17);
Really Avid, 17 byte keys? OK.. > + /* TODO: handle other types of of indirect values */ > + if (memcmp(key, mxf_indirect_value_utf16le, 17) == 0) { > + return mxf_read_utf16le_string(pb, size - 17, &tagged_value->value); > + } else if (memcmp(key, mxf_indirect_value_utf16be, 17) == 0) { > + return mxf_read_utf16be_string(pb, size - 17, &tagged_value->value); > + } > + return 0; > +} > +static int mxf_parse_package_comments(MXFContext *mxf, AVDictionary **pm, > MXFPackage *package) > +{ > + MXFTaggedValue *tag; > + int size, i; > + const char *prefix = "comment_"; > + char *key = NULL; > + > + for (i = 0; i < package->comment_count; i++) { > + tag = mxf_resolve_strong_ref(mxf, &package->comment_refs[i], > TaggedValue); > + if (!tag || !tag->name || !tag->value) > + continue; > + > + size = strlen(prefix) + strlen(tag->name) + 1; > + key = av_mallocz(size); > + if (!key) > + return AVERROR(ENOMEM); > + > + strcpy(key, prefix); > + strlcat(key, tag->name, size); snprintf() would make this one line only, or use av_strlcat() like Michael suggests. Come to think of it, I'm not sure snprintf() exists on all platforms.. > + av_dict_set(pm, key, tag->value, AV_DICT_DONT_STRDUP_KEY); > + } > + return 0; > +} Looks good overall, even if I wasn't aware of this Avid feature before. /Tomas
signature.asc
Description: This is a digitally signed message part
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel