+static gboolean
+update_packet (GstBuffer ** buffer, guint idx, RTPPacketInfo * pinfo)
+{
+ GstNetAddressMeta *meta;
+
+ /* get packet size including header overhead */
+ pinfo->bytes += gst_buffer_get_size (*buffer) + pinfo->header_len;
+
+ if (pinfo->rtp) {
+ GstRTPBuffer rtpb = { NULL };
+
+ gst_rtp_buffer_map (*buffer, GST_MAP_READ, &rtpb);
+ pinfo->payload_len += gst_rtp_buffer_get_payload_len (&rtpb);
+ gst_rtp_buffer_unmap (&rtpb);
+ }
+
+ if (idx == 0) {
+ /* for netbuffer we can store the IP address to check for collisions */
+ meta = gst_buffer_get_net_address_meta (*buffer);
+ if (pinfo->address)
+ g_object_unref (pinfo->address);
+ if (meta) {
+ pinfo->address = G_SOCKET_ADDRESS (g_object_ref (meta->addr));
+ } else {
+ pinfo->address = NULL;
+ }
+ }
+ return TRUE;
+}
+