comparison avcodec.h @ 8520:a0164882aa38 libavcodec

Generic metadata API. avi is updated as example. No version bump, the API still might change slightly ... No update to ffmpeg.c as requested by aurel.
author michael
date Sun, 04 Jan 2009 18:48:37 +0000
parents f2c406b05158
children 42179b2cfd09
comparison
equal deleted inserted replaced
8519:cc64e1343397 8520:a0164882aa38
397 /** 397 /**
398 * minimum encoding buffer size 398 * minimum encoding buffer size
399 * Used to avoid some checks during header writing. 399 * Used to avoid some checks during header writing.
400 */ 400 */
401 #define FF_MIN_BUFFER_SIZE 16384 401 #define FF_MIN_BUFFER_SIZE 16384
402
403
404 /*
405 * public Metadata API.
406 * Important concepts, to keep in mind
407 * 1. keys are unique, there are never 2 tags with equal keys, this is also
408 * meant semantically that is a demuxer should not knowingly produce
409 * several keys that are litterally different but semantically identical,
410 * like key=Author5, key=Author6.
411 * All authors have to be placed in the same tag for the case of Authors.
412 * 2. Metadata is flat, there are no subtags, if you for whatever obscene
413 * reason want to store the email address of the child of producer alice
414 * and actor bob, that could have key=alice_and_bobs_childs_email_address.
415 * 3. A tag whichs value is translated has the ISO 639 3-letter language code
416 * with a '-' between appended. So for example Author-ger=Michael, Author-eng=Mike
417 * the original/default language is in the unqualified "Author"
418 * A demuxer should set a default if it sets any translated tag.
419 */
420
421 #define AV_METADATA_IGNORE_CASE 1
422 #define AV_METADATA_IGNORE_SUFFIX 2
423
424 typedef struct {
425 char *key;
426 char *value;
427 }AVMetaDataTag;
428
429 struct AVMetaData;
430
431 /**
432 * gets a metadata element with matching key.
433 * @param prev set to the previous matching element to find the next.
434 * @param flags allows case as well as suffix insensitive comparissions.
435 * @return found tag or NULL, changing key or value leads to undefined behavior.
436 */
437 AVMetaDataTag *
438 av_metadata_get(struct AVMetaData *m, const char *key, const AVMetaDataTag *prev, int flags);
439
440 /**
441 * sets the given tag in m, overwriting an existing tag.
442 * @param tag tag to add to m, key and value will be av_strduped.
443 * @return >= 0 if success otherwise error code that is <0.
444 */
445 int av_metadata_set(struct AVMetaData **m, AVMetaDataTag tag);
446
402 447
403 /** 448 /**
404 * motion estimation type. 449 * motion estimation type.
405 */ 450 */
406 enum Motion_Est_ID { 451 enum Motion_Est_ID {