Exemplo n.º 1
0
/** @internal @This initializes the output manager for a dejitter pipe.
 *
 * @param upipe description structure of the pipe
 */
static void upipe_dejitter_init_sub_mgr(struct upipe *upipe)
{
    struct upipe_dejitter *upipe_dejitter =
        upipe_dejitter_from_upipe(upipe);
    struct upipe_mgr *sub_mgr = &upipe_dejitter->sub_mgr;
    sub_mgr->refcount = upipe_dejitter_to_urefcount(upipe_dejitter);
    sub_mgr->signature = UPIPE_DEJITTER_SUB_SIGNATURE;
    sub_mgr->upipe_alloc = upipe_dejitter_sub_alloc;
    sub_mgr->upipe_input = upipe_dejitter_sub_input;
    sub_mgr->upipe_control = upipe_dejitter_sub_control;
    sub_mgr->upipe_mgr_control = NULL;
}
Exemplo n.º 2
0
/** @internal @This receives data.
 *
 * @param upipe description structure of the pipe
 * @param uref uref structure
 * @param upump_p reference to pump that generated the buffer
 */
static void upipe_dejitter_input(struct upipe *upipe, struct uref *uref,
                                 struct upump **upump_p)
{
    uint64_t date;
    if (ubase_check(uref_clock_get_dts_prog(uref, &date))) {
        struct upipe_dejitter *upipe_dejitter =
            upipe_dejitter_from_upipe(upipe);
        upipe_throw_clock_ref(upipe, uref, date, !upipe_dejitter->inited);
        upipe_throw_clock_ts(upipe, uref);
        upipe_dejitter->inited = true;
    }
    upipe_dejitter_output(upipe, uref, upump_p);
}
Exemplo n.º 3
0
/** @internal @This allocates a dejitter pipe.
 *
 * @param mgr common management structure
 * @param uprobe structure used to raise events
 * @param signature signature of the pipe allocator
 * @param args optional arguments
 * @return pointer to upipe or NULL in case of allocation error
 */
static struct upipe *upipe_dejitter_alloc(struct upipe_mgr *mgr,
                                          struct uprobe *uprobe,
                                          uint32_t signature, va_list args)
{
    struct upipe *upipe = upipe_dejitter_alloc_void(mgr, uprobe, signature,
                                                    args);
    if (unlikely(upipe == NULL))
        return NULL;

    struct upipe_dejitter *upipe_dejitter = upipe_dejitter_from_upipe(upipe);
    upipe_dejitter_init_urefcount(upipe);
    upipe_dejitter_init_output(upipe);
    upipe_dejitter->inited = false;
    upipe_throw_ready(upipe);
    return upipe;
}