summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/avcodec.h8
-rw-r--r--libavcodec/utils.c23
2 files changed, 27 insertions, 4 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index a26534a1db..aa4296d786 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2631,6 +2631,10 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
*/
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 @@ void avcodec_get_context_defaults(AVCodecContext *s);
*/
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 --git a/libavcodec/utils.c b/libavcodec/utils.c
index 50ac861854..0e6efbde6e 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -731,12 +731,19 @@ static const AVOption options[]={
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 @@ void avcodec_get_context_defaults(AVCodecContext *s){
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));