Beispiel #1
0
GstStateChangeReturn audio_play_player (CustomData *data) {
    return _change_state (data, GST_STATE_PLAYING);
}
Beispiel #2
0
GstStateChangeReturn audio_stop_player (CustomData *data) {
    return _change_state (data, GST_STATE_READY);
}
Beispiel #3
0
GstStateChangeReturn audio_pause_player (CustomData *data) {
    return _change_state (data, GST_STATE_PAUSED);
}
Beispiel #4
0
int json_parser_char(json_parser *parser, int next_char)
{
/*
    After calling json_parser_alloc, call this function for each character (or
    partial character) in your JSON text. It can accept UTF-8, UTF-16, or
    UTF-32. It returns true if things are looking ok so far. If it rejects the
    text, it returns false.
*/
    int next_class, next_state;
/*
    Determine the character's class.
*/
    if (next_char < 0) {
        return false;
    }
    if (next_char >= 128) {
        next_class = C_ETC;
    } else {
        next_class = ascii_class[next_char];
        if (next_class <= __) {
            return false;
        }
    }
/*
    Get the next state from the state transition table.
*/
    next_state = state_transition_table[parser->state][next_class];
    if (next_state >= 0) {
/*
    Change the state.
*/
        if (!_change_state(parser, next_state))
            return false;
    } else {
/*
    Or perform one of the actions.
*/
        switch (next_state) {
/* empty } */
        case -9:
            if (!_change_state(parser, OK))
                return false;
            if (!_pop(parser, MODE_OBJECT_KEY) || !_pop(parser, MODE_OBJECT))
                return false;
            break;

/* } */ case -8:
            if (!_change_state(parser, OK))
                return false;
            if (!_pop(parser, MODE_OBJECT_VALUE) || !_pop(parser, MODE_OBJECT))
                return false;
            break;

/* ] */ case -7:
            if (!_change_state(parser, OK))
                return false;
            if (!_pop(parser, MODE_ARRAY))
                return false;
            break;

/* { */ case -6:
            if (!_change_state(parser, OB))
                return false;
            if (!_push(parser, MODE_OBJECT) || !_push(parser, MODE_OBJECT_KEY))
                return false;
            break;

/* [ */ case -5:
            if (!_change_state(parser, AR))
                return false;
            if (!_push(parser, MODE_ARRAY))
                return false;
            break;

/* " */ case -4:
            switch (parser->stack[parser->top].mode) {
            case MODE_OBJECT_KEY:
                if (!_change_state(parser, CO))
                    return false;
                break;
            case MODE_ARRAY:
            case MODE_OBJECT_VALUE:
                if (!_change_state(parser, OK))
                    return false;
                break;
            default:
                return false;
            }
            break;

/* , */ case -3:
            switch (parser->stack[parser->top].mode) {
            case MODE_OBJECT_VALUE:
/*
    A comma causes a flip from object_value mode to object_key mode.
*/
                if (!_change_state(parser, KE))
                    return false;
                if (!_pop(parser, MODE_OBJECT_VALUE) || !_push(parser, MODE_OBJECT_KEY))
                    return false;
                break;
            case MODE_ARRAY:
                if (!_change_state(parser, VA))
                    return false;
                break;
            default:
                return false;
            }
            break;

/* : */ case -2:
/*
    A colon causes a flip from object_key mode to object_value mode.
*/
            if (!_change_state(parser, VA))
                return false;
            if (!_pop(parser, MODE_OBJECT_KEY) || !_push(parser, MODE_OBJECT_VALUE))
                return false;
            break;
/*
    Bad action.
*/
        default:
            return false;
        }
    }

    parser->char_index++;

    if (parser->config.json_str)
        parser->config.json_str_len++;

    return true;
}