Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions plugins/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ elseif(OS_LINUX)
add_subdirectory(linux-jack)
add_subdirectory(linux-alsa)
add_subdirectory(linux-pipewire)
add_subdirectory(linux-virtualcam)
add_subdirectory(decklink)
add_subdirectory(vlc-video)
add_subdirectory(sndio)
Expand Down
2 changes: 1 addition & 1 deletion plugins/linux-v4l2/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ add_library(linux-v4l2 MODULE)
add_library(OBS::v4l2 ALIAS linux-v4l2)

target_sources(linux-v4l2 PRIVATE linux-v4l2.c v4l2-controls.c v4l2-input.c
v4l2-helpers.c v4l2-output.c v4l2-decoder.c)
v4l2-helpers.c v4l2-decoder.c)

target_link_libraries(
linux-v4l2 PRIVATE OBS::libobs LIB4L2::LIB4L2 FFmpeg::avcodec
Expand Down
19 changes: 1 addition & 18 deletions plugins/linux-v4l2/linux-v4l2.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,36 +15,19 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <obs-module.h>
#include <util/platform.h>

OBS_DECLARE_MODULE()
OBS_MODULE_USE_DEFAULT_LOCALE("linux-v4l2", "en-US")
MODULE_EXPORT const char *obs_module_description(void)
{
return "Video4Linux2(V4L2) sources/virtual camera";
return "Video4Linux2(V4L2) sources";
}

extern struct obs_source_info v4l2_input;
extern struct obs_output_info virtualcam_info;
extern bool loopback_module_available();

bool obs_module_load(void)
{
obs_register_source(&v4l2_input);

obs_data_t *obs_settings = obs_data_create();

if (loopback_module_available()) {
obs_register_output(&virtualcam_info);
obs_data_set_bool(obs_settings, "vcamEnabled", true);
} else {
obs_data_set_bool(obs_settings, "vcamEnabled", false);
blog(LOG_WARNING,
"v4l2loopback not installed, virtual camera disabled");
}

obs_apply_private_data(obs_settings);
obs_data_release(obs_settings);

return true;
}
24 changes: 24 additions & 0 deletions plugins/linux-virtualcam/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
project(linux-virtualcam)

option(ENABLE_VIRTUALCAM "Build OBS Virtualcam (Linux)" ON)

if(NOT ENABLE_VIRTUALCAM)
obs_status(DISABLED "linux-virtualcam")
return()
endif()

find_package(ALSA REQUIRED)
find_package(Libv4l2 REQUIRED)

add_library(linux-virtualcam MODULE)
add_library(OBS::virtualcam ALIAS linux-virtualcam)

target_sources(linux-virtualcam PRIVATE alsa-output.c v4l2-output.c
linux-virtualcam.c)

target_link_libraries(linux-virtualcam PRIVATE OBS::libobs LIB4L2::LIB4L2
ALSA::ALSA)

set_target_properties(linux-virtualcam PROPERTIES FOLDER "plugins")

setup_plugin_target(linux-virtualcam)
Loading