Пример #1
0
static int Control(access_t *access, int query, va_list args)
{
    access_sys_t *sys = access->p_sys;
    bool *b;

    switch (query) {
    case ACCESS_CAN_SEEK:
    case ACCESS_CAN_FASTSEEK: /* FIXME how to do that ? */
        b = va_arg(args, bool *);
#if LIBAVFORMAT_VERSION_MAJOR < 54
        *b = !sys->context->is_streamed;
#else
        *b = sys->context->seekable;
#endif
        return VLC_SUCCESS;
    case ACCESS_CAN_PAUSE:
        b = va_arg(args, bool *);
#if LIBAVFORMAT_VERSION_MAJOR < 54
        *b = sys->context->prot->url_read_pause != NULL;
#else
        *b = sys->context->read_pause != NULL;
#endif
        return VLC_SUCCESS;
    case ACCESS_CAN_CONTROL_PACE:
        b = va_arg(args, bool *);
        *b = true; /* FIXME */
        return VLC_SUCCESS;
    case ACCESS_GET_SIZE:
        *va_arg(args, uint64_t *) = sys->size;
        return VLC_SUCCESS;
    case ACCESS_GET_PTS_DELAY: {
        int64_t *delay = va_arg(args, int64_t *);
        *delay = DEFAULT_PTS_DELAY; /* FIXME */
        return VLC_SUCCESS;
    }
    case ACCESS_SET_PAUSE_STATE: {
        bool is_paused = va_arg(args, int);
        if (avio_pause(sys->context, is_paused)< 0)
            return VLC_EGENERIC;
        return VLC_SUCCESS;
    }
    default:
        return VLC_EGENERIC;
    }
}
Пример #2
0
static int Control(stream_t *access, int query, va_list args)
{
    access_sys_t *sys = access->p_sys;
    bool *b;

    switch (query) {
    case STREAM_CAN_SEEK:
    case STREAM_CAN_FASTSEEK: /* FIXME how to do that ? */
        b = va_arg(args, bool *);
        *b = sys->context->seekable;
        return VLC_SUCCESS;
    case STREAM_CAN_PAUSE:
        b = va_arg(args, bool *);
        *b = sys->context->read_pause != NULL;
        return VLC_SUCCESS;
    case STREAM_CAN_CONTROL_PACE:
        b = va_arg(args, bool *);
        *b = true; /* FIXME */
        return VLC_SUCCESS;
    case STREAM_GET_SIZE:
        if (sys->size < 0)
            return VLC_EGENERIC;
        *va_arg(args, uint64_t *) = sys->size;
        return VLC_SUCCESS;
    case STREAM_GET_PTS_DELAY:
        *va_arg(args, vlc_tick_t *) =
            VLC_TICK_FROM_MS(var_InheritInteger(access, "network-caching"));
        return VLC_SUCCESS;

    case STREAM_SET_PAUSE_STATE: {
        bool is_paused = va_arg(args, int);
        if (avio_pause(sys->context, is_paused)< 0)
            return VLC_EGENERIC;
        return VLC_SUCCESS;
    }
    default:
        return VLC_EGENERIC;
    }
}