stream: work on stream upload

This commit is contained in:
Wim Taymans 2016-07-25 15:55:56 +02:00
parent f06b991a5a
commit b795fb851f
9 changed files with 224 additions and 36 deletions

View file

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

View file

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

View file

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