summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2017-03-12 15:06:07 +0000
committerMark Thompson <sw@jkqxz.net>2017-03-12 15:06:07 +0000
commit723a542d6c67de2946dbb7f782393c8c2bee8e0b (patch)
treef704692743523137f8c8986462e6cf4f94b2aeca /libavcodec
parent562f386c77151d5d59151071106170589bce8e63 (diff)
parentd9ec3c60143babe1bb77c268e1d5547d15acd69b (diff)
Merge commit 'd9ec3c60143babe1bb77c268e1d5547d15acd69b'
* commit 'd9ec3c60143babe1bb77c268e1d5547d15acd69b': qsvenc: take only the allocated dimensions from the frames context Merged-by: Mark Thompson <sw@jkqxz.net>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/qsvenc.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index f794e3a392..6e67a24212 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -347,6 +347,9 @@ static int rc_supported(QSVEncContext *q)
static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
{
+ enum AVPixelFormat sw_format = avctx->pix_fmt == AV_PIX_FMT_QSV ?
+ avctx->sw_pix_fmt : avctx->pix_fmt;
+ const AVPixFmtDescriptor *desc;
float quant;
int ret;
@@ -372,34 +375,31 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
q->param.mfx.EncodedOrder = 0;
q->param.mfx.BufferSizeInKB = 0;
+ desc = av_pix_fmt_desc_get(sw_format);
+ if (!desc)
+ return AVERROR_BUG;
+
+ ff_qsv_map_pixfmt(sw_format, &q->param.mfx.FrameInfo.FourCC);
+
+ q->param.mfx.FrameInfo.Width = FFALIGN(avctx->width, q->width_align);
+ q->param.mfx.FrameInfo.Height = FFALIGN(avctx->height, 32);
+ q->param.mfx.FrameInfo.CropX = 0;
+ q->param.mfx.FrameInfo.CropY = 0;
+ q->param.mfx.FrameInfo.CropW = avctx->width;
+ q->param.mfx.FrameInfo.CropH = avctx->height;
+ q->param.mfx.FrameInfo.AspectRatioW = avctx->sample_aspect_ratio.num;
+ q->param.mfx.FrameInfo.AspectRatioH = avctx->sample_aspect_ratio.den;
+ q->param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE;
+ q->param.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420;
+ q->param.mfx.FrameInfo.BitDepthLuma = desc->comp[0].depth;
+ q->param.mfx.FrameInfo.BitDepthChroma = desc->comp[0].depth;
+ q->param.mfx.FrameInfo.Shift = desc->comp[0].depth > 8;
+
if (avctx->hw_frames_ctx) {
AVHWFramesContext *frames_ctx = (AVHWFramesContext*)avctx->hw_frames_ctx->data;
AVQSVFramesContext *frames_hwctx = frames_ctx->hwctx;
- q->param.mfx.FrameInfo = frames_hwctx->surfaces[0].Info;
- } else {
- enum AVPixelFormat sw_format = avctx->pix_fmt == AV_PIX_FMT_QSV ?
- avctx->sw_pix_fmt : avctx->pix_fmt;
- const AVPixFmtDescriptor *desc;
-
- desc = av_pix_fmt_desc_get(sw_format);
- if (!desc)
- return AVERROR_BUG;
-
- ff_qsv_map_pixfmt(sw_format, &q->param.mfx.FrameInfo.FourCC);
-
- q->param.mfx.FrameInfo.Width = FFALIGN(avctx->width, q->width_align);
- q->param.mfx.FrameInfo.Height = FFALIGN(avctx->height, 32);
- q->param.mfx.FrameInfo.CropX = 0;
- q->param.mfx.FrameInfo.CropY = 0;
- q->param.mfx.FrameInfo.CropW = avctx->width;
- q->param.mfx.FrameInfo.CropH = avctx->height;
- q->param.mfx.FrameInfo.AspectRatioW = avctx->sample_aspect_ratio.num;
- q->param.mfx.FrameInfo.AspectRatioH = avctx->sample_aspect_ratio.den;
- q->param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE;
- q->param.mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420;
- q->param.mfx.FrameInfo.BitDepthLuma = desc->comp[0].depth;
- q->param.mfx.FrameInfo.BitDepthChroma = desc->comp[0].depth;
- q->param.mfx.FrameInfo.Shift = desc->comp[0].depth > 8;
+ q->param.mfx.FrameInfo.Width = frames_hwctx->surfaces[0].Info.Width;
+ q->param.mfx.FrameInfo.Height = frames_hwctx->surfaces[0].Info.Height;
}
if (avctx->framerate.den > 0 && avctx->framerate.num > 0) {