|
|
@ -61,6 +61,8 @@ static int mlp_parse(AVCodecParserContext *s, |
|
|
|
int ret; |
|
|
|
int ret; |
|
|
|
int i, p = 0; |
|
|
|
int i, p = 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s->key_frame = 0; |
|
|
|
|
|
|
|
|
|
|
|
*poutbuf_size = 0; |
|
|
|
*poutbuf_size = 0; |
|
|
|
if (buf_size == 0) |
|
|
|
if (buf_size == 0) |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
@ -136,6 +138,8 @@ static int mlp_parse(AVCodecParserContext *s, |
|
|
|
* access unit header and all the 2- or 4-byte substream headers. */ |
|
|
|
* access unit header and all the 2- or 4-byte substream headers. */ |
|
|
|
// Only check when this isn't a sync frame - syncs have a checksum.
|
|
|
|
// Only check when this isn't a sync frame - syncs have a checksum.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s->key_frame = 0; |
|
|
|
|
|
|
|
|
|
|
|
parity_bits = 0; |
|
|
|
parity_bits = 0; |
|
|
|
for (i = -1; i < mp->num_substreams; i++) { |
|
|
|
for (i = -1; i < mp->num_substreams; i++) { |
|
|
|
parity_bits ^= buf[p++]; |
|
|
|
parity_bits ^= buf[p++]; |
|
|
@ -159,6 +163,8 @@ static int mlp_parse(AVCodecParserContext *s, |
|
|
|
if (ff_mlp_read_major_sync(avctx, &mh, &gb) < 0) |
|
|
|
if (ff_mlp_read_major_sync(avctx, &mh, &gb) < 0) |
|
|
|
goto lost_sync; |
|
|
|
goto lost_sync; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s->key_frame = 1; |
|
|
|
|
|
|
|
|
|
|
|
avctx->bits_per_raw_sample = mh.group1_bits; |
|
|
|
avctx->bits_per_raw_sample = mh.group1_bits; |
|
|
|
if (avctx->bits_per_raw_sample > 16) |
|
|
|
if (avctx->bits_per_raw_sample > 16) |
|
|
|
avctx->sample_fmt = AV_SAMPLE_FMT_S32; |
|
|
|
avctx->sample_fmt = AV_SAMPLE_FMT_S32; |
|
|
|