diff --git a/src/screencast/pipewire_screencast.c b/src/screencast/pipewire_screencast.c index ba3b0e5..906dcdf 100644 --- a/src/screencast/pipewire_screencast.c +++ b/src/screencast/pipewire_screencast.c @@ -85,15 +85,6 @@ static void pwr_on_event(void *data, uint64_t expirations) { h->dts_offset = 0; } - d[0].type = SPA_DATA_MemPtr; - d[0].maxsize = cast->simple_frame.size; - d[0].mapoffset = 0; - d[0].chunk->size = cast->simple_frame.size; - d[0].chunk->stride = cast->simple_frame.stride; - d[0].chunk->offset = 0; - d[0].flags = 0; - d[0].fd = -1; - writeFrameData(d[0].data, cast->simple_frame.data, cast->simple_frame.height, cast->simple_frame.stride, cast->simple_frame.y_invert); @@ -178,6 +169,18 @@ static void pwr_handle_stream_add_buffer(void *data, struct pw_buffer *buffer) { } else { logprint(ERROR, "pipewire: unsupported buffer type"); cast->err = 1; + return; + } + + // Prepare buffer for choosen type + if (d[0].type == SPA_DATA_MemPtr) { + d[0].maxsize = cast->simple_frame.size; + d[0].mapoffset = 0; + d[0].chunk->size = cast->simple_frame.size; + d[0].chunk->stride = cast->simple_frame.stride; + d[0].chunk->offset = 0; + d[0].flags = 0; + d[0].fd = -1; } }