} else {
render_node = drmGetRenderDeviceNameFromFd(src_hwctx->fd);
if (!render_node) {
- av_log(ctx, AV_LOG_ERROR, "Failed to find a render node "
- "matching the DRM device.\n");
- return AVERROR(ENODEV);
- }
- fd = open(render_node, O_RDWR);
- if (fd < 0) {
- av_log(ctx, AV_LOG_ERROR, "Failed to open render node %s"
- "matching the DRM device.\n", render_node);
+ av_log(ctx, AV_LOG_VERBOSE, "Using non-render node "
+ "because the device does not have an "
+ "associated render node.\n");
+ fd = src_hwctx->fd;
+ } else {
+ fd = open(render_node, O_RDWR);
+ if (fd < 0) {
+ av_log(ctx, AV_LOG_VERBOSE, "Using non-render node "
+ "because the associated render node "
+ "could not be opened.\n");
+ fd = src_hwctx->fd;
+ } else {
+ av_log(ctx, AV_LOG_VERBOSE, "Using render node %s "
+ "in place of non-render DRM device.\n",
+ render_node);
+ }
free(render_node);
- return AVERROR(errno);
}
- av_log(ctx, AV_LOG_VERBOSE, "Using render node %s in place "
- "of non-render DRM device.\n", render_node);
- free(render_node);
}
}
#else