uint8_t *previous_frame;
int image_width, image_height;
int block_width, block_height;
- uint8_t *tmpblock;
uint8_t *encbuffer;
int block_size;
- z_stream zstream;
int last_key_frame;
+ uint8_t tmpblock[3 * 256 * 256];
} FlashSVContext;
static int copy_region_enc(uint8_t *sptr, uint8_t *dptr, int dx, int dy,
{
FlashSVContext *s = avctx->priv_data;
- deflateEnd(&s->zstream);
-
av_freep(&s->encbuffer);
av_freep(&s->previous_frame);
- av_freep(&s->tmpblock);
return 0;
}
return AVERROR_INVALIDDATA;
}
- // Needed if zlib unused or init aborted before deflateInit
- memset(&s->zstream, 0, sizeof(z_stream));
-
s->last_key_frame = 0;
s->image_width = avctx->width;
s->image_height = avctx->height;
- s->tmpblock = av_mallocz(3 * 256 * 256);
s->encbuffer = av_mallocz(s->image_width * s->image_height * 3);
- if (!s->tmpblock || !s->encbuffer) {
+ if (!s->encbuffer) {
av_log(avctx, AV_LOG_ERROR, "Memory allocation failed.\n");
return AVERROR(ENOMEM);
}
ret = compress2(ptr + 2, &zsize, s->tmpblock,
3 * cur_blk_width * cur_blk_height, 9);
- //ret = deflateReset(&s->zstream);
if (ret != Z_OK)
av_log(s->avctx, AV_LOG_ERROR,
"error while compressing block %dx%d\n", i, j);
//mark the frame type so the muxer can mux it correctly
if (I_frame) {
-#if FF_API_CODED_FRAME
-FF_DISABLE_DEPRECATION_WARNINGS
- avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I;
- avctx->coded_frame->key_frame = 1;
-FF_ENABLE_DEPRECATION_WARNINGS
-#endif
s->last_key_frame = avctx->frame_number;
ff_dlog(avctx, "Inserting keyframe at frame %d\n", avctx->frame_number);
- } else {
-#if FF_API_CODED_FRAME
-FF_DISABLE_DEPRECATION_WARNINGS
- avctx->coded_frame->pict_type = AV_PICTURE_TYPE_P;
- avctx->coded_frame->key_frame = 0;
-FF_ENABLE_DEPRECATION_WARNINGS
-#endif
}
if (I_frame)
return 0;
}
-AVCodec ff_flashsv_encoder = {
+const AVCodec ff_flashsv_encoder = {
.name = "flashsv",
.long_name = NULL_IF_CONFIG_SMALL("Flash Screen Video"),
.type = AVMEDIA_TYPE_VIDEO,