Browse Source

avcodec/cuvid: set width and height before calling get_format

The external hw_frames_ctx is initialized in that callback, and needs
that information to be accurate.
tags/n3.3
Timo Rothenpieler 8 years ago
parent
commit
ce79410bba
1 changed files with 4 additions and 3 deletions
  1. +4
    -3
      libavcodec/cuvid.c

+ 4
- 3
libavcodec/cuvid.c View File

@@ -113,6 +113,10 @@ static int CUDAAPI cuvid_handle_video_sequence(void *opaque, CUVIDEOFORMAT* form


ctx->internal_error = 0; ctx->internal_error = 0;


// width and height need to be set before calling ff_get_format
avctx->width = format->display_area.right;
avctx->height = format->display_area.bottom;

switch (format->bit_depth_luma_minus8) { switch (format->bit_depth_luma_minus8) {
case 0: // 8-bit case 0: // 8-bit
pix_fmts[1] = AV_PIX_FMT_NV12; pix_fmts[1] = AV_PIX_FMT_NV12;
@@ -156,9 +160,6 @@ static int CUDAAPI cuvid_handle_video_sequence(void *opaque, CUVIDEOFORMAT* form
hwframe_ctx = (AVHWFramesContext*)ctx->hwframe->data; hwframe_ctx = (AVHWFramesContext*)ctx->hwframe->data;
} }


avctx->width = format->display_area.right;
avctx->height = format->display_area.bottom;

ff_set_sar(avctx, av_div_q( ff_set_sar(avctx, av_div_q(
(AVRational){ format->display_aspect_ratio.x, format->display_aspect_ratio.y }, (AVRational){ format->display_aspect_ratio.x, format->display_aspect_ratio.y },
(AVRational){ avctx->width, avctx->height })); (AVRational){ avctx->width, avctx->height }));


Loading…
Cancel
Save