Lines Matching refs:cur_byte

70 static void next_byte(AVIOContext *pb, int *cur_byte)
74 *cur_byte = ret > 0 ? b : ret == 0 ? AVERROR_EOF : ret;
77 static void skip_spaces(AVIOContext *pb, int *cur_byte)
79 while (*cur_byte == ' ' || *cur_byte == '\t' ||
80 *cur_byte == '\n' || *cur_byte == '\r')
81 next_byte(pb, cur_byte);
84 static int expect_byte(AVIOContext *pb, int *cur_byte, uint8_t c)
86 skip_spaces(pb, cur_byte);
87 if (*cur_byte != c)
88 return ERR_CODE(*cur_byte);
89 next_byte(pb, cur_byte);
93 static int parse_string(AVIOContext *pb, int *cur_byte, AVBPrint *bp, int full)
97 ret = expect_byte(pb, cur_byte, '"');
100 while (*cur_byte > 0 && *cur_byte != '"') {
101 if (*cur_byte == '\\') {
102 next_byte(pb, cur_byte);
103 if (*cur_byte < 0)
105 if ((*cur_byte | 32) == 'u') {
108 next_byte(pb, cur_byte);
109 if (!HEX_DIGIT_TEST(*cur_byte))
110 return ERR_CODE(*cur_byte);
111 chr = chr * 16 + HEX_DIGIT_VAL(*cur_byte);
115 av_bprint_chars(bp, *cur_byte, 1);
118 av_bprint_chars(bp, *cur_byte, 1);
120 next_byte(pb, cur_byte);
122 ret = expect_byte(pb, cur_byte, '"');
131 static int parse_label(AVIOContext *pb, int *cur_byte, AVBPrint *bp)
136 ret = parse_string(pb, cur_byte, bp, 0);
139 ret = expect_byte(pb, cur_byte, ':');
145 static int parse_boolean(AVIOContext *pb, int *cur_byte, int *result)
151 skip_spaces(pb, cur_byte);
154 if (*cur_byte != *p)
156 for (; *p; p++, next_byte(pb, cur_byte))
157 if (*cur_byte != *p)
159 if (BETWEEN(*cur_byte | 32, 'a', 'z'))
167 static int parse_int(AVIOContext *pb, int *cur_byte, int64_t *result)
171 skip_spaces(pb, cur_byte);
172 if ((unsigned)*cur_byte - '0' > 9)
174 while (BETWEEN(*cur_byte, '0', '9')) {
175 if (val > INT_MAX/10 - (*cur_byte - '0'))
177 val = val * 10 + (*cur_byte - '0');
178 next_byte(pb, cur_byte);
186 int ret, cur_byte, start_of_par;
193 next_byte(pb, &cur_byte);
194 ret = expect_byte(pb, &cur_byte, '{');
197 ret = parse_label(pb, &cur_byte, &label);
200 ret = expect_byte(pb, &cur_byte, '[');
205 ret = expect_byte(pb, &cur_byte, '{');
210 ret = parse_label(pb, &cur_byte, &label);
214 ret = parse_boolean(pb, &cur_byte, &start_of_par);
218 ret = parse_string(pb, &cur_byte, &content, 1);
222 ret = parse_int(pb, &cur_byte, &start);
226 ret = parse_int(pb, &cur_byte, &duration);
233 skip_spaces(pb, &cur_byte);
234 if (cur_byte != ',')
236 next_byte(pb, &cur_byte);
238 ret = expect_byte(pb, &cur_byte, '}');
257 skip_spaces(pb, &cur_byte);
258 if (cur_byte != ',')
260 next_byte(pb, &cur_byte);
262 ret = expect_byte(pb, &cur_byte, ']');
265 ret = expect_byte(pb, &cur_byte, '}');
268 skip_spaces(pb, &cur_byte);
269 if (cur_byte != AVERROR_EOF)
270 ret = ERR_CODE(cur_byte);