# HG changeset patch # User michael # Date 1173259784 0 # Node ID 1416371d4a6cd11700a73d41236fad49ce56d01a # Parent 2faa1399dd68fcb162e55d4295f311146b6d6aef add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter also mark them as NOT part of the public API yet, so we can change their argument to CodecID if we decide to do so diff -r 2faa1399dd68 -r 1416371d4a6c avcodec.h --- a/avcodec.h Wed Mar 07 02:21:35 2007 +0000 +++ b/avcodec.h Wed Mar 07 09:29:44 2007 +0000 @@ -2631,6 +2631,10 @@ */ void avcodec_get_context_defaults(AVCodecContext *s); +/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! */ +void avcodec_get_context_defaults2(AVCodecContext *s, enum CodecType); + /** * Allocates an AVCodecContext and sets its fields to default values. The * resulting struct can be deallocated by simply calling av_free(). @@ -2640,6 +2644,10 @@ */ AVCodecContext *avcodec_alloc_context(void); +/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! + * we WILL change its arguments and name a few times! */ +AVCodecContext *avcodec_alloc_context2(enum CodecType); + /** * Sets the fields of the given AVFrame to default values. * diff -r 2faa1399dd68 -r 1416371d4a6c utils.c --- a/utils.c Wed Mar 07 02:21:35 2007 +0000 +++ b/utils.c Wed Mar 07 09:29:44 2007 +0000 @@ -731,12 +731,19 @@ static AVClass av_codec_context_class = { "AVCodecContext", context_to_name, options }; -void avcodec_get_context_defaults(AVCodecContext *s){ +void avcodec_get_context_defaults2(AVCodecContext *s, enum CodecType codec_type){ + int flags=0; memset(s, 0, sizeof(AVCodecContext)); s->av_class= &av_codec_context_class; - av_opt_set_defaults(s); + if(codec_type == CODEC_TYPE_AUDIO) + flags= AV_OPT_FLAG_AUDIO_PARAM; + else if(codec_type == CODEC_TYPE_VIDEO) + flags= AV_OPT_FLAG_VIDEO_PARAM; + else if(codec_type == CODEC_TYPE_SUBTITLE) + flags= AV_OPT_FLAG_SUBTITLE_PARAM; + av_opt_set_defaults2(s, flags, flags); s->rc_eq= "tex^qComp"; s->time_base= (AVRational){0,1}; @@ -752,16 +759,24 @@ s->reget_buffer= avcodec_default_reget_buffer; } -AVCodecContext *avcodec_alloc_context(void){ +AVCodecContext *avcodec_alloc_context2(enum CodecType codec_type){ AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext)); if(avctx==NULL) return NULL; - avcodec_get_context_defaults(avctx); + avcodec_get_context_defaults2(avctx, codec_type); return avctx; } +void avcodec_get_context_defaults(AVCodecContext *s){ + avcodec_get_context_defaults2(s, CODEC_TYPE_UNKNOWN); +} + +AVCodecContext *avcodec_alloc_context(void){ + return avcodec_alloc_context2(CODEC_TYPE_UNKNOWN); +} + void avcodec_get_frame_defaults(AVFrame *pic){ memset(pic, 0, sizeof(AVFrame));