mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
vmdaudio: use macros and a local variable for block type.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit dd1af5136f
)
This commit is contained in:
parent
2be17a71ae
commit
149d36877a
@ -414,6 +414,10 @@ static av_cold int vmdvideo_decode_end(AVCodecContext *avctx)
|
||||
* Audio Decoder
|
||||
*/
|
||||
|
||||
#define BLOCK_TYPE_AUDIO 1
|
||||
#define BLOCK_TYPE_INITIAL 2
|
||||
#define BLOCK_TYPE_SILENCE 3
|
||||
|
||||
typedef struct VmdAudioContext {
|
||||
AVCodecContext *avctx;
|
||||
int channels;
|
||||
@ -504,6 +508,7 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx,
|
||||
const uint8_t *buf = avpkt->data;
|
||||
int buf_size = avpkt->size;
|
||||
VmdAudioContext *s = avctx->priv_data;
|
||||
int block_type;
|
||||
unsigned char *output_samples = (unsigned char *)data;
|
||||
|
||||
/* point to the start of the encoded data */
|
||||
@ -512,10 +517,12 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx,
|
||||
if (buf_size < 16)
|
||||
return buf_size;
|
||||
|
||||
if (buf[6] == 1) {
|
||||
block_type = buf[6];
|
||||
|
||||
if (block_type == BLOCK_TYPE_AUDIO) {
|
||||
/* the chunk contains audio */
|
||||
*data_size = vmdaudio_loadsound(s, output_samples, p, 0, buf_size - 16);
|
||||
} else if (buf[6] == 2) {
|
||||
} else if (block_type == BLOCK_TYPE_INITIAL) {
|
||||
/* initial chunk, may contain audio and silence */
|
||||
uint32_t flags = AV_RB32(p);
|
||||
int raw_block_size = s->block_align *
|
||||
@ -528,7 +535,7 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx,
|
||||
output_samples += raw_block_size * silent_chunks;
|
||||
*data_size = raw_block_size * silent_chunks;
|
||||
*data_size += vmdaudio_loadsound(s, output_samples, p + 4, 0, buf_size - 20);
|
||||
} else if (buf[6] == 3) {
|
||||
} else if (block_type == BLOCK_TYPE_SILENCE) {
|
||||
/* silent chunk */
|
||||
*data_size = vmdaudio_loadsound(s, output_samples, p, 1, s->block_align);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user