#include <stdio.h>
#include <stdlib.h>
-#include <zlib.h>
-#include "common.h"
#include "avcodec.h"
#include "bitstream.h"
+#include <zlib.h>
+
typedef struct FlashSVContext {
AVCodecContext *avctx;
AVFrame frame;
}
-static int flashsv_decode_init(AVCodecContext *avctx)
+static av_cold int flashsv_decode_init(AVCodecContext *avctx)
{
- FlashSVContext *s = (FlashSVContext *)avctx->priv_data;
+ FlashSVContext *s = avctx->priv_data;
int zret; // Zlib return code
s->avctx = avctx;
return 1;
}
avctx->pix_fmt = PIX_FMT_BGR24;
- avctx->has_b_frames = 0;
s->frame.data[0] = NULL;
return 0;
static int flashsv_decode_frame(AVCodecContext *avctx,
void *data, int *data_size,
- uint8_t *buf, int buf_size)
+ const uint8_t *buf, int buf_size)
{
- FlashSVContext *s = (FlashSVContext *)avctx->priv_data;
+ FlashSVContext *s = avctx->priv_data;
int h_blocks, v_blocks, h_part, v_part, i, j;
GetBitContext gb;
ret = inflate(&(s->zstream), Z_FINISH);
if (ret == Z_DATA_ERROR)
{
- av_log(avctx, AV_LOG_ERROR, "Zlib resync occured\n");
+ av_log(avctx, AV_LOG_ERROR, "Zlib resync occurred\n");
inflateSync(&(s->zstream));
ret = inflate(&(s->zstream), Z_FINISH);
}
}
-static int flashsv_decode_end(AVCodecContext *avctx)
+static av_cold int flashsv_decode_end(AVCodecContext *avctx)
{
- FlashSVContext *s = (FlashSVContext *)avctx->priv_data;
+ FlashSVContext *s = avctx->priv_data;
inflateEnd(&(s->zstream));
/* release the frame if needed */
if (s->frame.data[0])
flashsv_decode_end,
flashsv_decode_frame,
CODEC_CAP_DR1,
- .pix_fmts = (enum PixelFormat[]){PIX_FMT_BGR24, -1},
+ .pix_fmts = (enum PixelFormat[]){PIX_FMT_BGR24, PIX_FMT_NONE},
+ .long_name = NULL_IF_CONFIG_SMALL("Flash Screen Video v1"),
};