On 10/12/14 15:20, Rémi Denis-Courmont wrote:
---
  avconv_vdpau.c | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/avconv_vdpau.c b/avconv_vdpau.c
index 37b50f6..5d7ef36 100644
--- a/avconv_vdpau.c
+++ b/avconv_vdpau.c
@@ -90,9 +90,14 @@ static int vdpau_get_buffer(AVCodecContext *s, AVFrame 
*frame, int flags)
      VDPAUContext        *ctx = ist->hwaccel_ctx;
      VdpVideoSurface *surface;
      VdpStatus err;
+    VdpChromaType chroma;
+    uint32_t width, height;

      av_assert0(frame->format == AV_PIX_FMT_VDPAU);

+    if (av_vdpau_get_surface_parameters(s, &chroma, &width, &height))
+        return AVERROR(ENOTSUP);

Usually ENOSYS is used.

+
      surface = av_malloc(sizeof(*surface));
      if (!surface)
          return AVERROR(ENOMEM);
@@ -108,8 +113,8 @@ static int vdpau_get_buffer(AVCodecContext *s, AVFrame 
*frame, int flags)
      // properly we should keep a pool of surfaces instead of creating
      // them anew for each frame, but since we don't care about speed
      // much in this code, we don't bother
-    err = ctx->video_surface_create(ctx->device, VDP_CHROMA_TYPE_420,
-                                    frame->width, frame->height, surface);
+    err = ctx->video_surface_create(ctx->device, chroma, width, height,
+                                    surface);
      if (err != VDP_STATUS_OK) {
          av_log(NULL, AV_LOG_ERROR, "Error allocating a VDPAU video surface: 
%s\n",
                 ctx->get_error_string(err));

The rest looks fine.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to