* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
*/
/**
#include "avcodec.h"
-#ifdef CONFIG_ZLIB
#include <zlib.h>
-#endif
#define ZMBV_KEYFRAME 1
#define ZMBV_DELTAPAL 2
int flags;
int bw, bh, bx, by;
int decomp_len;
-#ifdef CONFIG_ZLIB
z_stream zstream;
-#endif
int (*decode_intra)(struct ZmbvContext *c);
int (*decode_xor)(struct ZmbvContext *c);
} ZmbvContext;
prev += c->width * c->bh;
}
if(src - c->decomp_buf != c->decomp_len)
- av_log(c->avctx, AV_LOG_ERROR, "Used %i of %i bytes\n", src-c->decomp_buf, c->decomp_len);
+ av_log(c->avctx, AV_LOG_ERROR, "Used %ti of %i bytes\n", src-c->decomp_buf, c->decomp_len);
return 0;
}
prev += c->width * c->bh;
}
if(src - c->decomp_buf != c->decomp_len)
- av_log(c->avctx, AV_LOG_ERROR, "Used %i of %i bytes\n", src-c->decomp_buf, c->decomp_len);
+ av_log(c->avctx, AV_LOG_ERROR, "Used %ti of %i bytes\n", src-c->decomp_buf, c->decomp_len);
return 0;
}
prev += c->width * c->bh;
}
if(src - c->decomp_buf != c->decomp_len)
- av_log(c->avctx, AV_LOG_ERROR, "Used %i of %i bytes\n", src-c->decomp_buf, c->decomp_len);
+ av_log(c->avctx, AV_LOG_ERROR, "Used %ti of %i bytes\n", src-c->decomp_buf, c->decomp_len);
return 0;
}
{
ZmbvContext * const c = avctx->priv_data;
uint8_t *outptr;
-#ifdef CONFIG_ZLIB
int zret = Z_OK; // Zlib return code
-#endif
int len = buf_size;
int hi_ver, lo_ver;
av_log(avctx, AV_LOG_ERROR, "Unsupported (for now) format %i\n", c->fmt);
return -1;
}
-#ifdef CONFIG_ZLIB
+
zret = inflateReset(&c->zstream);
if (zret != Z_OK) {
av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret);
return -1;
}
-#else
- av_log(avctx, AV_LOG_ERROR, "BUG! Zlib support not compiled in frame decoder.\n");
- return -1;
-#endif /* CONFIG_ZLIB */
+
c->cur = av_realloc(c->cur, avctx->width * avctx->height * (c->bpp / 8));
c->prev = av_realloc(c->prev, avctx->width * avctx->height * (c->bpp / 8));
c->bx = (c->width + c->bw - 1) / c->bw;
memcpy(c->decomp_buf, buf, len);
c->decomp_size = 1;
} else { // ZLIB-compressed data
-#ifdef CONFIG_ZLIB
c->zstream.total_in = c->zstream.total_out = 0;
c->zstream.next_in = buf;
c->zstream.avail_in = len;
c->zstream.avail_out = c->decomp_size;
inflate(&c->zstream, Z_FINISH);
c->decomp_len = c->zstream.total_out;
-#else
- av_log(avctx, AV_LOG_ERROR, "BUG! Zlib support not compiled in frame decoder.\n");
- return -1;
-#endif
}
if(c->flags & ZMBV_KEYFRAME) {
c->pic.key_frame = 1;
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++;
+ src++;
}
out += c->pic.linesize[0];
}
for(i = 0; i < c->width; i++) {
uint32_t tmp = AV_RL32(src);
src += 4;
- out[i * 3 + 0] = tmp >> 16;
- out[i * 3 + 1] = tmp >> 8;
- out[i * 3 + 2] = tmp >> 0;
+ AV_WB24(out+(i*3), tmp);
}
out += c->pic.linesize[0];
}
}
c->bpp = avctx->bits_per_sample;
-#ifdef CONFIG_ZLIB
// Needed if zlib unused or init aborted before inflateInit
memset(&(c->zstream), 0, sizeof(z_stream));
-#else
- av_log(avctx, AV_LOG_ERROR, "Zlib support not compiled.\n");
- return 1;
-#endif
+
avctx->pix_fmt = PIX_FMT_RGB24;
c->decomp_size = (avctx->width + 255) * 4 * (avctx->height + 64);
}
}
-#ifdef CONFIG_ZLIB
c->zstream.zalloc = Z_NULL;
c->zstream.zfree = Z_NULL;
c->zstream.opaque = Z_NULL;
av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret);
return 1;
}
-#endif
return 0;
}
if (c->pic.data[0])
avctx->release_buffer(avctx, &c->pic);
-#ifdef CONFIG_ZLIB
inflateEnd(&(c->zstream));
-#endif
av_freep(&c->cur);
av_freep(&c->prev);