- return s->block_align * 2;
-}
-
-static int vmdaudio_decode_frame(AVCodecContext *avctx,
- void *data, int *data_size,
- const uint8_t *buf, int buf_size)
-{
- VmdAudioContext *s = avctx->priv_data;
- unsigned char *output_samples = (unsigned char *)data;
-
- /* point to the start of the encoded data */
- const unsigned char *p = buf + 16;
-
- if (buf_size < 16)
- return buf_size;
-
- if (buf[6] == 1) {
- /* the chunk contains audio */
- *data_size = vmdaudio_loadsound(s, output_samples, p, 0);
- } else if (buf[6] == 2) {
- /* the chunk may contain audio */
- p += 4;
- *data_size = vmdaudio_loadsound(s, output_samples, p, (buf_size == 16));
- output_samples += (s->block_align * s->bits / 8);
- } else if (buf[6] == 3) {
- /* silent chunk */
- *data_size = vmdaudio_loadsound(s, output_samples, p, 1);
- }