mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
stream: work on stream upload
This commit is contained in:
parent
f06b991a5a
commit
b795fb851f
9 changed files with 224 additions and 36 deletions
|
|
@ -929,18 +929,19 @@ pinos_buffer_iter_parse_format_change (PinosBufferIter *iter,
|
|||
PinosPacketFormatChange *payload)
|
||||
{
|
||||
struct stack_iter *si = PPSI (iter);
|
||||
char *p;
|
||||
PinosPacketFormatChange *fc;
|
||||
|
||||
g_return_val_if_fail (is_valid_iter (iter), FALSE);
|
||||
g_return_val_if_fail (si->type == PINOS_PACKET_TYPE_FORMAT_CHANGE, FALSE);
|
||||
|
||||
if (si->size < 2)
|
||||
if (si->size < 9)
|
||||
return FALSE;
|
||||
|
||||
p = si->data;
|
||||
fc = si->data;
|
||||
|
||||
payload->id = *p++;
|
||||
payload->format = p;
|
||||
payload->port = fc->port;
|
||||
payload->id = fc->id;
|
||||
payload->format = (gchar *) &fc->format;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -959,18 +960,22 @@ pinos_buffer_builder_add_format_change (PinosBufferBuilder *builder,
|
|||
PinosPacketFormatChange *payload)
|
||||
{
|
||||
struct stack_builder *sb = PPSB (builder);
|
||||
gsize len;
|
||||
char *p;
|
||||
gsize len, slen;
|
||||
PinosPacketFormatChange *fc;
|
||||
|
||||
g_return_val_if_fail (is_valid_builder (builder), FALSE);
|
||||
|
||||
/* id + format len + zero byte */
|
||||
len = 1 + strlen (payload->format) + 1;
|
||||
p = builder_add_packet (sb,
|
||||
PINOS_PACKET_TYPE_FORMAT_CHANGE,
|
||||
len);
|
||||
*p++ = payload->id;
|
||||
strcpy (p, payload->format);
|
||||
/* port + id + format len + zero byte */
|
||||
slen = strlen (payload->format) + 1;
|
||||
len = 8 + slen;
|
||||
fc = builder_add_packet (sb,
|
||||
PINOS_PACKET_TYPE_FORMAT_CHANGE,
|
||||
len);
|
||||
fc->port = payload->port;
|
||||
fc->id = payload->id;
|
||||
memcpy ((gchar*)&fc->format, payload->format, slen);
|
||||
|
||||
//strcpy ((gchar*)&fc->format, payload->format);
|
||||
sb->sh->flags |= PINOS_BUFFER_FLAG_CONTROL;
|
||||
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ gboolean pinos_buffer_builder_add_reuse_mem (PinosBufferBuilder *bui
|
|||
*/
|
||||
typedef struct {
|
||||
guint32 port;
|
||||
guint8 id;
|
||||
guint32 id;
|
||||
const gchar *format;
|
||||
} PinosPacketFormatChange;
|
||||
|
||||
|
|
|
|||
|
|
@ -863,6 +863,7 @@ do_start (PinosStream *stream)
|
|||
handle_socket (stream, priv->fd);
|
||||
|
||||
pinos_stream_buffer_builder_init (stream, &builder);
|
||||
fc.port = 0;
|
||||
fc.id = 0;
|
||||
fc.format = priv->format ? g_bytes_get_data (priv->format, NULL) : "ANY";
|
||||
pinos_buffer_builder_add_format_change (&builder, &fc);
|
||||
|
|
@ -1112,7 +1113,7 @@ pinos_stream_send_buffer (PinosStream *stream,
|
|||
priv = stream->priv;
|
||||
|
||||
if (!pinos_io_write_buffer (priv->fd, buffer, &error)) {
|
||||
g_warning ("stream %p: failed to read buffer: %s", stream, error->message);
|
||||
g_warning ("stream %p: failed to write buffer: %s", stream, error->message);
|
||||
g_clear_error (&error);
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue