54 const uint8_t **poutbuf,
int *poutbuf_size,
55 const uint8_t *buf,
int buf_size)
77 for (
i = 0;
i < buf_size;
i++) {
78 mp->pc.state = (
mp->pc.state << 8) | buf[
i];
79 if ((
mp->pc.state & 0xfffffffe) == 0xf8726fba &&
81 mp->pc.index +
i >= 7) {
102 if (
mp->bytes_left == 0) {
106 for(;
mp->pc.overread>0;
mp->pc.overread--) {
107 mp->pc.buffer[
mp->pc.index++]=
mp->pc.buffer[
mp->pc.overread_index++];
110 if (
mp->pc.index + buf_size < 2) {
116 mp->bytes_left = ((
mp->pc.index > 0 ?
mp->pc.buffer[0] : buf[0]) << 8)
117 | (
mp->pc.index > 1 ?
mp->pc.buffer[1] : buf[1-
mp->pc.index]);
118 mp->bytes_left = (
mp->bytes_left & 0xfff) * 2;
119 if (
mp->bytes_left <= 0) {
122 mp->bytes_left -=
mp->pc.index;
128 mp->bytes_left -= buf_size;
135 sync_present = buf_size >= 8 && (
AV_RB32(buf + 4) & 0xfffffffe) == 0xf8726fba;
145 for (
i = -1;
i <
mp->num_substreams;
i++) {
146 parity_bits ^= buf[p++];
147 parity_bits ^= buf[p++];
149 if (
i < 0 || buf[p-2] & 0x80) {
150 parity_bits ^= buf[p++];
151 parity_bits ^= buf[p++];
155 if ((((parity_bits >> 4) ^ parity_bits) & 0xF) != 0xF) {
176 s->duration =
mh.access_unit_size;
179 if (
mh.stream_type == 0xbb) {
185 if (!
mh.channels_thd_stream2) {
198 mp->num_substreams =
mh.num_substreams;
202 *poutbuf_size = buf_size;