Browse Source

lavc: add support for codec-specific defaults.

tags/n0.9
Anton Khirnov 14 years ago
parent
commit
84626b364b
3 changed files with 23 additions and 0 deletions
  1. +7
    -0
      libavcodec/avcodec.h
  2. +5
    -0
      libavcodec/internal.h
  3. +11
    -0
      libavcodec/options.c

+ 7
- 0
libavcodec/avcodec.h View File

@@ -2860,6 +2860,8 @@ typedef struct AVProfile {
const char *name; ///< short name for the profile
} AVProfile;

typedef struct AVCodecDefault AVCodecDefault;

/**
* AVCodec.
*/
@@ -2922,6 +2924,11 @@ typedef struct AVCodec {
*/
int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src);
/** @} */

/**
* Private codec-specific defaults.
*/
const AVCodecDefault *defaults;
} AVCodec;

/**


+ 5
- 0
libavcodec/internal.h View File

@@ -27,6 +27,11 @@
#include <stdint.h>
#include "avcodec.h"

struct AVCodecDefault {
const uint8_t *key;
const uint8_t *value;
};

/**
* Determine whether pix_fmt is a hardware accelerated format.
*/


+ 11
- 0
libavcodec/options.c View File

@@ -25,6 +25,8 @@
*/

#include "avcodec.h"
#include "internal.h"
#include "libavutil/avassert.h"
#include "libavutil/opt.h"
#include <float.h> /* FLT_MIN, FLT_MAX */

@@ -524,6 +526,15 @@ int avcodec_get_context_defaults3(AVCodecContext *s, AVCodec *codec){
av_opt_set_defaults(s->priv_data);
}
}
if (codec && codec->defaults) {
int ret;
AVCodecDefault *d = codec->defaults;
while (d->key) {
ret = av_set_string3(s, d->key, d->value, 0, NULL);
av_assert0(ret >= 0);
d++;
}
}
return 0;
}



Loading…
Cancel
Save