static GstFlowReturn gst_kate_parse_parse_packet (GstKateParse * parse, GstBuffer * buf) { GstFlowReturn ret = GST_FLOW_OK; guint8 header[1]; gsize size; g_assert (parse); parse->packetno++; size = gst_buffer_extract (buf, 0, header, 1); GST_LOG_OBJECT (parse, "Got packet %02x, %" G_GSIZE_FORMAT " bytes", size ? header[0] : -1, gst_buffer_get_size (buf)); if (size > 0 && header[0] & 0x80) { GST_DEBUG_OBJECT (parse, "Found header %02x", header[0]); /* if 0x80 is set, it's streamheader, * so put it on the streamheader list and return */ parse->streamheader = g_list_append (parse->streamheader, buf); ret = GST_FLOW_OK; } else { if (!parse->streamheader_sent) { GST_DEBUG_OBJECT (parse, "Found non header, pushing headers seen so far"); ret = gst_kate_parse_push_headers (parse); } if (ret == GST_FLOW_OK) { ret = gst_kate_parse_queue_buffer (parse, buf); } } return ret; }
static GstFlowReturn gst_kate_parse_parse_packet (GstKateParse * parse, GstBuffer * buf) { GstFlowReturn ret = GST_FLOW_OK; g_assert (parse); parse->packetno++; GST_LOG_OBJECT (parse, "Got packet %02x, %u bytes", GST_BUFFER_SIZE (buf) ? GST_BUFFER_DATA (buf)[0] : -1, GST_BUFFER_SIZE (buf)); if (GST_BUFFER_SIZE (buf) > 0 && GST_BUFFER_DATA (buf)[0] & 0x80) { GST_DEBUG_OBJECT (parse, "Found header %02x", GST_BUFFER_DATA (buf)[0]); /* if 0x80 is set, it's streamheader, * so put it on the streamheader list and return */ parse->streamheader = g_list_append (parse->streamheader, buf); ret = GST_FLOW_OK; } else { if (!parse->streamheader_sent) { GST_DEBUG_OBJECT (parse, "Found non header, pushing headers seen so far"); ret = gst_kate_parse_push_headers (parse); } if (ret == GST_FLOW_OK) { ret = gst_kate_parse_queue_buffer (parse, buf); } } return ret; }