Hello everyone,
I'm trying both encode/decode h264 stream for live streaming.
I really don't know how to use the hardware encoder cuda nor nvenc nor 
dxva2 and i do not find any documentation on that.

1) I already compiled ffmpeg '2017-02-28 snapshot) with
--enable-cuda \
--enable-cuvid \
--enable-nvenc \
--enable-dxva2 \

2) How to use it in the code
My code (i removed every check) :
====================================
AnsiString url = "rtmp://srv-streaming.tv:1935/streaming/";
avformat_alloc_output_context2(&oc, NULL, "flv", url.c_str());

fmt = oc->oformat;
fmt->video_codec = AV_CODEC_ID_H264;
video_codec = avcodec_find_encoder(fmt->video_codec);
st = avformat_new_stream(oc, video_codec);
st->codec = avcodec_alloc_context3(video_codec);

c->hwaccel = ff_find_hwaccel(c->codec_id, c->pix_fmt); // < Here, i 
set the hwaccel but it do not change anything.

ret = avcodec_open2(c, video_codec, &opts);
ret = avio_open2(&oc->pb, url.c_str(), AVIO_FLAG_WRITE, NULL, NULL);

// And here the funciton :
AVHWAccel *ff_find_hwaccel(enum AVCodecID codec_id, enum AVPixelFormat pix_fmt)
{
    AVHWAccel *hwaccel=NULL;
    while((hwaccel = av_hwaccel_next(hwaccel))){
        if (   
hwaccel->id      == codec_id
            && 
hwaccel->pix_fmt == AV_PIX_FMT_CUDA)
            return hwaccel;
        if (   
hwaccel->id      == codec_id
            && 
hwaccel->pix_fmt == AV_PIX_FMT_DXVA2_VLD)
            return hwaccel;
    }
    return NULL;
}
====================================
But with or without the c->hwaccel the GPU is not used anymore !

Thank you very much for your help,
Best regards,
Alexandre.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to