make test app work again

Some cleanups and removal of unused code
This commit is contained in:
Wim Taymans 2016-08-03 22:11:03 +02:00
parent 1169c2419b
commit 98679cbd53
6 changed files with 38 additions and 189 deletions

View file

@ -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;
}

View file

@ -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;
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) {

View file

@ -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);

View file

@ -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)

View file

@ -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);
}

View file

@ -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;