57 const uint8_t **out_data,
int *out_size,
76 return s->
n_frames > 0 ? *out_size : size ;
79 marker = data[size - 1];
80 if ((marker & 0xe0) == 0xc0) {
81 int nbytes = 1 + ((marker >> 3) & 0x3);
82 int n_frames = 1 + (marker & 0x7), idx_sz = 2 + n_frames * nbytes;
84 if (size >= idx_sz && data[size - idx_sz] == marker) {
85 const uint8_t *idx = data + size + 1 - idx_sz;
89 #define case_n(a, rd) \
91 while (n_frames--) { \
98 av_log(avctx, AV_LOG_ERROR, \
99 "Superframe packet size too big: %u > %d\n", \
107 s->n_frames = n_frames; \
109 s->size[n_frames] = sz; \
114 parse_frame(ctx, *out_data, *out_size); \
135 .parser_parse =
parse,