Lines Matching refs:cin

46 static av_cold void destroy_buffers(CinVideoContext *cin)
51 av_freep(&cin->bitmap_table[i]);
54 static av_cold int allocate_buffers(CinVideoContext *cin)
59 cin->bitmap_table[i] = av_mallocz(cin->bitmap_size);
60 if (!cin->bitmap_table[i]) {
61 av_log(cin->avctx, AV_LOG_ERROR, "Can't allocate bitmap buffers.\n");
71 CinVideoContext *cin = avctx->priv_data;
73 cin->avctx = avctx;
76 cin->frame = av_frame_alloc();
77 if (!cin->frame)
80 cin->bitmap_size = avctx->width * avctx->height;
81 if (allocate_buffers(cin))
202 CinVideoContext *cin = avctx->priv_data;
220 cin->palette[i] = 0xFFU << 24 | bytestream_get_le24(&buf);
225 cin->palette[buf[0]] = 0xFFU << 24 | AV_RL24(buf + 1);
236 cin->bitmap_table[CIN_CUR_BMP], cin->bitmap_size);
242 cin->bitmap_table[CIN_CUR_BMP], cin->bitmap_size);
245 cin_apply_delta_data(cin->bitmap_table[CIN_PRE_BMP],
246 cin->bitmap_table[CIN_CUR_BMP], cin->bitmap_size);
250 cin->bitmap_table[CIN_INT_BMP], cin->bitmap_size);
251 res = cin_decode_rle(cin->bitmap_table[CIN_INT_BMP], bitmap_frame_size,
252 cin->bitmap_table[CIN_CUR_BMP], cin->bitmap_size);
258 cin->bitmap_table[CIN_INT_BMP],
259 cin->bitmap_size);
260 res = cin_decode_rle(cin->bitmap_table[CIN_INT_BMP], bitmap_frame_size,
261 cin->bitmap_table[CIN_CUR_BMP], cin->bitmap_size);
264 cin_apply_delta_data(cin->bitmap_table[CIN_PRE_BMP],
265 cin->bitmap_table[CIN_CUR_BMP], cin->bitmap_size);
269 cin->bitmap_table[CIN_CUR_BMP], cin->bitmap_size);
271 if (cin->bitmap_size - avctx->discard_damaged_percentage*cin->bitmap_size/100 > res)
276 cin->bitmap_table[CIN_CUR_BMP],
277 cin->bitmap_size);
283 cin->bitmap_table[CIN_CUR_BMP],
284 cin->bitmap_size);
287 cin_apply_delta_data(cin->bitmap_table[CIN_PRE_BMP],
288 cin->bitmap_table[CIN_CUR_BMP], cin->bitmap_size);
292 if ((res = ff_reget_buffer(avctx, cin->frame, 0)) < 0)
295 memcpy(cin->frame->data[1], cin->palette, sizeof(cin->palette));
296 cin->frame->palette_has_changed = 1;
297 for (y = 0; y < cin->avctx->height; ++y)
298 memcpy(cin->frame->data[0] + (cin->avctx->height - 1 - y) * cin->frame->linesize[0],
299 cin->bitmap_table[CIN_CUR_BMP] + y * cin->avctx->width,
300 cin->avctx->width);
302 FFSWAP(uint8_t *, cin->bitmap_table[CIN_CUR_BMP],
303 cin->bitmap_table[CIN_PRE_BMP]);
305 if ((res = av_frame_ref(rframe, cin->frame)) < 0)
315 CinVideoContext *cin = avctx->priv_data;
317 av_frame_free(&cin->frame);
319 destroy_buffers(cin);