Commit 0215006a authored by Hendrik Leppkes's avatar Hendrik Leppkes Committed by Mans Rullgard

VC1: Export profile/level

Signed-off-by: 's avatarMans Rullgard <mans@mansr.com>
parent 5dbe78bf
...@@ -2314,6 +2314,11 @@ typedef struct AVCodecContext { ...@@ -2314,6 +2314,11 @@ typedef struct AVCodecContext {
#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) #define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA)
#define FF_PROFILE_H264_CAVLC_444 44 #define FF_PROFILE_H264_CAVLC_444 44
#define FF_PROFILE_VC1_SIMPLE 0
#define FF_PROFILE_VC1_MAIN 1
#define FF_PROFILE_VC1_COMPLEX 2
#define FF_PROFILE_VC1_ADVANCED 3
/** /**
* level * level
* - encoding: Set by user. * - encoding: Set by user.
......
...@@ -3098,6 +3098,10 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx) ...@@ -3098,6 +3098,10 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx)
return -1; return -1;
} }
} }
avctx->profile = v->profile;
if (v->profile == PROFILE_ADVANCED)
avctx->level = v->level;
avctx->has_b_frames= !!(avctx->max_b_frames); avctx->has_b_frames= !!(avctx->max_b_frames);
s->low_delay = !avctx->has_b_frames; s->low_delay = !avctx->has_b_frames;
...@@ -3345,6 +3349,13 @@ static av_cold int vc1_decode_end(AVCodecContext *avctx) ...@@ -3345,6 +3349,13 @@ static av_cold int vc1_decode_end(AVCodecContext *avctx)
return 0; return 0;
} }
static const AVProfile profiles[] = {
{ FF_PROFILE_VC1_SIMPLE, "Simple" },
{ FF_PROFILE_VC1_MAIN, "Main" },
{ FF_PROFILE_VC1_COMPLEX, "Complex" },
{ FF_PROFILE_VC1_ADVANCED, "Advanced" },
{ FF_PROFILE_UNKNOWN },
};
AVCodec ff_vc1_decoder = { AVCodec ff_vc1_decoder = {
"vc1", "vc1",
...@@ -3358,7 +3369,8 @@ AVCodec ff_vc1_decoder = { ...@@ -3358,7 +3369,8 @@ AVCodec ff_vc1_decoder = {
CODEC_CAP_DR1 | CODEC_CAP_DELAY, CODEC_CAP_DR1 | CODEC_CAP_DELAY,
NULL, NULL,
.long_name = NULL_IF_CONFIG_SMALL("SMPTE VC-1"), .long_name = NULL_IF_CONFIG_SMALL("SMPTE VC-1"),
.pix_fmts = ff_hwaccel_pixfmt_list_420 .pix_fmts = ff_hwaccel_pixfmt_list_420,
.profiles = NULL_IF_CONFIG_SMALL(profiles)
}; };
#if CONFIG_WMV3_DECODER #if CONFIG_WMV3_DECODER
...@@ -3374,7 +3386,8 @@ AVCodec ff_wmv3_decoder = { ...@@ -3374,7 +3386,8 @@ AVCodec ff_wmv3_decoder = {
CODEC_CAP_DR1 | CODEC_CAP_DELAY, CODEC_CAP_DR1 | CODEC_CAP_DELAY,
NULL, NULL,
.long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9"), .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9"),
.pix_fmts = ff_hwaccel_pixfmt_list_420 .pix_fmts = ff_hwaccel_pixfmt_list_420,
.profiles = NULL_IF_CONFIG_SMALL(profiles)
}; };
#endif #endif
...@@ -3391,7 +3404,8 @@ AVCodec ff_wmv3_vdpau_decoder = { ...@@ -3391,7 +3404,8 @@ AVCodec ff_wmv3_vdpau_decoder = {
CODEC_CAP_DR1 | CODEC_CAP_DELAY | CODEC_CAP_HWACCEL_VDPAU, CODEC_CAP_DR1 | CODEC_CAP_DELAY | CODEC_CAP_HWACCEL_VDPAU,
NULL, NULL,
.long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9 VDPAU"), .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9 VDPAU"),
.pix_fmts = (const enum PixelFormat[]){PIX_FMT_VDPAU_WMV3, PIX_FMT_NONE} .pix_fmts = (const enum PixelFormat[]){PIX_FMT_VDPAU_WMV3, PIX_FMT_NONE},
.profiles = NULL_IF_CONFIG_SMALL(profiles)
}; };
#endif #endif
...@@ -3408,6 +3422,7 @@ AVCodec ff_vc1_vdpau_decoder = { ...@@ -3408,6 +3422,7 @@ AVCodec ff_vc1_vdpau_decoder = {
CODEC_CAP_DR1 | CODEC_CAP_DELAY | CODEC_CAP_HWACCEL_VDPAU, CODEC_CAP_DR1 | CODEC_CAP_DELAY | CODEC_CAP_HWACCEL_VDPAU,
NULL, NULL,
.long_name = NULL_IF_CONFIG_SMALL("SMPTE VC-1 VDPAU"), .long_name = NULL_IF_CONFIG_SMALL("SMPTE VC-1 VDPAU"),
.pix_fmts = (const enum PixelFormat[]){PIX_FMT_VDPAU_VC1, PIX_FMT_NONE} .pix_fmts = (const enum PixelFormat[]){PIX_FMT_VDPAU_VC1, PIX_FMT_NONE},
.profiles = NULL_IF_CONFIG_SMALL(profiles)
}; };
#endif #endif
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