Commit d6c45291 authored by cehoyos's avatar cehoyos

Add CODEC_CAP_EXPERIMENTAL and prefer encoders without it.

Patch by Janne Grunau, janne-ffmpeg jannau net 


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@23334 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent dd2e39b2
...@@ -645,6 +645,11 @@ typedef struct RcOverride{ ...@@ -645,6 +645,11 @@ typedef struct RcOverride{
* as a last resort. * as a last resort.
*/ */
#define CODEC_CAP_SUBFRAMES 0x0100 #define CODEC_CAP_SUBFRAMES 0x0100
/**
* Codec is experimental and is thus avoided in favor of non experimental
* encoders
*/
#define CODEC_CAP_EXPERIMENTAL 0x0200
//The following defines may change, don't expect compatibility if you use them. //The following defines may change, don't expect compatibility if you use them.
#define MB_TYPE_INTRA4x4 0x0001 #define MB_TYPE_INTRA4x4 0x0001
......
...@@ -725,14 +725,18 @@ av_cold int avcodec_close(AVCodecContext *avctx) ...@@ -725,14 +725,18 @@ av_cold int avcodec_close(AVCodecContext *avctx)
AVCodec *avcodec_find_encoder(enum CodecID id) AVCodec *avcodec_find_encoder(enum CodecID id)
{ {
AVCodec *p; AVCodec *p, *experimental=NULL;
p = first_avcodec; p = first_avcodec;
while (p) { while (p) {
if (p->encode != NULL && p->id == id) if (p->encode != NULL && p->id == id) {
return p; if (p->capabilities & CODEC_CAP_EXPERIMENTAL && !experimental) {
experimental = p;
} else
return p;
}
p = p->next; p = p->next;
} }
return NULL; return experimental;
} }
AVCodec *avcodec_find_encoder_by_name(const char *name) AVCodec *avcodec_find_encoder_by_name(const char *name)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment