diff options
author | James Almer <jamrial@gmail.com> | 2015-05-04 18:37:50 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2015-05-04 18:39:51 -0300 |
commit | 079b7f6eacc09bc2813fc1ddc230ab05022b69c2 (patch) | |
tree | 2f99ffce6bec7e9d1b29c248f77ca7733959adc7 /libavcodec | |
parent | b4cc7d67f564417af5da99c894a305d1fdd75d51 (diff) | |
download | ffmpeg-079b7f6eacc09bc2813fc1ddc230ab05022b69c2.tar.gz |
vp9: add profile names
Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/avcodec.h | 3 | ||||
-rw-r--r-- | libavcodec/version.h | 2 | ||||
-rw-r--r-- | libavcodec/vp9.c | 22 |
3 files changed, 18 insertions, 9 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 8c7c4201a6..3d5e82d691 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2912,6 +2912,9 @@ typedef struct AVCodecContext { #define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 #define FF_PROFILE_HEVC_REXT 4 +#define FF_PROFILE_VP9_0 0 +#define FF_PROFILE_VP9_1 1 + /** * level * - encoding: Set by user. diff --git a/libavcodec/version.h b/libavcodec/version.h index 41c41451c7..a4aa547845 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 56 -#define LIBAVCODEC_VERSION_MINOR 36 +#define LIBAVCODEC_VERSION_MINOR 37 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index 71ed4e64d8..c2ac997970 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -107,7 +107,6 @@ typedef struct VP9Context { ptrdiff_t y_stride, uv_stride; // bitstream header - uint8_t profile; uint8_t keyframe, last_keyframe; uint8_t invisible; uint8_t use_last_frame_mvs; @@ -481,7 +480,7 @@ static enum AVPixelFormat read_colorspace_details(AVCodecContext *ctx) ctx->colorspace = colorspaces[get_bits(&s->gb, 3)]; if (ctx->colorspace == AVCOL_SPC_RGB) { // RGB = profile 1 - if (s->profile == 1) { + if (ctx->profile == 1) { s->ss_h = s->ss_v = 1; res = AV_PIX_FMT_GBRP; ctx->color_range = AVCOL_RANGE_JPEG; @@ -495,7 +494,7 @@ static enum AVPixelFormat read_colorspace_details(AVCodecContext *ctx) { AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV420P }, }; ctx->color_range = get_bits1(&s->gb) ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG; - if (s->profile == 1) { + if (ctx->profile == 1) { s->ss_h = get_bits1(&s->gb); s->ss_v = get_bits1(&s->gb); if ((res = pix_fmt_for_ss[s->ss_v][s->ss_h]) == AV_PIX_FMT_YUV420P) { @@ -532,10 +531,10 @@ static int decode_frame_header(AVCodecContext *ctx, av_log(ctx, AV_LOG_ERROR, "Invalid frame marker\n"); return AVERROR_INVALIDDATA; } - s->profile = get_bits1(&s->gb); - s->profile |= get_bits1(&s->gb) << 1; - if (s->profile > 1) { - av_log(ctx, AV_LOG_ERROR, "Profile %d is not yet supported\n", s->profile); + ctx->profile = get_bits1(&s->gb); + ctx->profile |= get_bits1(&s->gb) << 1; + if (ctx->profile > 1) { + av_log(ctx, AV_LOG_ERROR, "Profile %d is not yet supported\n", ctx->profile); return AVERROR_INVALIDDATA; } if (get_bits1(&s->gb)) { @@ -569,7 +568,7 @@ static int decode_frame_header(AVCodecContext *ctx, av_log(ctx, AV_LOG_ERROR, "Invalid sync code\n"); return AVERROR_INVALIDDATA; } - if (s->profile == 1) { + if (ctx->profile == 1) { if ((fmt = read_colorspace_details(ctx)) < 0) return fmt; } else { @@ -4080,6 +4079,12 @@ static int vp9_decode_update_thread_context(AVCodecContext *dst, const AVCodecCo return 0; } +static const AVProfile profiles[] = { + { FF_PROFILE_VP9_0, "Profile 0" }, + { FF_PROFILE_VP9_1, "Profile 1" }, + { FF_PROFILE_UNKNOWN }, +}; + AVCodec ff_vp9_decoder = { .name = "vp9", .long_name = NULL_IF_CONFIG_SMALL("Google VP9"), @@ -4093,4 +4098,5 @@ AVCodec ff_vp9_decoder = { .flush = vp9_decode_flush, .init_thread_copy = ONLY_IF_THREADS_ENABLED(vp9_decode_init_thread_copy), .update_thread_context = ONLY_IF_THREADS_ENABLED(vp9_decode_update_thread_context), + .profiles = NULL_IF_CONFIG_SMALL(profiles), }; |