p_sys->i_npt_zero = VLC_TS_INVALID;
p_sys->i_pts_zero = mdate(); /* arbitrary value, could probably be
* random */
- p_sys->payload_bitmap = 0;
+ p_sys->payload_bitmap = 0xFFFFFFFF;
p_sys->i_es = 0;
p_sys->es = NULL;
p_sys->rtsp = NULL;
sout_stream_id_t *id;
char *psz_sdp;
- if (0xffffffff == p_sys->payload_bitmap)
+ if (0 == p_sys->payload_bitmap)
{
msg_Err (p_stream, "too many RTP elementary streams");
return NULL;
id->p_stream = p_stream;
/* Look for free dymanic payload type */
- id->i_payload_type = 96;
- while (p_sys->payload_bitmap & (1 << (id->i_payload_type - 96)))
- id->i_payload_type++;
+ id->i_payload_type = 96 + clz32 (p_sys->payload_bitmap);
assert (id->i_payload_type < 128);
vlc_rand_bytes (&id->i_sequence, sizeof (id->i_sequence));
}
if (id->i_payload_type >= 96)
/* Mark dynamic payload type in use */
- p_sys->payload_bitmap |= 1 << (id->i_payload_type - 96);
+ p_sys->payload_bitmap &= ~(1 << (127 - id->i_payload_type));
#if 0 /* No payload formats sets this at the moment */
int cscov = -1;
/* Release dynamic payload type */
if (id->i_payload_type >= 96)
- p_sys->payload_bitmap &= ~(1 << (id->i_payload_type - 96));
+ p_sys->payload_bitmap |= 1 << (127 - id->i_payload_type);
free( id->psz_fmtp );