- if ((c->compression == COMP_ZLIB_NORMAL) && (c->imgtype == IMGTYPE_RGB24) &&
- (len == width * height * 3))
- break;
- zret = inflateReset(&(c->zstream));
- if (zret != Z_OK) {
- av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret);
- return -1;
- }
- if (c->flags & FLAG_MULTITHREAD) {
- mthread_inlen = *((unsigned int*)encoded);
- mthread_outlen = *((unsigned int*)(encoded+4));
- if (mthread_outlen > c->decomp_size)
- mthread_outlen = c->decomp_size;
- c->zstream.next_in = encoded + 8;
- c->zstream.avail_in = mthread_inlen;
- c->zstream.next_out = c->decomp_buf;
- c->zstream.avail_out = c->decomp_size;
- zret = inflate(&(c->zstream), Z_FINISH);
- if ((zret != Z_OK) && (zret != Z_STREAM_END)) {
- av_log(avctx, AV_LOG_ERROR, "Mthread1 inflate error: %d\n", zret);
- return -1;
- }
- if (mthread_outlen != (unsigned int)(c->zstream.total_out)) {
- av_log(avctx, AV_LOG_ERROR, "Mthread1 decoded size differs (%u != %lu)\n",
- mthread_outlen, c->zstream.total_out);
- return -1;
- }
- zret = inflateReset(&(c->zstream));
- if (zret != Z_OK) {
- av_log(avctx, AV_LOG_ERROR, "Mthread2 inflate reset error: %d\n", zret);
- return -1;
- }
- c->zstream.next_in = encoded + 8 + mthread_inlen;
- c->zstream.avail_in = len - mthread_inlen;
- c->zstream.next_out = c->decomp_buf + mthread_outlen;
- c->zstream.avail_out = c->decomp_size - mthread_outlen;
- zret = inflate(&(c->zstream), Z_FINISH);
- if ((zret != Z_OK) && (zret != Z_STREAM_END)) {
- av_log(avctx, AV_LOG_ERROR, "Mthread2 inflate error: %d\n", zret);
- return -1;
- }
- if (mthread_outlen != (unsigned int)(c->zstream.total_out)) {
- av_log(avctx, AV_LOG_ERROR, "Mthread2 decoded size differs (%d != %lu)\n",
- mthread_outlen, c->zstream.total_out);
- return -1;