mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-14 13:07:54 +00:00
[host] linux: add skeleton pipewire capture backend
This commit is contained in:
parent
4b3aaa7e0c
commit
28eae3bd86
4 changed files with 128 additions and 2 deletions
|
@ -3,7 +3,19 @@ project(capture LANGUAGES C)
|
|||
|
||||
include("PreCapture")
|
||||
|
||||
add_capture("XCB")
|
||||
option(USE_XCB "Enable XSHM Support" ON)
|
||||
option(USE_PIPEWIRE "Enable Pipewire Support" OFF)
|
||||
|
||||
if (USE_XCB)
|
||||
add_capture("XCB")
|
||||
endif()
|
||||
|
||||
if (USE_PIPEWIRE)
|
||||
add_capture("pipewire")
|
||||
endif()
|
||||
|
||||
add_feature_info(USE_XCB USE_XCB "XCB/XSHM capture backend.")
|
||||
add_feature_info(USE_PIPEWIRE USE_PIPEWIRE "Pipewire Screencast capture backend.")
|
||||
|
||||
include("PostCapture")
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ struct xcb
|
|||
xcb_xfixes_get_cursor_image_cookie_t curC;
|
||||
};
|
||||
|
||||
struct xcb * this = NULL;
|
||||
static struct xcb * this = NULL;
|
||||
|
||||
// forwards
|
||||
|
||||
|
|
15
host/platform/Linux/capture/pipewire/CMakeLists.txt
Normal file
15
host/platform/Linux/capture/pipewire/CMakeLists.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
cmake_minimum_required(VERSION 3.0)
|
||||
project(capture_pipewire LANGUAGES C)
|
||||
|
||||
add_library(capture_pipewire STATIC
|
||||
src/pipewire.c
|
||||
)
|
||||
|
||||
target_link_libraries(capture_pipewire
|
||||
lg_common
|
||||
)
|
||||
|
||||
target_include_directories(capture_pipewire
|
||||
PRIVATE
|
||||
src
|
||||
)
|
99
host/platform/Linux/capture/pipewire/src/pipewire.c
Normal file
99
host/platform/Linux/capture/pipewire/src/pipewire.c
Normal file
|
@ -0,0 +1,99 @@
|
|||
/**
|
||||
* Looking Glass
|
||||
* Copyright © 2017-2021 The Looking Glass Authors
|
||||
* https://looking-glass.io
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc., 59
|
||||
* Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "interface/capture.h"
|
||||
#include "interface/platform.h"
|
||||
#include "common/debug.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
struct pipewire
|
||||
{
|
||||
};
|
||||
|
||||
static struct pipewire * this = NULL;
|
||||
|
||||
// forwards
|
||||
|
||||
static bool pipewire_deinit();
|
||||
|
||||
// implementation
|
||||
|
||||
static const char * pipewire_getName(void)
|
||||
{
|
||||
return "Pipewire";
|
||||
}
|
||||
|
||||
static bool pipewire_create(CaptureGetPointerBuffer getPointerBufferFn, CapturePostPointerBuffer postPointerBufferFn)
|
||||
{
|
||||
DEBUG_ASSERT(!this);
|
||||
this = calloc(1, sizeof(*this));
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool pipewire_init(void)
|
||||
{
|
||||
goto fail;
|
||||
fail:
|
||||
pipewire_deinit();
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool pipewire_deinit(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static void pipewire_free(void)
|
||||
{
|
||||
free(this);
|
||||
this = NULL;
|
||||
}
|
||||
|
||||
static CaptureResult pipewire_capture(void)
|
||||
{
|
||||
return CAPTURE_RESULT_ERROR;
|
||||
}
|
||||
|
||||
static CaptureResult pipewire_waitFrame(CaptureFrame * frame,
|
||||
const size_t maxFrameSize)
|
||||
{
|
||||
return CAPTURE_RESULT_ERROR;
|
||||
}
|
||||
|
||||
static CaptureResult pipewire_getFrame(FrameBuffer * frame,
|
||||
const unsigned int height, int frameIndex)
|
||||
{
|
||||
return CAPTURE_RESULT_ERROR;
|
||||
}
|
||||
|
||||
struct CaptureInterface Capture_pipewire =
|
||||
{
|
||||
.shortName = "pipewire",
|
||||
.asyncCapture = false,
|
||||
.getName = pipewire_getName,
|
||||
.create = pipewire_create,
|
||||
.init = pipewire_init,
|
||||
.deinit = pipewire_deinit,
|
||||
.free = pipewire_free,
|
||||
.capture = pipewire_capture,
|
||||
.waitFrame = pipewire_waitFrame,
|
||||
.getFrame = pipewire_getFrame
|
||||
};
|
Loading…
Reference in a new issue