mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
make test app work again
Some cleanups and removal of unused code
This commit is contained in:
parent
1169c2419b
commit
98679cbd53
6 changed files with 38 additions and 189 deletions
|
|
@ -1269,12 +1269,5 @@ pinos_stream_send_buffer (PinosStream *stream,
|
|||
g_return_val_if_fail (PINOS_IS_STREAM (stream), FALSE);
|
||||
g_return_val_if_fail (buffer != NULL, FALSE);
|
||||
|
||||
#if 0
|
||||
if (!spa_control_write (priv->fd, buffer, &error)) {
|
||||
g_warning ("stream %p: failed to write buffer: %s", stream, error->message);
|
||||
g_clear_error (&error);
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -207,7 +207,6 @@ static void
|
|||
setup_node (PinosSpaV4l2Source *this)
|
||||
{
|
||||
PinosNode *node = PINOS_NODE (this);
|
||||
PinosSpaV4l2SourcePrivate *priv = this->priv;
|
||||
SpaResult res;
|
||||
SpaProps *props;
|
||||
SpaPropValue value;
|
||||
|
|
@ -226,94 +225,6 @@ setup_node (PinosSpaV4l2Source *this)
|
|||
g_debug ("got set_props error %d", res);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static SpaResult
|
||||
negotiate_formats (PinosSpaV4l2Source *this)
|
||||
{
|
||||
PinosNode *node = PINOS_NODE (this);
|
||||
PinosSpaV4l2SourcePrivate *priv = this->priv;
|
||||
SpaResult res;
|
||||
SpaFormat *format;
|
||||
SpaProps *props;
|
||||
uint32_t val;
|
||||
SpaPropValue value;
|
||||
void *state = NULL;
|
||||
SpaFraction frac;
|
||||
SpaRectangle rect;
|
||||
const gchar *str;
|
||||
|
||||
if ((res = spa_node_port_enum_formats (node->node, 0, &format, NULL, &state)) < 0)
|
||||
return res;
|
||||
|
||||
props = &format->props;
|
||||
|
||||
value.type = SPA_PROP_TYPE_UINT32;
|
||||
value.size = sizeof (uint32_t);
|
||||
value.value = &val;
|
||||
|
||||
val = SPA_VIDEO_FORMAT_YUY2;
|
||||
if ((res = spa_props_set_prop (props, spa_props_index_for_id (props, SPA_PROP_ID_VIDEO_FORMAT), &value)) < 0)
|
||||
return res;
|
||||
|
||||
value.type = SPA_PROP_TYPE_RECTANGLE;
|
||||
value.size = sizeof (SpaRectangle);
|
||||
value.value = ▭
|
||||
rect.width = 320;
|
||||
rect.height = 240;
|
||||
if ((res = spa_props_set_prop (props, spa_props_index_for_id (props, SPA_PROP_ID_VIDEO_SIZE), &value)) < 0)
|
||||
return res;
|
||||
|
||||
value.type = SPA_PROP_TYPE_FRACTION;
|
||||
value.size = sizeof (SpaFraction);
|
||||
value.value = &frac;
|
||||
frac.num = 25;
|
||||
frac.denom = 1;
|
||||
if ((res = spa_props_set_prop (props, spa_props_index_for_id (props, SPA_PROP_ID_VIDEO_FRAMERATE), &value)) < 0)
|
||||
return res;
|
||||
|
||||
if ((res = spa_node_port_set_format (node->node, 0, 0, format)) < 0)
|
||||
return res;
|
||||
|
||||
str = "video/x-raw,"
|
||||
" format=(string)YUY2,"
|
||||
" width=(int)320,"
|
||||
" height=(int)240,"
|
||||
" framerate=(fraction)30/1";
|
||||
priv->format = g_bytes_new_static (str, strlen (str)+1);
|
||||
|
||||
priv->n_buffers = 16;
|
||||
if ((res = spa_node_port_alloc_buffers (node->node, 0, NULL, 0, priv->buffers, &priv->n_buffers)) < 0)
|
||||
return res;
|
||||
|
||||
return SPA_RESULT_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
start_pipeline (PinosSpaV4l2Source *this)
|
||||
{
|
||||
#if 0
|
||||
PinosSpaV4l2SourcePrivate *priv = this->priv;
|
||||
PinosNode *node = PINOS_NODE (this);
|
||||
SpaResult res;
|
||||
SpaCommand cmd;
|
||||
int err;
|
||||
|
||||
g_debug ("spa-v4l2-source %p: starting pipeline", this);
|
||||
negotiate_formats (this);
|
||||
|
||||
cmd.type = SPA_COMMAND_START;
|
||||
if ((res = spa_node_send_command (node->node, &cmd)) < 0)
|
||||
g_debug ("got error %d", res);
|
||||
|
||||
priv->running = true;
|
||||
if ((err = pthread_create (&priv->thread, NULL, loop, this)) != 0) {
|
||||
g_debug ("spa-v4l2-source %p: can't create thread", strerror (err));
|
||||
priv->running = false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
stop_pipeline (PinosSpaV4l2Source *this)
|
||||
{
|
||||
|
|
@ -360,7 +271,6 @@ set_state (PinosNode *node,
|
|||
break;
|
||||
|
||||
case PINOS_NODE_STATE_RUNNING:
|
||||
start_pipeline (this);
|
||||
break;
|
||||
|
||||
case PINOS_NODE_STATE_ERROR:
|
||||
|
|
@ -476,8 +386,6 @@ static gboolean
|
|||
on_received_event (PinosPort *port, SpaEvent *event, GError **error, gpointer user_data)
|
||||
{
|
||||
PinosNode *node = user_data;
|
||||
PinosSpaV4l2Source *source = PINOS_SPA_V4L2_SOURCE (node);
|
||||
PinosSpaV4l2SourcePrivate *priv = source->priv;
|
||||
SpaResult res;
|
||||
|
||||
switch (event->type) {
|
||||
|
|
|
|||
|
|
@ -616,71 +616,6 @@ add_buffer (SpaProxy *this, uint32_t port_id, SpaBuffer *buffer)
|
|||
return SPA_RESULT_OK;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static SpaResult
|
||||
add_buffer (SpaProxy *this, uint32_t port_id, SpaBuffer *buffer)
|
||||
{
|
||||
SpaControl control;
|
||||
SpaControlBuilder builder;
|
||||
uint8_t buf[1024];
|
||||
int fds[16];
|
||||
SpaControlCmdAddMem am;
|
||||
SpaControlCmdAddBuffer ab;
|
||||
int i;
|
||||
SpaResult res;
|
||||
SpaBuffer *b;
|
||||
SpaMemory *bmem;
|
||||
|
||||
spa_control_builder_init_into (&builder, buf, sizeof (buf), fds, sizeof (fds));
|
||||
|
||||
bmem = spa_memory_alloc_with_fd (0, buffer, buffer->size);
|
||||
b = spa_memory_ensure_ptr (bmem);
|
||||
b->mem_id = bmem->id;
|
||||
b->offset = 0;
|
||||
|
||||
am.port_id = port_id;
|
||||
am.mem_id = bmem->id;
|
||||
am.mem_type = 0;
|
||||
am.fd_index = spa_control_builder_add_fd (&builder, bmem->fd, false);
|
||||
am.offset = 0;
|
||||
am.size = buffer->size;
|
||||
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_ADD_MEM, &am);
|
||||
|
||||
for (i = 0; i < b->n_datas; i++) {
|
||||
SpaData *d = &SPA_BUFFER_DATAS (b)[i];
|
||||
SpaMemory *mem;
|
||||
|
||||
if (!(mem = spa_memory_find (0, d->mem_id))) {
|
||||
fprintf (stderr, "proxy %p: error invalid memory\n", this);
|
||||
continue;
|
||||
}
|
||||
|
||||
am.port_id = port_id;
|
||||
am.mem_id = mem->id;
|
||||
am.mem_type = 0;
|
||||
am.fd_index = spa_control_builder_add_fd (&builder, mem->fd, false);
|
||||
am.offset = d->offset;
|
||||
am.size = d->size;
|
||||
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_ADD_MEM, &am);
|
||||
}
|
||||
ab.port_id = port_id;
|
||||
ab.buffer_id = b->id;
|
||||
ab.mem_id = bmem->id;
|
||||
ab.offset = 0;
|
||||
ab.size = b->size;
|
||||
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_ADD_BUFFER, &ab);
|
||||
|
||||
spa_control_builder_end (&builder, &control);
|
||||
|
||||
if ((res = spa_control_write (&control, this->fds[0].fd)) < 0)
|
||||
fprintf (stderr, "proxy %p: error writing control\n", this);
|
||||
|
||||
spa_control_clear (&control);
|
||||
|
||||
return SPA_RESULT_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
static SpaResult
|
||||
remove_buffer (SpaProxy *this, uint32_t port_id, SpaBuffer *buffer)
|
||||
{
|
||||
|
|
@ -688,6 +623,7 @@ remove_buffer (SpaProxy *this, uint32_t port_id, SpaBuffer *buffer)
|
|||
SpaControlBuilder builder;
|
||||
uint8_t buf[1024];
|
||||
SpaControlCmdRemoveBuffer rb;
|
||||
SpaControlCmdRemoveMem rm;
|
||||
unsigned int i;
|
||||
SpaResult res;
|
||||
|
||||
|
|
@ -695,11 +631,15 @@ remove_buffer (SpaProxy *this, uint32_t port_id, SpaBuffer *buffer)
|
|||
rb.port_id = port_id;
|
||||
rb.buffer_id = buffer->id;
|
||||
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_REMOVE_BUFFER, &rb);
|
||||
rm.port_id = port_id;
|
||||
rm.mem_id = buffer->mem_id;
|
||||
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_REMOVE_MEM, &rm);
|
||||
|
||||
for (i = 0; i < buffer->n_datas; i++) {
|
||||
SpaControlCmdRemoveMem rm;
|
||||
SpaData *d = &SPA_BUFFER_DATAS (buffer)[i];
|
||||
|
||||
rm.port_id = port_id;
|
||||
rm.mem_id = buffer->id * 64 + i;
|
||||
rm.mem_id = d->mem_id;
|
||||
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_REMOVE_MEM, &rm);
|
||||
}
|
||||
spa_control_builder_end (&builder, &control);
|
||||
|
|
|
|||
|
|
@ -634,7 +634,7 @@ spa_v4l2_source_node_port_pull_output (SpaNode *node,
|
|||
|
||||
b->outstanding = true;
|
||||
|
||||
info[i].buffer_id = b->buffer.id;
|
||||
info[i].buffer_id = b->outbuf->id;
|
||||
info[i].status = SPA_RESULT_OK;
|
||||
}
|
||||
if (have_error)
|
||||
|
|
|
|||
|
|
@ -559,6 +559,8 @@ spa_v4l2_import_buffers (SpaV4l2Source *this, SpaBuffer **buffers, uint32_t n_bu
|
|||
b->v4l2_buffer.m.userptr = (unsigned long) ((uint8_t*)mem->ptr + d[0].offset);
|
||||
b->v4l2_buffer.length = d[0].size;
|
||||
|
||||
spa_debug_buffer (b->outbuf);
|
||||
|
||||
spa_v4l2_buffer_recycle (this, buffers[i]->id);
|
||||
}
|
||||
state->have_buffers = true;
|
||||
|
|
@ -688,7 +690,7 @@ mmap_init (SpaV4l2Source *this,
|
|||
b->v4l2_buffer.memory = state->memtype;
|
||||
b->v4l2_buffer.index = i;
|
||||
|
||||
spa_debug_buffer (&b->buffer);
|
||||
spa_debug_buffer (b->outbuf);
|
||||
|
||||
spa_v4l2_buffer_recycle (this, i);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,8 +33,6 @@
|
|||
#include <spa/memory.h>
|
||||
#include <spa/video/format.h>
|
||||
|
||||
#undef USE_BUFFER
|
||||
|
||||
#define MAX_BUFFERS 8
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -47,9 +45,13 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
SpaNode *source;
|
||||
|
||||
SDL_Renderer *renderer;
|
||||
SDL_Window *window;
|
||||
SDL_Texture *texture;
|
||||
|
||||
bool use_buffer;
|
||||
|
||||
bool running;
|
||||
pthread_t thread;
|
||||
SpaPollFd fds[16];
|
||||
|
|
@ -214,14 +216,14 @@ make_nodes (AppData *data, const char *device)
|
|||
value.type = SPA_PROP_TYPE_STRING;
|
||||
value.value = device ? device : "/dev/video0";
|
||||
value.size = strlen (value.value)+1;
|
||||
props->set_prop (props, spa_props_index_for_name (props, "device"), &value);
|
||||
spa_props_set_prop (props, spa_props_index_for_name (props, "device"), &value);
|
||||
|
||||
if ((res = spa_node_set_props (data->source, props)) < 0)
|
||||
printf ("got set_props error %d\n", res);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
#ifdef USE_BUFFER
|
||||
static void
|
||||
alloc_buffers (AppData *data)
|
||||
{
|
||||
|
|
@ -230,7 +232,8 @@ alloc_buffers (AppData *data)
|
|||
for (i = 0; i < MAX_BUFFERS; i++) {
|
||||
SDLBuffer *b = &data->buffers[i];
|
||||
SDL_Texture *texture;
|
||||
void *mem;
|
||||
SpaMemory *mem;
|
||||
void *ptr;
|
||||
int stride;
|
||||
|
||||
data->bp[i] = &b->buffer;
|
||||
|
|
@ -243,7 +246,7 @@ alloc_buffers (AppData *data)
|
|||
printf ("can't create texture: %s\n", SDL_GetError ());
|
||||
return;
|
||||
}
|
||||
if (SDL_LockTexture (texture, NULL, &mem, &stride) < 0) {
|
||||
if (SDL_LockTexture (texture, NULL, &ptr, &stride) < 0) {
|
||||
fprintf (stderr, "Couldn't lock texture: %s\n", SDL_GetError());
|
||||
return;
|
||||
}
|
||||
|
|
@ -251,36 +254,40 @@ alloc_buffers (AppData *data)
|
|||
b->buffer.id = i;
|
||||
b->buffer.size = sizeof (SDLBuffer);
|
||||
b->buffer.n_metas = 2;
|
||||
b->buffer.metas = b->metas;
|
||||
b->buffer.metas = offsetof (SDLBuffer, metas);
|
||||
b->buffer.n_datas = 1;
|
||||
b->buffer.datas = b->datas;
|
||||
b->buffer.datas = offsetof (SDLBuffer, datas);
|
||||
|
||||
b->header.flags = 0;
|
||||
b->header.seq = 0;
|
||||
b->header.pts = 0;
|
||||
b->header.dts_offset = 0;
|
||||
b->metas[0].type = SPA_META_TYPE_HEADER;
|
||||
b->metas[0].data = &b->header;
|
||||
b->metas[0].offset = offsetof (SDLBuffer, header);
|
||||
b->metas[0].size = sizeof (b->header);
|
||||
|
||||
b->ptr.ptr_type = "SDL_Texture";
|
||||
b->ptr.ptr = texture;
|
||||
b->metas[1].type = SPA_META_TYPE_POINTER;
|
||||
b->metas[1].data = &b->ptr;
|
||||
b->metas[1].offset = offsetof (SDLBuffer, ptr);
|
||||
b->metas[1].size = sizeof (b->ptr);
|
||||
|
||||
b->datas[0].type = SPA_DATA_TYPE_MEMPTR;
|
||||
b->datas[0].ptr = mem;
|
||||
b->datas[0].ptr_type = "sysmem";
|
||||
mem = spa_memory_alloc (0);
|
||||
mem->flags = SPA_MEMORY_FLAG_READWRITE;
|
||||
mem->type = "sysmem";
|
||||
mem->fd = -1;
|
||||
mem->ptr = ptr;
|
||||
mem->size = stride * 240;
|
||||
|
||||
b->datas[0].mem_id = mem->id;
|
||||
b->datas[0].offset = 0;
|
||||
b->datas[0].size = stride * 240;
|
||||
b->datas[0].size = mem->size;
|
||||
b->datas[0].stride = stride;
|
||||
}
|
||||
data->n_buffers = MAX_BUFFERS;
|
||||
|
||||
spa_node_port_use_buffers (data->source, 0, data->bp, MAX_BUFFERS);
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
SpaFormat fmt;
|
||||
|
|
@ -336,10 +343,9 @@ negotiate_formats (AppData *data)
|
|||
|
||||
spa_debug_port_info (info);
|
||||
|
||||
#ifdef USE_BUFFER
|
||||
if (data->use_buffer) {
|
||||
alloc_buffers (data);
|
||||
#else
|
||||
{
|
||||
} else {
|
||||
unsigned int n_buffers;
|
||||
|
||||
data->texture = SDL_CreateTexture (data->renderer,
|
||||
|
|
@ -357,8 +363,6 @@ negotiate_formats (AppData *data)
|
|||
}
|
||||
data->n_buffers = n_buffers;
|
||||
}
|
||||
#endif
|
||||
|
||||
return SPA_RESULT_OK;
|
||||
}
|
||||
|
||||
|
|
@ -447,6 +451,8 @@ main (int argc, char *argv[])
|
|||
|
||||
spa_memory_init ();
|
||||
|
||||
data.use_buffer = true;
|
||||
|
||||
if (SDL_Init (SDL_INIT_VIDEO) < 0) {
|
||||
printf ("can't initialize SDL: %s\n", SDL_GetError ());
|
||||
return -1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue