42 const uint8_t **out_data,
int *out_size,
60 return s->
n_frames > 0 ? *out_size : size ;
63 marker = data[size - 1];
64 if ((marker & 0xe0) == 0xc0) {
65 int nbytes = 1 + ((marker >> 3) & 0x3);
66 int n_frames = 1 + (marker & 0x7), idx_sz = 2 + n_frames * nbytes;
68 if (size >= idx_sz && data[size - idx_sz] == marker) {
69 const uint8_t *idx = data + size + 1 - idx_sz;
73 #define case_n(a, rd) \
75 while (n_frames--) { \
80 av_log(avctx, AV_LOG_ERROR, \
81 "Superframe packet size too big: %u > %d\n", \
89 s->n_frames = n_frames; \
91 s->size[n_frames] = sz; \
96 parse_frame(ctx, *out_data, *out_size); \
117 .parser_parse =
parse,