Ejemplo n.º 1
0
int
pdb_item_destroy(pdb_t *p, uint32_t id)
{
        void        *item_get;
        pdb_entry_t *item;

        if (btree_remove(p->db, id, &item_get) == FALSE) {
                debug_msg("Cannot delete item because it does not exist!\n");
                return FALSE;
        }
        item = (pdb_entry_t*)item_get;

	pdb_item_validate(item);
        assert(id == item->ssrc);

        /* clean up elements of item here ************************************/

        if (item->render_3D_data != NULL) {
                render_3D_free(&item->render_3D_data);
        }

        if (item->enc_fmt != NULL) {
                xfree(item->enc_fmt);
                item->enc_fmt = NULL;
        }

        /*********************************************************************/

        debug_msg("Removing persistent database entry for SSRC 0x%08lx\n",
                  item->ssrc);
        xfree(item);
        p->nelem--;
        return TRUE;
}
Ejemplo n.º 2
0
int
pdb_item_create(pdb_t *p, uint16_t freq, uint32_t id)
{
    pdb_entry_t *item;
    timestamp_t         zero_ts;

    if (btree_find(p->db, id, (void**)&item)) {
        debug_msg("Item already exists\n");
        return FALSE;
    }

    item = (pdb_entry_t*)xmalloc(sizeof(pdb_entry_t));
    if (item == NULL) {
        return FALSE;
    }

    /* Initialize elements of item here as necesary **********************/

    item->magic           = 0xc001babe;
    item->ssrc            = id;
    item->render_3D_data  = NULL;
    item->enc             = -1;
    item->enc_fmt_len     = 2 * (CODEC_LONG_NAME_LEN + 1);
    item->enc_fmt         = xmalloc(item->enc_fmt_len);
    item->sample_rate     = freq;
    item->gain            = 1.0;
    item->mute            = 0;
    zero_ts               = ts_map32(8000, 0);
    item->last_ui_update  = zero_ts;
    item->first_mix       = TRUE;

    /* Initial jitter estimate (30ms)                                    */
    item->jitter            = ts_map32(8000, 240);
    item->transit           = zero_ts;
    item->last_transit      = zero_ts;
    item->last_last_transit = zero_ts;
    item->avg_transit       = zero_ts;
    item->playout           = zero_ts;
    item->last_arr          = zero_ts;
    item->last_rtt          = 0.0;
    item->avg_rtt           = 0.0;
    /* Packet stats initialization                                       */
    item->received        = 0;
    item->duplicates      = 0;
    item->misordered      = 0;
    item->jit_toged       = 0;
    item->spike_toged     = 0;
    item->spike_events    = 0;

    pdb_item_validate(item);
    /*********************************************************************/

    if (btree_add(p->db, id, (void*)item) == FALSE) {
        debug_msg("failed to add item to persistent database!\n");
        return FALSE;
    }

    p->nelem++;
    return TRUE;
}
Ejemplo n.º 3
0
int
pdb_item_get(pdb_t *p, uint32_t id, pdb_entry_t **item)
{
        void *v;
        if (btree_find(p->db, id, &v) == FALSE) {
                *item = NULL;
                return FALSE;
        }
        assert(v != NULL);
        *item = (pdb_entry_t*)v;
	pdb_item_validate(*item);
        return TRUE;
}