Add CODEC_CAP_EXPERIMENTAL and prefer encoders without it.

Patch by Janne Grunau, janne-ffmpeg jannau net

Originally committed as revision 23334 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Janne Grunau 2010-05-26 10:38:48 +00:00 committed by Carl Eugen Hoyos
parent 1ed87f800f
commit 93ebfeea90
2 changed files with 13 additions and 4 deletions

View File

@ -645,6 +645,11 @@ typedef struct RcOverride{
* as a last resort.
*/
#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.
#define MB_TYPE_INTRA4x4 0x0001

View File

@ -725,14 +725,18 @@ av_cold int avcodec_close(AVCodecContext *avctx)
AVCodec *avcodec_find_encoder(enum CodecID id)
{
AVCodec *p;
AVCodec *p, *experimental=NULL;
p = first_avcodec;
while (p) {
if (p->encode != NULL && p->id == id)
return p;
if (p->encode != NULL && p->id == id) {
if (p->capabilities & CODEC_CAP_EXPERIMENTAL && !experimental) {
experimental = p;
} else
return p;
}
p = p->next;
}
return NULL;
return experimental;
}
AVCodec *avcodec_find_encoder_by_name(const char *name)