summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2013-03-02 18:15:37 +0000
committerPaul B Mahol <onemda@gmail.com>2013-03-05 10:27:09 +0000
commitd7f9f34dc683f4990c670a9e7a5964997e6380b3 (patch)
tree0073e4ca174941834aec4dea0e2e113196e579c0
parentf5ce359ce45408709b396ee5087bd565a9df0062 (diff)
downloadffmpeg-d7f9f34dc683f4990c670a9e7a5964997e6380b3.tar.gz
zmbv: stop doing colorspace conversion
Signed-off-by: Paul B Mahol <onemda@gmail.com>
-rw-r--r--libavcodec/zmbv.c78
-rw-r--r--tests/ref/fate/zmbv-15bit318
-rw-r--r--tests/ref/fate/zmbv-16bit238
3 files changed, 303 insertions, 331 deletions
diff --git a/libavcodec/zmbv.c b/libavcodec/zmbv.c
index 03821cde9e..d1530e70e0 100644
--- a/libavcodec/zmbv.c
+++ b/libavcodec/zmbv.c
@@ -65,6 +65,7 @@ typedef struct ZmbvContext {
int fmt;
int comp;
int flags;
+ int stride;
int bw, bh, bx, by;
int decomp_len;
z_stream zstream;
@@ -410,13 +411,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
if (c->pic.data[0])
avctx->release_buffer(avctx, &c->pic);
- c->pic.reference = 3;
- c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
- if ((ret = ff_get_buffer(avctx, &c->pic)) < 0) {
- av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
- return ret;
- }
-
/* parse header */
c->flags = buf[0];
buf++; len--;
@@ -458,24 +452,35 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
c->bpp = 8;
decode_intra = zmbv_decode_intra;
c->decode_xor = zmbv_decode_xor_8;
+ avctx->pix_fmt = AV_PIX_FMT_PAL8;
+ c->stride = c->width;
break;
case ZMBV_FMT_15BPP:
case ZMBV_FMT_16BPP:
c->bpp = 16;
decode_intra = zmbv_decode_intra;
c->decode_xor = zmbv_decode_xor_16;
+ if (c->fmt == ZMBV_FMT_15BPP)
+ avctx->pix_fmt = AV_PIX_FMT_RGB555LE;
+ else
+ avctx->pix_fmt = AV_PIX_FMT_RGB565LE;
+ c->stride = c->width * 2;
break;
#ifdef ZMBV_ENABLE_24BPP
case ZMBV_FMT_24BPP:
c->bpp = 24;
decode_intra = zmbv_decode_intra;
c->decode_xor = zmbv_decode_xor_24;
+ avctx->pix_fmt = AV_PIX_FMT_RGB24;
+ c->stride = c->width * 3;
break;
#endif //ZMBV_ENABLE_24BPP
case ZMBV_FMT_32BPP:
c->bpp = 32;
decode_intra = zmbv_decode_intra;
c->decode_xor = zmbv_decode_xor_32;
+ avctx->pix_fmt = AV_PIX_FMT_BGRA;
+ c->stride = c->width * 4;
break;
default:
c->decode_xor = NULL;
@@ -506,6 +511,13 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
return AVERROR_INVALIDDATA;
}
+ c->pic.reference = 3;
+ c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
+ if ((ret = ff_get_buffer(avctx, &c->pic)) < 0) {
+ av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
+ return ret;
+ }
+
if (c->comp == 0) { //Uncompressed data
if (c->decomp_size < len) {
av_log(avctx, AV_LOG_ERROR, "decomp buffer too small\n");
@@ -539,62 +551,23 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
/* update frames */
{
uint8_t *out, *src;
- int i, j;
+ int j;
out = c->pic.data[0];
src = c->cur;
switch (c->fmt) {
case ZMBV_FMT_8BPP:
- for (j = 0; j < c->height; j++) {
- for (i = 0; i < c->width; i++) {
- out[i * 3 + 0] = c->pal[(*src) * 3 + 0];
- out[i * 3 + 1] = c->pal[(*src) * 3 + 1];
- out[i * 3 + 2] = c->pal[(*src) * 3 + 2];
- src++;
- }
- out += c->pic.linesize[0];
- }
- break;
+ for (j = 0; j < 256; j++)
+ AV_WN32(&c->pic.data[1][j * 4], 0xFFU << 24 | AV_RB24(&c->pal[j * 3]));
case ZMBV_FMT_15BPP:
- for (j = 0; j < c->height; j++) {
- for (i = 0; i < c->width; i++) {
- uint16_t tmp = AV_RL16(src);
- src += 2;
- out[i * 3 + 0] = (tmp & 0x7C00) >> 7;
- out[i * 3 + 1] = (tmp & 0x03E0) >> 2;
- out[i * 3 + 2] = (tmp & 0x001F) << 3;
- }
- out += c->pic.linesize[0];
- }
- break;
case ZMBV_FMT_16BPP:
- for (j = 0; j < c->height; j++) {
- for (i = 0; i < c->width; i++) {
- uint16_t tmp = AV_RL16(src);
- src += 2;
- out[i * 3 + 0] = (tmp & 0xF800) >> 8;
- out[i * 3 + 1] = (tmp & 0x07E0) >> 3;
- out[i * 3 + 2] = (tmp & 0x001F) << 3;
- }
- out += c->pic.linesize[0];
- }
- break;
#ifdef ZMBV_ENABLE_24BPP
case ZMBV_FMT_24BPP:
- for (j = 0; j < c->height; j++) {
- memcpy(out, src, c->width * 3);
- src += c->width * 3;
- out += c->pic.linesize[0];
- }
- break;
-#endif //ZMBV_ENABLE_24BPP
+#endif
case ZMBV_FMT_32BPP:
for (j = 0; j < c->height; j++) {
- for (i = 0; i < c->width; i++) {
- uint32_t tmp = AV_RL32(src);
- src += 4;
- AV_WB24(out+(i*3), tmp);
- }
+ memcpy(out, src, c->stride);
+ src += c->stride;
out += c->pic.linesize[0];
}
break;
@@ -626,7 +599,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
// Needed if zlib unused or init aborted before inflateInit
memset(&c->zstream, 0, sizeof(z_stream));
- avctx->pix_fmt = AV_PIX_FMT_RGB24;
c->decomp_size = (avctx->width + 255) * 4 * (avctx->height + 64);
/* Allocate decompression buffer */
diff --git a/tests/ref/fate/zmbv-15bit b/tests/ref/fate/zmbv-15bit
index f054a9d781..384bb650b7 100644
--- a/tests/ref/fate/zmbv-15bit
+++ b/tests/ref/fate/zmbv-15bit
@@ -1,160 +1,160 @@
#tb 0: 250000/1585341
-0, 0, 0, 1, 192000, 0xe1d317d6
-0, 1, 1, 1, 192000, 0xe100109d
-0, 2, 2, 1, 192000, 0xecc69c65
-0, 3, 3, 1, 192000, 0x68f06324
-0, 4, 4, 1, 192000, 0x68f06324
-0, 5, 5, 1, 192000, 0x68f06324
-0, 6, 6, 1, 192000, 0x68f06324
-0, 7, 7, 1, 192000, 0x68f06324
-0, 8, 8, 1, 192000, 0x68f06324
-0, 9, 9, 1, 192000, 0x68f06324
-0, 10, 10, 1, 192000, 0x68f06324
-0, 11, 11, 1, 192000, 0x68f06324
-0, 12, 12, 1, 192000, 0x68f06324
-0, 13, 13, 1, 192000, 0x68f06324
-0, 14, 14, 1, 192000, 0x68f06324
-0, 15, 15, 1, 192000, 0x68f06324
-0, 16, 16, 1, 192000, 0x68f06324
-0, 17, 17, 1, 192000, 0x4c03d2e3
-0, 18, 18, 1, 192000, 0x4c03d2e3
-0, 19, 19, 1, 192000, 0x4c03d2e3
-0, 20, 20, 1, 192000, 0x4c03d2e3
-0, 21, 21, 1, 192000, 0xb562cf68
-0, 22, 22, 1, 192000, 0xb562cf68
-0, 23, 23, 1, 192000, 0xb562cf68
-0, 24, 24, 1, 192000, 0xb562cf68
-0, 25, 25, 1, 192000, 0xb562cf68
-0, 26, 26, 1, 192000, 0x0e5e03c7
-0, 27, 27, 1, 192000, 0x0e5e03c7
-0, 28, 28, 1, 192000, 0x0e5e03c7
-0, 29, 29, 1, 192000, 0x0e5e03c7
-0, 30, 30, 1, 192000, 0xeb2e0f67
-0, 31, 31, 1, 192000, 0xeb2e0f67
-0, 32, 32, 1, 192000, 0xeb2e0f67
-0, 33, 33, 1, 192000, 0xeb2e0f67
-0, 34, 34, 1, 192000, 0xeb2e0f67
-0, 35, 35, 1, 192000, 0xdce603c7
-0, 36, 36, 1, 192000, 0xdce603c7
-0, 37, 37, 1, 192000, 0xdce603c7
-0, 38, 38, 1, 192000, 0xdce603c7
-0, 39, 39, 1, 192000, 0xa8e7db08
-0, 40, 40, 1, 192000, 0xa8e7db08
-0, 41, 41, 1, 192000, 0xa8e7db08
-0, 42, 42, 1, 192000, 0xa8e7db08
-0, 43, 43, 1, 192000, 0xa8e7db08
-0, 44, 44, 1, 192000, 0x322a1b07
-0, 45, 45, 1, 192000, 0x322a1b07
-0, 46, 46, 1, 192000, 0x322a1b07
-0, 47, 47, 1, 192000, 0x322a1b07
-0, 48, 48, 1, 192000, 0x743206af
-0, 49, 49, 1, 192000, 0x743206af
-0, 50, 50, 1, 192000, 0x743206af
-0, 51, 51, 1, 192000, 0x743206af
-0, 52, 52, 1, 192000, 0x743206af
-0, 53, 53, 1, 192000, 0x50195ddf
-0, 54, 54, 1, 192000, 0x50195ddf
-0, 55, 55, 1, 192000, 0x50195ddf
-0, 56, 56, 1, 192000, 0x50195ddf
-0, 57, 57, 1, 192000, 0xd31620d7
-0, 58, 58, 1, 192000, 0xd31620d7
-0, 59, 59, 1, 192000, 0xd31620d7
-0, 60, 60, 1, 192000, 0xd31620d7
-0, 61, 61, 1, 192000, 0xd31620d7
-0, 62, 62, 1, 192000, 0x3af023bf
-0, 63, 63, 1, 192000, 0x3af023bf
-0, 64, 64, 1, 192000, 0x3af023bf
-0, 65, 65, 1, 192000, 0x3af023bf
-0, 66, 66, 1, 192000, 0x561a124f
-0, 67, 67, 1, 192000, 0x561a124f
-0, 68, 68, 1, 192000, 0x561a124f
-0, 69, 69, 1, 192000, 0x561a124f
-0, 70, 70, 1, 192000, 0x561a124f
-0, 71, 71, 1, 192000, 0x99210c7f
-0, 72, 72, 1, 192000, 0x99210c7f
-0, 73, 73, 1, 192000, 0x99210c7f
-0, 74, 74, 1, 192000, 0x99210c7f
-0, 75, 75, 1, 192000, 0xc77b03c7
-0, 76, 76, 1, 192000, 0xc77b03c7
-0, 77, 77, 1, 192000, 0xc77b03c7
-0, 78, 78, 1, 192000, 0xc77b03c7
-0, 79, 79, 1, 192000, 0xc77b03c7
-0, 80, 80, 1, 192000, 0x83ea7550
-0, 81, 81, 1, 192000, 0xec285270
-0, 82, 82, 1, 192000, 0x0e075558
-0, 83, 83, 1, 192000, 0x880c2108
-0, 84, 84, 1, 192000, 0x40c523f0
-0, 85, 85, 1, 192000, 0x01378f78
-0, 86, 86, 1, 192000, 0x42045558
-0, 87, 87, 1, 192000, 0xde8f3278
-0, 88, 88, 1, 192000, 0xa58c0110
-0, 89, 89, 1, 192000, 0x335ea9d1
-0, 90, 90, 1, 192000, 0x7e94bb41
-0, 91, 91, 1, 192000, 0x9cc5d569
-0, 92, 92, 1, 192000, 0xe942e109
-0, 93, 93, 1, 192000, 0x4cb83848
-0, 94, 94, 1, 192000, 0x6986fe19
-0, 95, 95, 1, 192000, 0xbb8c23f0
-0, 96, 96, 1, 192000, 0x296766c8
-0, 97, 97, 1, 192000, 0xb4230cb0
-0, 98, 98, 1, 192000, 0x2c2f1850
-0, 99, 99, 1, 192000, 0x93c70110
-0, 100, 100, 1, 192000, 0xb830a9d1
-0, 101, 101, 1, 192000, 0xbed48fa9
-0, 102, 102, 1, 192000, 0xc087bb41
-0, 103, 103, 1, 192000, 0x792de6d9
-0, 104, 104, 1, 192000, 0x1edaf849
-0, 105, 105, 1, 192000, 0x6564bb41
-0, 106, 106, 1, 192000, 0x9153d569
-0, 107, 107, 1, 192000, 0xe73ff561
-0, 108, 108, 1, 192000, 0xfa3be3f1
-0, 109, 109, 1, 192000, 0x8008fe19
-0, 110, 110, 1, 192000, 0xd2561b38
-0, 111, 111, 1, 192000, 0xae3c26d8
-0, 112, 112, 1, 192000, 0xb0114f88
-0, 113, 113, 1, 192000, 0x117e1e20
-0, 114, 114, 1, 192000, 0x482d1280
-0, 115, 115, 1, 192000, 0x425106e0
-0, 116, 116, 1, 192000, 0x0e6b0cb0
-0, 117, 117, 1, 192000, 0x95dc2ca8
-0, 118, 118, 1, 192000, 0x52097b20
-0, 119, 119, 1, 192000, 0x41a84f88
-0, 120, 120, 1, 192000, 0xb78d7268
-0, 121, 121, 1, 192000, 0x2cd366c8
-0, 122, 122, 1, 192000, 0xbf39e109
-0, 123, 123, 1, 192000, 0xecbaeca9
-0, 124, 124, 1, 192000, 0x3254eca9
-0, 125, 125, 1, 192000, 0x3fc903f8
-0, 126, 126, 1, 192000, 0x0bbc5e10
-0, 127, 127, 1, 192000, 0xe9103560
-0, 128, 128, 1, 192000, 0xbd5d2f90
-0, 129, 129, 1, 192000, 0x7ace2ca8
-0, 130, 130, 1, 192000, 0x7354c6e1
-0, 131, 131, 1, 192000, 0x72e0d569
-0, 132, 132, 1, 192000, 0xa4ade3f1
-0, 133, 133, 1, 192000, 0xf2f8cf99
-0, 134, 134, 1, 192000, 0x2b7ee6d9
-0, 135, 135, 1, 192000, 0x548d1b38
-0, 136, 136, 1, 192000, 0xa1551b38
-0, 137, 137, 1, 192000, 0xfb3e3560
-0, 138, 138, 1, 192000, 0x3aaaccb1
-0, 139, 139, 1, 192000, 0xa85ee109
-0, 140, 140, 1, 192000, 0xc1bff849
-0, 141, 141, 1, 192000, 0xa62bef91
-0, 142, 142, 1, 192000, 0xddf40cb0
-0, 143, 143, 1, 192000, 0x15bb3e18
-0, 144, 144, 1, 192000, 0x92fd5558
-0, 145, 145, 1, 192000, 0x2d365270
-0, 146, 146, 1, 192000, 0xb5f343e8
-0, 147, 147, 1, 192000, 0x93042108
-0, 148, 148, 1, 192000, 0x96d59830
-0, 149, 149, 1, 192000, 0x1f69ddf0
-0, 150, 150, 1, 192000, 0x8eb0124f
-0, 151, 151, 1, 192000, 0xae727dd7
-0, 152, 152, 1, 192000, 0xb8a63aff
-0, 153, 153, 1, 192000, 0xfae83de7
-0, 154, 154, 1, 192000, 0x2f034987
-0, 155, 155, 1, 192000, 0xa99e1537
-0, 156, 156, 1, 192000, 0x0ad70c7f
-0, 157, 157, 1, 192000, 0x74b3e990
-0, 158, 158, 1, 192000, 0x1bf0d250
+0, 0, 0, 1, 192000, 0x8f9020f2
+0, 1, 1, 1, 192000, 0xbfba7f63
+0, 2, 2, 1, 192000, 0x96b48d11
+0, 3, 3, 1, 192000, 0xf91727d5
+0, 4, 4, 1, 192000, 0xf91727d5
+0, 5, 5, 1, 192000, 0xf91727d5
+0, 6, 6, 1, 192000, 0xf91727d5
+0, 7, 7, 1, 192000, 0xf91727d5
+0, 8, 8, 1, 192000, 0xf91727d5
+0, 9, 9, 1, 192000, 0xf91727d5
+0, 10, 10, 1, 192000, 0xf91727d5
+0, 11, 11, 1, 192000, 0xf91727d5
+0, 12, 12, 1, 192000, 0xf91727d5
+0, 13, 13, 1, 192000, 0xf91727d5
+0, 14, 14, 1, 192000, 0xf91727d5
+0, 15, 15, 1, 192000, 0xf91727d5
+0, 16, 16, 1, 192000, 0xf91727d5
+0, 17, 17, 1, 192000, 0x61c4e431
+0, 18, 18, 1, 192000, 0x61c4e431
+0, 19, 19, 1, 192000, 0x61c4e431
+0, 20, 20, 1, 192000, 0x61c4e431
+0, 21, 21, 1, 192000, 0x1fb3f649
+0, 22, 22, 1, 192000, 0x1fb3f649
+0, 23, 23, 1, 192000, 0x1fb3f649
+0, 24, 24, 1, 192000, 0x1fb3f649
+0, 25, 25, 1, 192000, 0x1fb3f649
+0, 26, 26, 1, 192000, 0x14f72c22
+0, 27, 27, 1, 192000, 0x14f72c22
+0, 28, 28, 1, 192000, 0x14f72c22
+0, 29, 29, 1, 192000, 0x14f72c22
+0, 30, 30, 1, 192000, 0x8cae3816
+0, 31, 31, 1, 192000, 0x8cae3816
+0, 32, 32, 1, 192000, 0x8cae3816
+0, 33, 33, 1, 192000, 0x8cae3816
+0, 34, 34, 1, 192000, 0x8cae3816
+0, 35, 35, 1, 192000, 0x2b6f2c22
+0, 36, 36, 1, 192000, 0x2b6f2c22
+0, 37, 37, 1, 192000, 0x2b6f2c22
+0, 38, 38, 1, 192000, 0x2b6f2c22
+0, 39, 39, 1, 192000, 0xc568024c
+0, 40, 40, 1, 192000, 0xc568024c
+0, 41, 41, 1, 192000, 0xc568024c
+0, 42, 42, 1, 192000, 0xc568024c
+0, 43, 43, 1, 192000, 0xc568024c
+0, 44, 44, 1, 192000, 0xa93b440a
+0, 45, 45, 1, 192000, 0xa93b440a
+0, 46, 46, 1, 192000, 0xa93b440a
+0, 47, 47, 1, 192000, 0xa93b440a
+0, 48, 48, 1, 192000, 0x798a2f1f
+0, 49, 49, 1, 192000, 0x798a2f1f
+0, 50, 50, 1, 192000, 0x798a2f1f
+0, 51, 51, 1, 192000, 0x798a2f1f
+0, 52, 52, 1, 192000, 0x798a2f1f
+0, 53, 53, 1, 192000, 0xf04288c5
+0, 54, 54, 1, 192000, 0xf04288c5
+0, 55, 55, 1, 192000, 0xf04288c5
+0, 56, 56, 1, 192000, 0xf04288c5
+0, 57, 57, 1, 192000, 0x4aa04a04
+0, 58, 58, 1, 192000, 0x4aa04a04
+0, 59, 59, 1, 192000, 0x4aa04a04
+0, 60, 60, 1, 192000, 0x4aa04a04
+0, 61, 61, 1, 192000, 0x4aa04a04
+0, 62, 62, 1, 192000, 0xb0304d01
+0, 63, 63, 1, 192000, 0xb0304d01
+0, 64, 64, 1, 192000, 0xb0304d01
+0, 65, 65, 1, 192000, 0xb0304d01
+0, 66, 66, 1, 192000, 0xef353b13
+0, 67, 67, 1, 192000, 0xef353b13
+0, 68, 68, 1, 192000, 0xef353b13
+0, 69, 69, 1, 192000, 0xef353b13
+0, 70, 70, 1, 192000, 0xef353b13
+0, 71, 71, 1, 192000, 0xbf823519
+0, 72, 72, 1, 192000, 0xbf823519
+0, 73, 73, 1, 192000, 0xbf823519
+0, 74, 74, 1, 192000, 0xbf823519
+0, 75, 75, 1, 192000, 0xd0352c22
+0, 76, 76, 1, 192000, 0xd0352c22
+0, 77, 77, 1, 192000, 0xd0352c22
+0, 78, 78, 1, 192000, 0xd0352c22
+0, 79, 79, 1, 192000, 0xd0352c22
+0, 80, 80, 1, 192000, 0x817299a6
+0, 81, 81, 1, 192000, 0xfb1475ca
+0, 82, 82, 1, 192000, 0xfcd278c7
+0, 83, 83, 1, 192000, 0xa08742fd
+0, 84, 84, 1, 192000, 0x47c245fa
+0, 85, 85, 1, 192000, 0xf7e7b48b
+0, 86, 86, 1, 192000, 0xf56378c7
+0, 87, 87, 1, 192000, 0x80bc54eb
+0, 88, 88, 1, 192000, 0xae59221e
+0, 89, 89, 1, 192000, 0x7d0fc869
+0, 90, 90, 1, 192000, 0x8e89da57
+0, 91, 91, 1, 192000, 0xf0a9f53c
+0, 92, 92, 1, 192000, 0x658d013f
+0, 93, 93, 1, 192000, 0x90ef5ae5
+0, 94, 94, 1, 192000, 0x93b81f21
+0, 95, 95, 1, 192000, 0x61e545fa
+0, 96, 96, 1, 192000, 0xc6688ab5
+0, 97, 97, 1, 192000, 0x72032e12
+0, 98, 98, 1, 192000, 0xf28c3a06
+0, 99, 99, 1, 192000, 0xf1bc221e
+0, 100, 100, 1, 192000, 0x941bc869
+0, 101, 101, 1, 192000, 0xe95ead84
+0, 102, 102, 1, 192000, 0x61dbda57
+0, 103, 103, 1, 192000, 0x79800739
+0, 104, 104, 1, 192000, 0x00c31927
+0, 105, 105, 1, 192000, 0x74a3da57
+0, 106, 106, 1, 192000, 0xb98cf53c
+0, 107, 107, 1, 192000, 0xd3f9162a
+0, 108, 108, 1, 192000, 0x888c043c
+0, 109, 109, 1, 192000, 0x100f1f21
+0, 110, 110, 1, 192000, 0x41993d03
+0, 111, 111, 1, 192000, 0x01a548f7
+0, 112, 112, 1, 192000, 0xbe5372cd
+0, 113, 113, 1, 192000, 0x0fec4000
+0, 114, 114, 1, 192000, 0x80e9340c
+0, 115, 115, 1, 192000, 0xea582818
+0, 116, 116, 1, 192000, 0x5c3a2e12
+0, 117, 117, 1, 192000, 0x5c2b4ef1
+0, 118, 118, 1, 192000, 0xf2409fa0
+0, 119, 119, 1, 192000, 0x4bc472cd
+0, 120, 120, 1, 192000, 0x3dcb96a9
+0, 121, 121, 1, 192000, 0xff978ab5
+0, 122, 122, 1, 192000, 0xff72013f
+0, 123, 123, 1, 192000, 0x2f530d33
+0, 124, 124, 1, 192000, 0xa3350d33
+0, 125, 125, 1, 192000, 0x6be6251b
+0, 126, 126, 1, 192000, 0x07f081be
+0, 127, 127, 1, 192000, 0xb5d957e8
+0, 128, 128, 1, 192000, 0x43c551ee
+0, 129, 129, 1, 192000, 0x19224ef1
+0, 130, 130, 1, 192000, 0x0720e64b
+0, 131, 131, 1, 192000, 0x3c53f53c
+0, 132, 132, 1, 192000, 0x8534043c
+0, 133, 133, 1, 192000, 0xb7c7ef42
+0, 134, 134, 1, 192000, 0x9e3e0739
+0, 135, 135, 1, 192000, 0x95e43d03
+0, 136, 136, 1, 192000, 0x92473d03
+0, 137, 137, 1, 192000, 0x636757e8
+0, 138, 138, 1, 192000, 0xba3aec45
+0, 139, 139, 1, 192000, 0xfd9e013f
+0, 140, 140, 1, 192000, 0x108c1927
+0, 141, 141, 1, 192000, 0x29db1030
+0, 142, 142, 1, 192000, 0xe0172e12
+0, 143, 143, 1, 192000, 0x744260df
+0, 144, 144, 1, 192000, 0xc59478c7
+0, 145, 145, 1, 192000, 0xa84475ca
+0, 146, 146, 1, 192000, 0x9d2866d9
+0, 147, 147, 1, 192000, 0xc49342fd
+0, 148, 148, 1, 192000, 0x13e5bd82
+0, 149, 149, 1, 192000, 0x10d10549
+0, 150, 150, 1, 192000, 0xf5ca3b13
+0, 151, 151, 1, 192000, 0x8c27a9a4
+0, 152, 152, 1, 192000, 0xcc4f64e9
+0, 153, 153, 1, 192000, 0x020c67e6
+0, 154, 154, 1, 192000, 0xaf4773da
+0, 155, 155, 1, 192000, 0x62093e10
+0, 156, 156, 1, 192000, 0x96783519
+0, 157, 157, 1, 192000, 0x8b9a113d
+0, 158, 158, 1, 192000, 0x9050f946
diff --git a/tests/ref/fate/zmbv-16bit b/tests/ref/fate/zmbv-16bit
index b0c3df5513..cb390148f1 100644
--- a/tests/ref/fate/zmbv-16bit
+++ b/tests/ref/fate/zmbv-16bit
@@ -1,123 +1,123 @@
#tb 0: 250000/1585341
-0, 0, 0, 1, 192000, 0x11e62dbe
-0, 1, 1, 1, 192000, 0x31698b8f
-0, 2, 2, 1, 192000, 0x31698b8f
-0, 3, 3, 1, 192000, 0x31698b8f
-0, 4, 4, 1, 192000, 0x31698b8f
-0, 5, 5, 1, 192000, 0x31698b8f
-0, 6, 6, 1, 192000, 0x31698b8f
-0, 7, 7, 1, 192000, 0x31698b8f
-0, 8, 8, 1, 192000, 0x31698b8f
-0, 9, 9, 1, 192000, 0x31698b8f
-0, 10, 10, 1, 192000, 0x31698b8f
-0, 11, 11, 1, 192000, 0x31698b8f
-0, 12, 12, 1, 192000, 0x31698b8f
-0, 13, 13, 1, 192000, 0x4ca609ea
-0, 14, 14, 1, 192000, 0x4ca609ea
-0, 15, 15, 1, 192000, 0x4ca609ea
-0, 16, 16, 1, 192000, 0x4ca609ea
-0, 17, 17, 1, 192000, 0x33dd0a8b
-0, 18, 18, 1, 192000, 0x33dd0a8b
-0, 19, 19, 1, 192000, 0x33dd0a8b
-0, 20, 20, 1, 192000, 0x33dd0a8b
-0, 21, 21, 1, 192000, 0x33dd0a8b
-0, 22, 22, 1, 192000, 0x08e2420f
-0, 23, 23, 1, 192000, 0x08e2420f
-0, 24, 24, 1, 192000, 0x08e2420f
-0, 25, 25, 1, 192000, 0x08e2420f
-0, 26, 26, 1, 192000, 0x7b7b50ab
-0, 27, 27, 1, 192000, 0x7b7b50ab
-0, 28, 28, 1, 192000, 0x7b7b50ab
-0, 29, 29, 1, 192000, 0x7b7b50ab
-0, 30, 30, 1, 192000, 0x7b7b50ab
-0, 31, 31, 1, 192000, 0x128744fb
-0, 32, 32, 1, 192000, 0x128744fb
-0, 33, 33, 1, 192000, 0x128744fb
-0, 34, 34, 1, 192000, 0x128744fb
-0, 35, 35, 1, 192000, 0x8643163b
-0, 36, 36, 1, 192000, 0x8643163b
-0, 37, 37, 1, 192000, 0x8643163b
-0, 38, 38, 1, 192000, 0x8643163b
-0, 39, 39, 1, 192000, 0x8643163b
-0, 40, 40, 1, 192000, 0x4f7c596f
-0, 41, 41, 1, 192000, 0x4f7c596f
-0, 42, 42, 1, 192000, 0x4f7c596f
-0, 43, 43, 1, 192000, 0x4f7c596f
-0, 44, 44, 1, 192000, 0xa275420f
-0, 45, 45, 1, 192000, 0xa275420f
-0, 46, 46, 1, 192000, 0xa275420f
-0, 47, 47, 1, 192000, 0xa275420f
-0, 48, 48, 1, 192000, 0xa275420f
-0, 49, 49, 1, 192000, 0x2e4796cb
-0, 50, 50, 1, 192000, 0x2e4796cb
-0, 51, 51, 1, 192000, 0x2e4796cb
-0, 52, 52, 1, 192000, 0x2e4796cb
-0, 53, 53, 1, 192000, 0xebd45683
-0, 54, 54, 1, 192000, 0xebd45683
-0, 55, 55, 1, 192000, 0xebd45683
-0, 56, 56, 1, 192000, 0xebd45683
-0, 57, 57, 1, 192000, 0xebd45683
-0, 58, 58, 1, 192000, 0x0bf6596f
-0, 59, 59, 1, 192000, 0x0bf6596f
-0, 60, 60, 1, 192000, 0x0bf6596f
-0, 61, 61, 1, 192000, 0x0bf6596f
-0, 62, 62, 1, 192000, 0xb7af47e7
-0, 63, 63, 1, 192000, 0xb7af47e7
-0, 64, 64, 1, 192000, 0xb7af47e7
-0, 65, 65, 1, 192000, 0xb7af47e7
-0, 66, 66, 1, 192000, 0xb7af47e7
-0, 67, 67, 1, 192000, 0x8bc344fb
-0, 68, 68, 1, 192000, 0x8bc344fb
-0, 69, 69, 1, 192000, 0x8bc344fb
-0, 70, 70, 1, 192000, 0x8bc344fb
-0, 71, 71, 1, 192000, 0x8bc344fb
-0, 72, 72, 1, 192000, 0x02a23f23
-0, 73, 73, 1, 192000, 0x02a23f23
-0, 74, 74, 1, 192000, 0x02a23f23
-0, 75, 75, 1, 192000, 0x02a23f23
-0, 76, 76, 1, 192000, 0x17be3087
-0, 77, 77, 1, 192000, 0x52c7b2d4
-0, 78, 78, 1, 192000, 0xa05e9888
-0, 79, 79, 1, 192000, 0x4d6a6cb4
-0, 80, 80, 1, 192000, 0x3e2189ec
-0, 81, 81, 1, 192000, 0xfbe3ca34
-0, 82, 82, 1, 192000, 0xa9cd8fc4
-0, 83, 83, 1, 192000, 0x986e6cb4
-0, 84, 84, 1, 192000, 0x42373b08
-0, 85, 85, 1, 192000, 0xab96e351
-0, 86, 86, 1, 192000, 0x28ccf4d9
-0, 87, 87, 1, 192000, 0xc19e0f34
-0, 88, 88, 1, 192000, 0xd8da1ae4
-0, 89, 89, 1, 192000, 0xd015728c
-0, 90, 90, 1, 192000, 0x550623a8
-0, 91, 91, 1, 192000, 0x3c5c5268
-0, 92, 92, 1, 192000, 0x3eae8128
-0, 93, 93, 1, 192000, 0x3c51381c
-0, 94, 94, 1, 192000, 0x745046b8
-0, 95, 95, 1, 192000, 0xa8bd43cc
-0, 96, 96, 1, 192000, 0xde8fe351
-0, 97, 97, 1, 192000, 0x3d5cc905
-0, 98, 98, 1, 192000, 0xcf8df4d9
-0, 99, 99, 1, 192000, 0x698b20bc
-0, 100, 100, 1, 192000, 0x159d3244
-0, 101, 101, 1, 192000, 0xba1af4d9
-0, 102, 102, 1, 192000, 0x033a0f34
-0, 103, 103, 1, 192000, 0x72612f58
-0, 104, 104, 1, 192000, 0x11e11dd0
-0, 105, 105, 1, 192000, 0x4fc04f7c
-0, 106, 106, 1, 192000, 0x37779888
-0, 107, 107, 1, 192000, 0xabfc5e18
-0, 108, 108, 1, 192000, 0x0ad97e3c
-0, 109, 109, 1, 192000, 0xddf492b0
-0, 110, 110, 1, 192000, 0x198b23a8
-0, 111, 111, 1, 192000, 0x6b491220
-0, 112, 112, 1, 192000, 0x632417f8
-0, 113, 113, 1, 192000, 0x0dc5381c
-0, 114, 114, 1, 192000, 0x6d548700
-0, 115, 115, 1, 192000, 0xae0c5b2c
-0, 116, 116, 1, 192000, 0x23427e3c
-0, 117, 117, 1, 192000, 0x5def728c
-0, 118, 118, 1, 192000, 0xec831ae4
+0, 0, 0, 1, 192000, 0xe869dc94
+0, 1, 1, 1, 192000, 0x742932f2
+0, 2, 2, 1, 192000, 0x742932f2
+0, 3, 3, 1, 192000, 0x742932f2
+0, 4, 4, 1, 192000, 0x742932f2
+0, 5, 5, 1, 192000, 0x742932f2
+0, 6, 6, 1, 192000, 0x742932f2
+0, 7, 7, 1, 192000, 0x742932f2
+0, 8, 8, 1, 192000, 0x742932f2
+0, 9, 9, 1, 192000, 0x742932f2
+0, 10, 10, 1, 192000, 0x742932f2
+0, 11, 11, 1, 192000, 0x742932f2
+0, 12, 12, 1, 192000, 0x742932f2
+0, 13, 13, 1, 192000, 0xb718e72e
+0, 14, 14, 1, 192000, 0xb718e72e
+0, 15, 15, 1, 192000, 0xb718e72e
+0, 16, 16, 1, 192000, 0xb718e72e
+0, 17, 17, 1, 192000, 0x7507f946
+0, 18, 18, 1, 192000, 0x7507f946
+0, 19, 19, 1, 192000, 0x7507f946
+0, 20, 20, 1, 192000, 0x7507f946
+0, 21, 21, 1, 192000, 0x7507f946
+0, 22, 22, 1, 192000, 0xe620321c
+0, 23, 23, 1, 192000, 0xe620321c
+0, 24, 24, 1, 192000, 0xe620321c
+0, 25, 25, 1, 192000, 0xe620321c
+0, 26, 26, 1, 192000, 0x9b5f410d
+0, 27, 27, 1, 192000, 0x9b5f410d
+0, 28, 28, 1, 192000, 0x9b5f410d
+0, 29, 29, 1, 192000, 0x9b5f410d
+0, 30, 30, 1, 192000, 0x9b5f410d
+0, 31, 31, 1, 192000, 0xea2c3519
+0, 32, 32, 1, 192000, 0xea2c3519
+0, 33, 33, 1, 192000, 0xea2c3519
+0, 34, 34, 1, 192000, 0xea2c3519
+0, 35, 35, 1, 192000, 0x1acb0549
+0, 36, 36, 1, 192000, 0x1acb0549
+0, 37, 37, 1, 192000, 0x1acb0549
+0, 38, 38, 1, 192000, 0x1acb0549
+0, 39, 39, 1, 192000, 0x1acb0549
+0, 40, 40, 1, 192000, 0x3a064a04
+0, 41, 41, 1, 192000, 0x3a064a04
+0, 42, 42, 1, 192000, 0x3a064a04
+0, 43, 43, 1, 192000, 0x3a064a04
+0, 44, 44, 1, 192000, 0xcede321c
+0, 45, 45, 1, 192000, 0xcede321c
+0, 46, 46, 1, 192000, 0xcede321c
+0, 47, 47, 1, 192000, 0xcede321c
+0, 48, 48, 1, 192000, 0xcede321c
+0, 49, 49, 1, 192000, 0xef4988c5
+0, 50, 50, 1, 192000, 0xef4988c5
+0, 51, 51, 1, 192000, 0xef4988c5
+0, 52, 52, 1, 192000, 0xef4988c5
+0, 53, 53, 1, 192000, 0x1fc84707
+0, 54, 54, 1, 192000, 0x1fc84707
+0, 55, 55, 1, 192000, 0x1fc84707
+0, 56, 56, 1, 192000, 0x1fc84707
+0, 57, 57, 1, 192000, 0x1fc84707
+0, 58, 58, 1, 192000, 0xbabd4a04
+0, 59, 59, 1, 192000, 0xbabd4a04
+0, 60, 60, 1, 192000, 0xbabd4a04
+0, 61, 61, 1, 192000, 0xbabd4a04
+0, 62, 62, 1, 192000, 0x649b3816
+0, 63, 63, 1, 192000, 0x649b3816
+0, 64, 64, 1, 192000, 0x649b3816
+0, 65, 65, 1, 192000, 0x649b3816
+0, 66, 66, 1, 192000, 0x649b3816
+0, 67, 67, 1, 192000, 0x206b3519
+0, 68, 68, 1, 192000, 0x206b3519
+0, 69, 69, 1, 192000, 0x206b3519
+0, 70, 70, 1, 192000, 0x206b3519
+0, 71, 71, 1, 192000, 0x206b3519
+0, 72, 72, 1, 192000, 0x25982f1f
+0, 73, 73, 1, 192000, 0x25982f1f
+0, 74, 74, 1, 192000, 0x25982f1f
+0, 75, 75, 1, 192000, 0x25982f1f
+0, 76, 76, 1, 192000, 0xde0e202e
+0, 77, 77, 1, 192000, 0xced09fa0
+0, 78, 78, 1, 192000, 0x3b4f84bb
+0, 79, 79, 1, 192000, 0xa09c57e8
+0, 80, 80, 1, 192000, 0xf3dd75ca
+0, 81, 81, 1, 192000, 0x4d4ab788
+0, 82, 82, 1, 192000, 0x4ac67bc4
+0, 83, 83, 1, 192000, 0xd61057e8
+0, 84, 84, 1, 192000, 0x03bc251b
+0, 85, 85, 1, 192000, 0xd263cb66
+0, 86, 86, 1, 192000, 0xe3dddd54
+0, 87, 87, 1, 192000, 0x460cf839
+0, 88, 88, 1, 192000, 0xbae1043c
+0, 89, 89, 1, 192000, 0xe6435de2
+0, 90, 90, 1, 192000, 0x340e0d33
+0, 91, 91, 1, 192000, 0x9acd3d03
+0, 92, 92, 1, 192000, 0x1d346cd3
+0, 93, 93, 1, 192000, 0xdabe221e
+0, 94, 94, 1, 192000, 0xeb4b310f
+0, 95, 95, 1, 192000, 0xec8f2e12
+0, 96, 96, 1, 192000, 0xe96fcb66
+0, 97, 97, 1, 192000, 0x3ec1b081
+0, 98, 98, 1, 192000, 0xb72fdd54
+0, 99, 99, 1, 192000, 0xced40a36
+0, 100, 100, 1, 192000, 0x56171c24
+0, 101, 101, 1, 192000, 0xc9f7dd54
+0, 102, 102, 1, 192000, 0x0eeff839
+0, 103, 103, 1, 192000, 0x295c1927
+0, 104, 104, 1, 192000, 0xdde00739
+0, 105, 105, 1, 192000, 0x51903a06
+0, 106, 106, 1, 192000, 0xe16a84bb
+0, 107, 107, 1, 192000, 0xf5b248f7
+0, 108, 108, 1, 192000, 0x054769d6
+0, 109, 109, 1, 192000, 0x9d327ec1
+0, 110, 110, 1, 192000, 0x94470d33
+0, 111, 111, 1, 192000, 0x9671fb36
+0, 112, 112, 1, 192000, 0x0853013f
+0, 113, 113, 1, 192000, 0x0844221e
+0, 114, 114, 1, 192000, 0x9e5972cd
+0, 115, 115, 1, 192000, 0xf7ce45fa
+0, 116, 116, 1, 192000, 0xe9d569d6
+0, 117, 117, 1, 192000, 0xabb05de2
+0, 118, 118, 1, 192000, 0x54d5043c
0, 119, 119, 1, 192000, 0x00000000
0, 120, 120, 1, 192000, 0x00000000
0, 121, 121, 1, 192000, 0x00000000