X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Futils.c;h=b4c9404e3ead71073900a788518aff40bbaf4d8b;hb=971701d4fc01ff756c41f3fd451fe776e7ec94f4;hp=405fc313188ac73f5c54ea99fcb68b2dab54bf99;hpb=aedc908601de7396751a9a4504e064782d9f6a0b;p=ffmpeg diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 405fc313188..b4c9404e3ea 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -166,6 +166,7 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, int l case PIX_FMT_YUV444P9BE: case PIX_FMT_YUV444P10LE: case PIX_FMT_YUV444P10BE: + case PIX_FMT_GBR24P: w_align= 16; //FIXME check for non mpeg style codecs and use less alignment h_align= 16; if(s->codec_id == CODEC_ID_MPEG2VIDEO || s->codec_id == CODEC_ID_MJPEG || s->codec_id == CODEC_ID_AMV || s->codec_id == CODEC_ID_THP || s->codec_id == CODEC_ID_H264 || s->codec_id == CODEC_ID_PRORES) @@ -223,7 +224,7 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, int l #if HAVE_MMX if(s->codec_id == CODEC_ID_SVQ1 || s->codec_id == CODEC_ID_VP5 || s->codec_id == CODEC_ID_VP6 || s->codec_id == CODEC_ID_VP6F || - s->codec_id == CODEC_ID_VP6A) { + s->codec_id == CODEC_ID_VP6A || s->codec_id == CODEC_ID_DIRAC) { linesize_align[0] = linesize_align[1] = linesize_align[2] = 16; @@ -395,6 +396,7 @@ int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic){ pic->width = s->width; pic->height = s->height; pic->format = s->pix_fmt; + pic->opaque = s->opaque; if(s->debug&FF_DEBUG_BUFFERS) av_log(s, AV_LOG_DEBUG, "default_get_buffer called on pic %p, %d buffers used\n", pic, s->internal_buffer_count); @@ -610,6 +612,16 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVD goto free_and_end; } avctx->frame_number = 0; +#if FF_API_ER + + av_log(avctx, AV_LOG_DEBUG, "err{or,}_recognition separate: %d; %d\n", + avctx->error_recognition, avctx->err_recognition); + /* FF_ER_CAREFUL (==1) implies AV_EF_CRCCHECK (== 1<<1 - 1), + FF_ER_COMPLIANT (==2) implies AV_EF_{CRCCHECK,BITSTREAM} (== 1<<2 - 1), et cetera} */ + avctx->err_recognition |= (1<<(avctx->error_recognition-(avctx->error_recognition>=FF_ER_VERY_AGGRESSIVE))) - 1; + av_log(avctx, AV_LOG_DEBUG, "err{or,}_recognition combined: %d; %d\n", + avctx->error_recognition, avctx->err_recognition); +#endif if (!HAVE_THREADS) av_log(avctx, AV_LOG_WARNING, "Warning: not compiled with thread support, using thread emulation\n"); @@ -943,10 +955,21 @@ av_cold int avcodec_close(AVCodecContext *avctx) return 0; } +static enum CodecID remap_deprecated_codec_id(enum CodecID id) +{ + switch(id){ + case CODEC_ID_G723_1_DEPRECATED : return CODEC_ID_G723_1; + case CODEC_ID_G729_DEPRECATED : return CODEC_ID_G729; + case CODEC_ID_UTVIDEO_DEPRECATED: return CODEC_ID_UTVIDEO; + default : return id; + } +} + AVCodec *avcodec_find_encoder(enum CodecID id) { AVCodec *p, *experimental=NULL; p = first_avcodec; + id= remap_deprecated_codec_id(id); while (p) { if (p->encode != NULL && p->id == id) { if (p->capabilities & CODEC_CAP_EXPERIMENTAL && !experimental) { @@ -977,6 +1000,7 @@ AVCodec *avcodec_find_decoder(enum CodecID id) { AVCodec *p, *experimental=NULL; p = first_avcodec; + id= remap_deprecated_codec_id(id); while (p) { if (p->decode != NULL && p->id == id) { if (p->capabilities & CODEC_CAP_EXPERIMENTAL && !experimental) { @@ -1413,6 +1437,12 @@ int avcodec_thread_init(AVCodecContext *s, int thread_count) enum AVMediaType avcodec_get_type(enum CodecID codec_id) { + AVCodec *c= avcodec_find_decoder(codec_id); + if(!c) + c= avcodec_find_encoder(codec_id); + if(c) + return c->type; + if (codec_id <= CODEC_ID_NONE) return AVMEDIA_TYPE_UNKNOWN; else if (codec_id < CODEC_ID_FIRST_AUDIO)