diff --git a/libavcodec/aasc.c b/libavcodec/aasc.c index a136360572..1e4264296d 100644 --- a/libavcodec/aasc.c +++ b/libavcodec/aasc.c @@ -68,6 +68,12 @@ static int aasc_decode_frame(AVCodecContext *avctx, compr = AV_RL32(buf); buf += 4; buf_size -= 4; + switch (avctx->codec_tag) { + case MKTAG('A', 'A', 'S', '4'): + bytestream2_init(&s->gb, buf - 4, buf_size + 4); + ff_msrle_decode(avctx, (AVPicture*)&s->frame, 8, &s->gb); + break; + case MKTAG('A', 'A', 'S', 'C'): switch(compr){ case 0: stride = (avctx->width * 3 + 3) & ~3; @@ -89,6 +95,11 @@ static int aasc_decode_frame(AVCodecContext *avctx, av_log(avctx, AV_LOG_ERROR, "Unknown compression type %d\n", compr); return -1; } + break; + default: + av_log(avctx, AV_LOG_ERROR, "Unknown FourCC: %X\n", avctx->codec_tag); + return -1; + } *data_size = sizeof(AVFrame); *(AVFrame*)data = s->frame; diff --git a/libavformat/riff.c b/libavformat/riff.c index ad99ebe1c9..fb3e8ac9dd 100644 --- a/libavformat/riff.c +++ b/libavformat/riff.c @@ -260,6 +260,7 @@ const AVCodecTag ff_codec_bmp_tags[] = { { CODEC_ID_VC1IMAGE, MKTAG('W', 'V', 'P', '2') }, { CODEC_ID_LOCO, MKTAG('L', 'O', 'C', 'O') }, { CODEC_ID_WNV1, MKTAG('W', 'N', 'V', '1') }, + { CODEC_ID_AASC, MKTAG('A', 'A', 'S', '4') }, { CODEC_ID_AASC, MKTAG('A', 'A', 'S', 'C') }, { CODEC_ID_INDEO2, MKTAG('R', 'T', '2', '1') }, { CODEC_ID_FRAPS, MKTAG('F', 'P', 'S', '1') },