IMHO, this tells that “it’s about time”:
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2025 Jarkko Sakkinen
 * Copyright (c) 2010-2023 IOhannes M. Zmoelnig
 * Copyright (c) 2016 Gavin Qiu
 * Copyright (c) 2016 George Chriss
 * Copyright (c) 2014-2015 Tasos Sahanidis
 * Copyright (c) 2012-2015 Yusuke Ohshima
 * Copyright (c) 2015 Kurt Kiefer
 * Copyright (c) 2015 Michel Promonet
 * Copyright (c) 2015 Paul Brook
 * Copyright (c) 2015 Tom Zerucha
 * Copyright (c) 2013 Aidan Thornton
 * Copyright (c) 2013 Anatolij Gustschin
 * Copyright (c) 2012 Ted Mielczarek
 * Copyright (c) 2012 Anton Novikov
 * Copyright (c) 2011 Stefan Diewald
 * Copyright (c) 2010 Scott Maines
 * Copyright (c) 2009 Gorinich Zmey
 * Copyright (c) 2005-2009 Vasily Levin
 */
        The kref change was internal prequel, and this first API break is the external prequel:
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_VIDEO_LOOP_H
#define _UAPI_LINUX_VIDEO_LOOP_H
#include <linux/types.h>
#include <linux/ioctl.h>
struct video_loop_config {
	__u32 device_nr;
	__u32 device_fd;
	__u32 capabilities;
	__u32 min_width;
	__u32 max_width;
	__u32 min_height;
	__u32 max_height;
	char card_label[32];
};
#define VIDEO_LOOP_CTL_ADD _IOW('v', 0x00, struct video_loop_config)
#define VIDEO_LOOP_CTL_REMOVE _IOW('v', 0x01, __u32)
#endif /* _UAPI_LINUX_VIDEO_LOOP_H */
If you have any comments on the fields, please spare me dude ;-) I don’t expect this to be final as in FINAL. It is good enough for RFC.
Glitches that will be fixed by anonymous inode:
device_fd is still unfilled.capabilities accepts right now only V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT.
VIDEO_LOOP_CTL_REMOVE is ought to be deleted.