meta: make safer find_meta_data function

This commit is contained in:
Wim Taymans 2018-07-09 12:04:23 +02:00
parent 33427b4cd3
commit c98fbfe0a9
16 changed files with 59 additions and 32 deletions

View file

@ -494,7 +494,7 @@ impl_node_port_use_buffers(struct spa_node *node,
b->buf = buffers[i];
b->flags = BUFFER_FLAG_OUT;
b->h = spa_buffer_find_meta(b->buf, this->type.meta.Header);
b->h = spa_buffer_find_meta_data(b->buf, this->type.meta.Header, sizeof(*b->h));
type = d[0].type;
if ((type == this->type.data.MemFd ||

View file

@ -515,7 +515,7 @@ impl_node_port_use_buffers(struct spa_node *node,
b->buf = buffers[i];
b->flags = 0;
b->h = spa_buffer_find_meta(b->buf, this->type.meta.Header);
b->h = spa_buffer_find_meta_data(b->buf, this->type.meta.Header, sizeof(*b->h));
if (!((d[0].type == this->type.data.MemFd ||
d[0].type == this->type.data.DmaBuf ||

View file

@ -651,7 +651,7 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &port->buffers[i];
b->flags = 0;
b->outbuf = buffers[i];
b->h = spa_buffer_find_meta(buffers[i], t->meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
if (size == SPA_ID_INVALID)
size = d[0].maxsize;

View file

@ -807,7 +807,7 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &port->buffers[i];
b->flags = 0;
b->outbuf = buffers[i];
b->h = spa_buffer_find_meta(buffers[i], t->meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
if (size == SPA_ID_INVALID)
size = d[0].maxsize;

View file

@ -617,7 +617,7 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &port->buffers[i];
b->flags = 0;
b->outbuf = buffers[i];
b->h = spa_buffer_find_meta(buffers[i], t->meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
if (size == SPA_ID_INVALID)
size = d[0].maxsize;

View file

@ -709,7 +709,7 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &port->buffers[i];
b->outbuf = buffers[i];
b->outstanding = (direction == SPA_DIRECTION_INPUT);
b->h = spa_buffer_find_meta(buffers[i], t->meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
if (!((d[0].type == t->data.MemPtr ||
d[0].type == t->data.MemFd ||

View file

@ -870,6 +870,7 @@ impl_node_port_use_buffers(struct spa_node *node,
{
struct impl *this;
uint32_t i;
struct type *t;
spa_return_val_if_fail(node != NULL, -EINVAL);
@ -880,6 +881,8 @@ impl_node_port_use_buffers(struct spa_node *node,
if (!this->have_format)
return -EIO;
t = &this->type;
clear_buffers(this);
for (i = 0; i < n_buffers; i++) {
@ -889,11 +892,11 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &this->buffers[i];
b->outbuf = buffers[i];
b->outstanding = false;
b->h = spa_buffer_find_meta(buffers[i], this->type.meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
if ((d[0].type == this->type.data.MemPtr ||
d[0].type == this->type.data.MemFd ||
d[0].type == this->type.data.DmaBuf) && d[0].data == NULL) {
if ((d[0].type == t->data.MemPtr ||
d[0].type == t->data.MemFd ||
d[0].type == t->data.DmaBuf) && d[0].data == NULL) {
spa_log_error(this->log, NAME " %p: invalid memory on buffer %p", this,
buffers[i]);
return -EINVAL;

View file

@ -1156,6 +1156,7 @@ impl_node_port_use_buffers(struct spa_node *node,
{
struct impl *this;
int i;
struct type *t;
spa_return_val_if_fail(node != NULL, -EINVAL);
@ -1168,6 +1169,8 @@ impl_node_port_use_buffers(struct spa_node *node,
if (!this->have_format)
return -EIO;
t = &this->type;
clear_buffers(this);
for (i = 0; i < n_buffers; i++) {
@ -1177,12 +1180,12 @@ impl_node_port_use_buffers(struct spa_node *node,
b->buf = buffers[i];
b->outstanding = true;
b->h = spa_buffer_find_meta(b->buf, this->type.meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
type = buffers[i]->datas[0].type;
if ((type == this->type.data.MemFd ||
type == this->type.data.DmaBuf ||
type == this->type.data.MemPtr) && buffers[i]->datas[0].data == NULL) {
if ((type == t->data.MemFd ||
type == t->data.DmaBuf ||
type == t->data.MemPtr) && buffers[i]->datas[0].data == NULL) {
spa_log_error(this->log, NAME " %p: need mapped memory", this);
return -EINVAL;
}

View file

@ -608,6 +608,7 @@ impl_node_port_use_buffers(struct spa_node *node,
{
struct impl *this;
uint32_t i;
struct type *t;
spa_return_val_if_fail(node != NULL, -EINVAL);
@ -618,6 +619,8 @@ impl_node_port_use_buffers(struct spa_node *node,
if (!this->have_format)
return -EIO;
t = &this->type;
clear_buffers(this);
for (i = 0; i < n_buffers; i++) {
@ -627,11 +630,11 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &this->buffers[i];
b->outbuf = buffers[i];
b->outstanding = true;
b->h = spa_buffer_find_meta(buffers[i], this->type.meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
if ((d[0].type == this->type.data.MemPtr ||
d[0].type == this->type.data.MemFd ||
d[0].type == this->type.data.DmaBuf) && d[0].data == NULL) {
if ((d[0].type == t->data.MemPtr ||
d[0].type == t->data.MemFd ||
d[0].type == t->data.DmaBuf) && d[0].data == NULL) {
spa_log_error(this->log, NAME " %p: invalid memory on buffer %p", this,
buffers[i]);
}

View file

@ -642,7 +642,7 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &this->buffers[i];
b->outbuf = buffers[i];
b->outstanding = false;
b->h = spa_buffer_find_meta(buffers[i], this->type.meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], this->type.meta.Header, sizeof(*b->h));
if ((d[0].type == this->type.data.MemPtr ||
d[0].type == this->type.data.MemFd ||

View file

@ -1252,7 +1252,7 @@ static int spa_v4l2_use_buffers(struct impl *this, struct spa_buffer **buffers,
b = &port->buffers[i];
b->outbuf = buffers[i];
b->flags = BUFFER_FLAG_OUTSTANDING;
b->h = spa_buffer_find_meta(b->outbuf, this->type.meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], this->type.meta.Header, sizeof(*b->h));
spa_log_info(port->log, "v4l2: import buffer %p", buffers[i]);
@ -1346,7 +1346,7 @@ mmap_init(struct impl *this,
b = &port->buffers[i];
b->outbuf = buffers[i];
b->flags = BUFFER_FLAG_OUTSTANDING;
b->h = spa_buffer_find_meta(b->outbuf, this->type.meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], this->type.meta.Header, sizeof(*b->h));
spa_zero(b->v4l2_buffer);
b->v4l2_buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

View file

@ -727,6 +727,7 @@ impl_node_port_use_buffers(struct spa_node *node,
{
struct impl *this;
uint32_t i;
struct type *t;
spa_return_val_if_fail(node != NULL, -EINVAL);
@ -737,6 +738,8 @@ impl_node_port_use_buffers(struct spa_node *node,
if (!this->have_format)
return -EIO;
t = &this->type;
clear_buffers(this);
for (i = 0; i < n_buffers; i++) {
@ -746,11 +749,11 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &this->buffers[i];
b->outbuf = buffers[i];
b->outstanding = false;
b->h = spa_buffer_find_meta(buffers[i], this->type.meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
if ((d[0].type == this->type.data.MemPtr ||
d[0].type == this->type.data.MemFd ||
d[0].type == this->type.data.DmaBuf) && d[0].data == NULL) {
if ((d[0].type == t->data.MemPtr ||
d[0].type == t->data.MemFd ||
d[0].type == t->data.DmaBuf) && d[0].data == NULL) {
spa_log_error(this->log, NAME " %p: invalid memory on buffer %p", this,
buffers[i]);
return -EINVAL;

View file

@ -610,6 +610,7 @@ impl_node_port_use_buffers(struct spa_node *node,
struct impl *this;
struct port *port;
uint32_t i;
struct type *t;
spa_return_val_if_fail(node != NULL, -EINVAL);
@ -622,6 +623,8 @@ impl_node_port_use_buffers(struct spa_node *node,
if (!port->have_format)
return -EIO;
t = &this->type;
clear_buffers(this, port);
for (i = 0; i < n_buffers; i++) {
@ -631,11 +634,11 @@ impl_node_port_use_buffers(struct spa_node *node,
b = &port->buffers[i];
b->outbuf = buffers[i];
b->outstanding = direction == SPA_DIRECTION_INPUT;
b->h = spa_buffer_find_meta(buffers[i], this->type.meta.Header);
b->h = spa_buffer_find_meta_data(buffers[i], t->meta.Header, sizeof(*b->h));
if ((d[0].type == this->type.data.MemPtr ||
d[0].type == this->type.data.MemFd ||
d[0].type == this->type.data.DmaBuf) && d[0].data != NULL) {
if ((d[0].type == t->data.MemPtr ||
d[0].type == t->data.MemFd ||
d[0].type == t->data.DmaBuf) && d[0].data != NULL) {
b->ptr = d[0].data;
b->size = d[0].maxsize;
} else {