Unified · Split
| @@ -333,46 +333,46 @@ static int submit_frame(QSVEncContext *q, const AVFrame *frame, · 332 unmodified lines | ||
| 333 | 333 | |
| 334 | 334 | qf->surface = (mfxFrameSurface1*)qf->frame->data[3]; |
| 335 | 335 | } else { |
| 336 | − /* make a copy if the input is not padded as libmfx requires */ | |
| 337 | − if (frame->height & 31 || frame->linesize[0] & (q->width_align - 1)) { | |
| 338 | − qf->frame->height = FFALIGN(frame->height, 32); | |
| 339 | − qf->frame->width = FFALIGN(frame->width, q->width_align); | |
| 336 | + /* make a copy if the input is not padded as libmfx requires */ | |
| 337 | + if (frame->height & 31 || frame->linesize[0] & (q->width_align - 1)) { | |
| 338 | + qf->frame->height = FFALIGN(frame->height, 32); | |
| 339 | + qf->frame->width = FFALIGN(frame->width, q->width_align); | |
| 340 | 340 | |
| 341 | − ret = ff_get_buffer(q->avctx, qf->frame, AV_GET_BUFFER_FLAG_REF); | |
| 342 | − if (ret < 0) | |
| 343 | − return ret; | |
| 341 | + ret = ff_get_buffer(q->avctx, qf->frame, AV_GET_BUFFER_FLAG_REF); | |
| 342 | + if (ret < 0) | |
| 343 | + return ret; | |
| 344 | 344 | |
| 345 | − qf->frame->height = frame->height; | |
| 346 | − qf->frame->width = frame->width; | |
| 347 | − ret = av_frame_copy(qf->frame, frame); | |
| 348 | − if (ret < 0) { | |
| 349 | − av_frame_unref(qf->frame); | |
| 350 | − return ret; | |
| 345 | + qf->frame->height = frame->height; | |
| 346 | + qf->frame->width = frame->width; | |
| 347 | + ret = av_frame_copy(qf->frame, frame); | |
| 348 | + if (ret < 0) { | |
| 349 | + av_frame_unref(qf->frame); | |
| 350 | + return ret; | |
| 351 | + } | |
| 352 | + } else { | |
| 353 | + ret = av_frame_ref(qf->frame, frame); | |
| 354 | + if (ret < 0) | |
| 355 | + return ret; | |
| 351 | 356 | } |
| 352 | − } else { | |
| 353 | − ret = av_frame_ref(qf->frame, frame); | |
| 354 | − if (ret < 0) | |
| 355 | − return ret; | |
| 356 | − } | |
| 357 | 357 | |
| 358 | − qf->surface_internal.Info = q->param.mfx.FrameInfo; | |
| 358 | + qf->surface_internal.Info = q->param.mfx.FrameInfo; | |
| 359 | 359 | |
| 360 | − qf->surface_internal.Info.PicStruct = | |
| 361 | − !frame->interlaced_frame ? MFX_PICSTRUCT_PROGRESSIVE : | |
| 362 | − frame->top_field_first ? MFX_PICSTRUCT_FIELD_TFF : | |
| 363 | − MFX_PICSTRUCT_FIELD_BFF; | |
| 364 | − if (frame->repeat_pict == 1) | |
| 365 | − qf->surface_internal.Info.PicStruct |= MFX_PICSTRUCT_FIELD_REPEATED; | |
| 366 | − else if (frame->repeat_pict == 2) | |
| 367 | − qf->surface_internal.Info.PicStruct |= MFX_PICSTRUCT_FRAME_DOUBLING; | |
| 368 | − else if (frame->repeat_pict == 4) | |
| 369 | − qf->surface_internal.Info.PicStruct |= MFX_PICSTRUCT_FRAME_TRIPLING; | |
| 360 | + qf->surface_internal.Info.PicStruct = | |
| 361 | + !frame->interlaced_frame ? MFX_PICSTRUCT_PROGRESSIVE : | |
| 362 | + frame->top_field_first ? MFX_PICSTRUCT_FIELD_TFF : | |
| 363 | + MFX_PICSTRUCT_FIELD_BFF; | |
| 364 | + if (frame->repeat_pict == 1) | |
| 365 | + qf->surface_internal.Info.PicStruct |= MFX_PICSTRUCT_FIELD_REPEATED; | |
| 366 | + else if (frame->repeat_pict == 2) | |
| 367 | + qf->surface_internal.Info.PicStruct |= MFX_PICSTRUCT_FRAME_DOUBLING; | |
| 368 | + else if (frame->repeat_pict == 4) | |
| 369 | + qf->surface_internal.Info.PicStruct |= MFX_PICSTRUCT_FRAME_TRIPLING; | |
| 370 | 370 | |
| 371 | − qf->surface_internal.Data.PitchLow = qf->frame->linesize[0]; | |
| 372 | − qf->surface_internal.Data.Y = qf->frame->data[0]; | |
| 373 | − qf->surface_internal.Data.UV = qf->frame->data[1]; | |
| 371 | + qf->surface_internal.Data.PitchLow = qf->frame->linesize[0]; | |
| 372 | + qf->surface_internal.Data.Y = qf->frame->data[0]; | |
| 373 | + qf->surface_internal.Data.UV = qf->frame->data[1]; | |
| 374 | 374 | |
| 375 | − qf->surface = &qf->surface_internal; | |
| 375 | + qf->surface = &qf->surface_internal; | |
| 376 | 376 | } |
| 377 | 377 | |
| 378 | 378 | qf->surface->Data.TimeStamp = av_rescale_q(frame->pts, q->avctx->time_base, (AVRational){1, 90000}); |