Skip to content

Commit

Permalink
[libva] incomplete support for h265/10 bits
Browse files Browse the repository at this point in the history
  • Loading branch information
mean committed Oct 16, 2016
1 parent ff92a4e commit b68664e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
13 changes: 12 additions & 1 deletion avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_libva.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavutil/pixfmt.h"
#include "libavutil/pixdesc.h"
#include "libavcodec/vaapi.h"
}

Expand Down Expand Up @@ -294,9 +295,15 @@ static enum AVPixelFormat ADM_LIBVA_getFormat(struct AVCodecContext *avctx, con
for(i=0;fmt[i]!=AV_PIX_FMT_NONE;i++)
{
c=fmt[i];
ADM_info("[LIBVA]: Evaluating %d\n",c);
char name[300]={0};
av_get_pix_fmt_string(name,sizeof(name),c);
ADM_info("[LIBVA]: Evaluating PIX_FMT %d,%s\n",c,name);
if(c!=AV_PIX_FMT_VAAPI_VLD) continue;
#define FMT_V_CHECK(x,y) case AV_CODEC_ID_##x: outPix=AV_PIX_FMT_VAAPI_VLD;id=avctx->codec_id;break;


av_get_codec_tag_string(name,sizeof(name),avctx->codec_id);
ADM_info("\t Evaluating codec %d,%s\n",avctx->codec_id,name);
switch(avctx->codec_id)
{
FMT_V_CHECK(H264,H264)
Expand All @@ -307,13 +314,15 @@ static enum AVPixelFormat ADM_LIBVA_getFormat(struct AVCodecContext *avctx, con
FMT_V_CHECK(VC1,VC1)
FMT_V_CHECK(VP9,VP9)
default:
ADM_info("No hw support for format %d\n",avctx->codec_id);
continue;
break;
}
break;
}
if(id==AV_CODEC_ID_NONE)
{

return AV_PIX_FMT_NONE;
}
// Finish intialization of LIBVA decoder
Expand Down Expand Up @@ -567,6 +576,8 @@ bool ADM_hwAccelEntryLibVA::canSupportThis(struct AVCodecContext *avct
#ifdef ADM_VA_HAS_VP9
case AV_CODEC_ID_VP9: profile= VAProfileVP9Profile3;break;
#endif
default:
return false;
}
if(!admLibVA::supported(profile))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ namespace ADM_coreLibVA
VADisplay display;
VAConfigID configH264;
VAConfigID configH265;
VAConfigID configH26510Bits;
VAConfigID configVC1;
VAConfigID configVP9;
VAImageFormat imageFormatNV12;
Expand Down Expand Up @@ -301,6 +302,9 @@ bool admLibVA::setupConfig(void)
checkProfile(VAProfileH264High, &ADM_coreLibVA::configH264,"H264 Hight");
checkProfile(VAProfileHEVCMain, &ADM_coreLibVA::configH265,"HEVC Main");
checkProfile(VAProfileVC1Advanced, &ADM_coreLibVA::configVC1 ,"VC1");
checkProfile(VAProfileHEVCMain10, &ADM_coreLibVA::configH26510Bits ,"H265 10Bits");


#ifdef ADM_VA_HAS_VP9
checkProfile(VAProfileVP9Profile3, &ADM_coreLibVA::configVP9 ,"VP9");
#endif
Expand Down Expand Up @@ -380,6 +384,7 @@ bool admLibVA::fillContext(VAProfile profile ,vaapi_context *c)
{
case VAProfileH264High: cid=ADM_coreLibVA::configH264;break;
case VAProfileHEVCMain: cid=ADM_coreLibVA::configH265;break;
case VAProfileHEVCMain10: cid=ADM_coreLibVA::configH26510Bits;break;
case VAProfileVC1Advanced: cid=ADM_coreLibVA::configVC1;break;
#ifdef ADM_VA_HAS_VP9
case VAProfileVP9Profile3: cid=ADM_coreLibVA::configVP9;break;
Expand Down Expand Up @@ -471,6 +476,7 @@ bool admLibVA::supported(VAProfile profile)
{
SUPSUP(VAProfileH264High,configH264)
SUPSUP(VAProfileHEVCMain,configH265)
SUPSUP(VAProfileHEVCMain10,configH26510Bits)
SUPSUP(VAProfileVC1Advanced,configVC1)
#ifdef ADM_VA_HAS_VP9
SUPSUP(VAProfileVP9Profile3,configVP9)
Expand Down Expand Up @@ -499,6 +505,7 @@ VAContextID admLibVA::createDecoder(VAProfile profile,int width, int heig
{
case VAProfileH264High: cid=ADM_coreLibVA::configH264;break;
case VAProfileHEVCMain: cid=ADM_coreLibVA::configH265;break;
case VAProfileHEVCMain10: cid=ADM_coreLibVA::configH26510Bits;break;
case VAProfileVC1Advanced: cid=ADM_coreLibVA::configVC1;break;
#ifdef ADM_VA_HAS_VP9
case VAProfileVP9Profile3: cid=ADM_coreLibVA::configVP9;break;
Expand Down

0 comments on commit b68664e

Please sign in to comment.