Allow va to have it's own file descriptor for the VAAPI device
This commit is contained in:
@@ -797,17 +797,19 @@ static void __log(void *level, const char *msg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int vaapi_make_hwdevice_ctx(platf::hwdevice_t *base, AVBufferRef **hw_device_buf) {
|
int vaapi_make_hwdevice_ctx(platf::hwdevice_t *base, AVBufferRef **hw_device_buf) {
|
||||||
auto *priv = (VAAPIDevicePriv *)av_mallocz(sizeof(VAAPIDevicePriv));
|
auto egl = (platf::egl::egl_t *)base;
|
||||||
priv->drm_fd = -1;
|
auto fd = dup(egl->file.el);
|
||||||
priv->drm.fd = -1;
|
|
||||||
|
|
||||||
auto fg = util::fail_guard([priv]() {
|
auto *priv = (VAAPIDevicePriv *)av_mallocz(sizeof(VAAPIDevicePriv));
|
||||||
|
priv->drm_fd = fd;
|
||||||
|
priv->drm.fd = fd;
|
||||||
|
|
||||||
|
auto fg = util::fail_guard([fd, priv]() {
|
||||||
|
close(fd);
|
||||||
av_free(priv);
|
av_free(priv);
|
||||||
});
|
});
|
||||||
|
|
||||||
auto egl = (platf::egl::egl_t *)base;
|
va::display_t display { vaGetDisplayDRM(fd) };
|
||||||
|
|
||||||
va::display_t display { vaGetDisplayDRM(egl->file.el) };
|
|
||||||
if(!display) {
|
if(!display) {
|
||||||
auto render_device = config::video.adapter_name.empty() ? "/dev/dri/renderD128" : config::video.adapter_name.c_str();
|
auto render_device = config::video.adapter_name.empty() ? "/dev/dri/renderD128" : config::video.adapter_name.c_str();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user