+/*****************************************************************************
+ * NewUDPPacket: allocate a new UDP packet of size p_sys->i_mtu
+ *****************************************************************************/
+static sout_buffer_t *NewUDPPacket( sout_access_out_t *p_access, mtime_t i_dts)
+{
+ sout_access_out_sys_t *p_sys = p_access->p_sys;
+ sout_buffer_t *p_buffer;
+
+ p_buffer = sout_BufferNew( p_access->p_sout, p_sys->i_mtu );
+ p_buffer->i_dts = i_dts;
+ p_buffer->i_size = 0;
+
+ if( p_sys->b_rtpts )
+ {
+ mtime_t i_timestamp = p_buffer->i_dts * 9 / 100;
+
+ /* add rtp/ts header */
+ p_buffer->p_buffer[0] = 0x80;
+ p_buffer->p_buffer[1] = 0x21; // mpeg2-ts
+
+ p_buffer->p_buffer[2] = ( p_sys->i_sequence_number >> 8 )&0xff;
+ p_buffer->p_buffer[3] = p_sys->i_sequence_number&0xff;
+ p_sys->i_sequence_number++;
+
+ p_buffer->p_buffer[4] = ( i_timestamp >> 24 )&0xff;
+ p_buffer->p_buffer[5] = ( i_timestamp >> 16 )&0xff;
+ p_buffer->p_buffer[6] = ( i_timestamp >> 8 )&0xff;
+ p_buffer->p_buffer[7] = i_timestamp&0xff;
+
+ p_buffer->p_buffer[ 8] = ( p_sys->i_ssrc >> 24 )&0xff;
+ p_buffer->p_buffer[ 9] = ( p_sys->i_ssrc >> 16 )&0xff;
+ p_buffer->p_buffer[10] = ( p_sys->i_ssrc >> 8 )&0xff;
+ p_buffer->p_buffer[11] = p_sys->i_ssrc&0xff;
+
+ p_buffer->i_size = 12;
+ }
+
+ return p_buffer;
+}
+