Files
libretro/emulators/video_processor.yml
T
Abdessamad Derraz 314b15b4ad fix: type role libretro cores as libretro
2048 and gong (game), radio and video_processor (utility) and the test
cores (test) are libretro builds, but their role sat in type:, which
resolve_platform_cores filters on: all_libretro left them out, so no
platform resolved them and RetroArch's manifest named none, the
--installed-cores gap of issue 87. The role moves to role:, and type
stays libretro: type keeps saying how a profile is built and run, which
the resolver reads, while teaching the resolver that three role values
mean libretro would make type a classification again. The site and
coverage leave test cores out by role. fluidsynth, a library and no
libretro core, keeps type utility. A test keeps every buildbot core
named by RetroArch's resolution.
2026-11-09 23:01:22 +01:00

71 lines
3.6 KiB
YAML

emulator: "V4L2"
type: libretro
role: utility
core_classification: pure_libretro
source: "https://github.com/libretro/libretro-video-processor"
source_mirror: "https://git.libretro.com/libretro/libretro-video-processor"
upstream: "https://github.com/jaredmcneill/libretro-v4l2"
author: "Jared McNeill"
profiled_date: "2026-09-17"
source_commit: "8fe4751f0039a1b645bf750531fcfc234958a7ac"
upstream_commit: "c608ced893583e0a8a8153890f99453fd1647d53"
core_version: "0.0.2"
version_basis:
kind: file
path: "video_processor_v4l2.c"
pattern: '#define LIBRARY_VERSION\s+"([^"]+)"'
display_name: "Video Processor (V4L2)"
cores:
- video_processor
systems: []
notes: |
Capture core for V4L2 devices: a console plugged into a capture card is
shown through the frontend so its scalers and shaders apply to the signal.
The core opens the capture device, requests RGB24 and two mmap buffers,
and converts each dequeued frame to RGB565 for the video callback. Audio
comes from an ALSA capture PCM opened at 48 kHz, S16_LE, two channels, and
is read from the frontend audio callback. There is no emulation, no state
to serialize and no memory map.
ref: video_processor_v4l2.c:299-419, video_processor_v4l2.c:492-529,
video_processor_v4l2.c:531-544, video_processor_v4l2.c:554-698
Both devices are picked from core options built in retro_set_environment.
The video list comes from a udev enumeration of the video4linux subsystem
filtered on the /dev/video prefix, or from a fixed /dev/video0 to
/dev/video3 list when libudev is not compiled in. The audio list comes from
the ALSA PCM hints whose IOID is Input and whose name starts with hw: or
default:. These are device nodes and PCM names, not files: nothing is read
from the system directory, no path is built and no file is opened. The
content handed to retro_load_game is not looked at either: valid_extensions
is NULL, need_fullpath is false and the core never declares no-content
support, so the frontend still asks for a file whose bytes are ignored.
ref: video_processor_v4l2.c:140-205, video_processor_v4l2.c:208-242,
video_processor_v4l2.c:244-268, video_processor_v4l2.c:448-455
The frame rate is the frameperiod of the active V4L2 standard and the
pixel aspect comes from VIDIOC_CROPCAP. retro_get_region reports NTSC when
the standard carries the NTSC bit and PAL otherwise. A device that does not
enumerate its active standard makes retro_load_game fail.
ref: video_processor_v4l2.c:457-480, video_processor_v4l2.c:593-617,
video_processor_v4l2.c:728-731
Linux only, through linux/videodev2.h. libv4l2, ALSA and libudev are each
autodetected by the Makefile and dropped when their header is missing;
without libv4l2 the raw ioctl path is used and the format conversion the
library provides is lost. The GitLab CI installs the three development
packages, and the buildbot binary for linux x86_64 links libv4l2.so.0,
libasound.so.2 and libudev.so.1. RetroArch also compiles a diverged copy of
this core into its own binary under cores/libretro-video-processor when
HAVE_VIDEOPROCESSOR is set. That copy declares no-content support and adds
capture and output mode options, and opens the same device nodes only.
ref: video_processor_v4l2.c:45-57, Makefile:107-124
Written by Jared McNeill in July 2016 as libretro-v4l2. The libretro fork
carries the author's last commits, the audio batch callback and the ALSA
overrun recovery, then the 2026 CI and dependency autodetection change. The
original repository stopped at the RGB24 conversion commit.
files: []
source_ref: "video_processor_v4l2.c:27-28, .gitlab-ci.yml:19"