vdpau/h264: request MAIN rather than BASELINE VDPAU profile for CBP
authorRémi Denis-Courmont <remi@remlab.net>
Sun, 26 Oct 2014 19:24:12 +0000 (21:24 +0200)
committerAnton Khirnov <anton@khirnov.net>
Tue, 28 Oct 2014 06:06:13 +0000 (07:06 +0100)
The H.264 Constrained Baseline Profile (CBP) is a subset of both the
Main Profile and the Baseline Profile. In principles, a hardware
decoder that supports either of those can decode CBP content. As it
happens, Main is supported by all VDPAU drivers, and Baseline is not.

So favor map CBP to MP for now. Hopefully in the future libvdpau will
offer an explicit choice for CBP.

This fixes bug 757.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
libavcodec/vdpau_h264.c

index b759335..4103328 100644 (file)
@@ -209,10 +209,10 @@ static int vdpau_h264_init(AVCodecContext *avctx)
     uint32_t level = avctx->level;
 
     switch (avctx->profile & ~FF_PROFILE_H264_INTRA) {
-    case FF_PROFILE_H264_CONSTRAINED_BASELINE:
     case FF_PROFILE_H264_BASELINE:
         profile = VDP_DECODER_PROFILE_H264_BASELINE;
         break;
+    case FF_PROFILE_H264_CONSTRAINED_BASELINE:
     case FF_PROFILE_H264_MAIN:
         profile = VDP_DECODER_PROFILE_H264_MAIN;
         break;