Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Sheth__Dhrumil
Beginner
221 Views

h264_qsv did't take pix_fmt AV_PIX_FMT_BGRA

Jump to solution

Hello,

I have a hardware i9-9900k with widows 10 sdk.

I have installed Media SDK 2019R1.

ffmpeg latest 4.2 sdk.

My problem is when I set pix_fmt = nv12, avcodec_open2 returns the 0 value. But if I set pix_fmt AV_PIX_FMT_BGRA it returns -22.

Please help me why it didn't support AV_PIX_FMT_BGRA.

In sample code of Intel encode it is support bgra format.

    AVBufferRef *encode_device = NULL;

   AVCodecContext * Codec_Context_GPU;
    int ret = 0;
    const AVCodec *codec;
    avcodec_register_all();
    AVHWDeviceType Device_Type = AV_HWDEVICE_TYPE_QSV;     

    ret = av_hwdevice_ctx_create(&encode_device, Device_Type , NULL, NULL, 0);   

    codec = avcodec_find_encoder_by_name("h264_qsv");   

    Codec_Context_GPU = avcodec_alloc_context3(codec);
   
    Codec_Context_GPU->bit_rate = 2000000;                                          
    Codec_Context_GPU->width = 1920;
    Codec_Context_GPU->height = 1080;    

    Codec_Context_GPU->framerate.num = 25;
    Codec_Context_GPU->framerate.den = 1;   
    Codec_Context_GPU->time_base.num = Codec_Context_GPU->framerate.den;
    Codec_Context_GPU->time_base.den = Codec_Context_GPU->framerate.num; 
    Codec_Context_GPU->hw_device_ctx = av_buffer_ref(encode_device);       
    Codec_Context_GPU->pix_fmt = AV_PIX_FMT_NV12;//AV_PIX_FMT_BGRA;//AV_PIX_FMT_NV12;

    ret = avcodec_open2(Codec_Context_GPU, codec, NULL);
    if (ret < 0)
    {
        LogException(L"Could not open codec: %s\n");
    }

0 Kudos
1 Solution
Mark_L_Intel1
Moderator
221 Views

Hi Dhrumil,

In case of MSDK sample code, it supports BGRA because it configures the color conversion function of VPP at the output of debug. The decoder as an independent module can only output NV12.

Hope this helps.

Mark

View solution in original post

4 Replies
Mark_L_Intel1
Moderator
222 Views

Hi Dhrumil,

In case of MSDK sample code, it supports BGRA because it configures the color conversion function of VPP at the output of debug. The decoder as an independent module can only output NV12.

Hope this helps.

Mark

View solution in original post

Sheth__Dhrumil
Beginner
221 Views

Thanks Liu Mark for reply. 

Can I take BGRA Raw frame into ffmpeg encoder using vpp?

If yes, Could you provide sample code for that.

Thanks

Mark_L_Intel1
Moderator
221 Views

Hi Dhrumil,

I don't use ffmpeg a lot and this forum is for Media SDK only, but I found following command, I hope useful:

> ffmpeg -init_hw_device qsv=qsv:MFX_IMPL_hw_any -hwaccel qsv -filter_hw_device qsv -vcodec h264_qsv -i input-file -acodec aac -ac 2 -b:a 48k -vcodec h264_qsv -b:v 2000k -vf "hwupload=extra_hw_frames=10,scale_qsv=960:720" -g 25 -r 25.0 -f flv > output-file

I got this from following post:

https://lists.ffmpeg.org/pipermail/ffmpeg-user/2018-June/040279.html

Let me know if this helps.

Mark

Sheth__Dhrumil
Beginner
221 Views

Thanks for reply Liu,

This is a ffmpeg command line (File based) for intel qvc. We need stream based ffmpeg code lines just like mention above.

Once again thanks for  try to find out ffmpeg lines.

Reply