54 const uint8_t **out_data,
int *out_size,
73 return s->
n_frames > 0 ? *out_size : size ;
76 marker = data[size - 1];
77 if ((marker & 0xe0) == 0xc0) {
78 int nbytes = 1 + ((marker >> 3) & 0x3);
79 int n_frames = 1 + (marker & 0x7), idx_sz = 2 + n_frames * nbytes;
81 if (size >= idx_sz && data[size - idx_sz] == marker) {
82 const uint8_t *idx = data + size + 1 - idx_sz;
86 #define case_n(a, rd) \
88 while (n_frames--) { \
95 av_log(avctx, AV_LOG_ERROR, \
96 "Superframe packet size too big: %u > %d\n", \
104 s->n_frames = n_frames; \
106 s->size[n_frames] = sz; \
111 parse_frame(ctx, *out_data, *out_size); \
132 .parser_parse =
parse,