Пример #1
0
static av_cold int jpg_init(AVCodecContext *avctx, JPGContext *c)
{
    int ret;

    ret = build_vlc(&c->dc_vlc[0], avpriv_mjpeg_bits_dc_luminance,
                    avpriv_mjpeg_val_dc, 12, 0);
    if (ret)
        return ret;
    ret = build_vlc(&c->dc_vlc[1], avpriv_mjpeg_bits_dc_chrominance,
                    avpriv_mjpeg_val_dc, 12, 0);
    if (ret)
        return ret;
    ret = build_vlc(&c->ac_vlc[0], avpriv_mjpeg_bits_ac_luminance,
                    avpriv_mjpeg_val_ac_luminance, 251, 1);
    if (ret)
        return ret;
    ret = build_vlc(&c->ac_vlc[1], avpriv_mjpeg_bits_ac_chrominance,
                    avpriv_mjpeg_val_ac_chrominance, 251, 1);
    if (ret)
        return ret;

    ff_dsputil_init(&c->dsp, avctx);
    ff_init_scantable(c->dsp.idct_permutation, &c->scantable,
                      ff_zigzag_direct);

    return 0;
}
Пример #2
0
int build_dec_vlc(jpeg_ctx_t *ctx)
{
	int ret;

	if (ctx->is_std_vlc[0][0] == 0)
	{
		ret = build_vlc(&ctx->dec_vlcs[0][0], ctx->dht_dc[0].len, ctx->dht_dc[0].val, 12, 0);
		if (ret != 0)
			return -1;
	}
	else
		ctx->dec_vlcs[0][0].table = ctx->std_dec_vlcs[0][0].table;

	if (ctx->is_std_vlc[0][1] == 0)
	{
		ret = build_vlc(&ctx->dec_vlcs[0][1], ctx->dht_dc[1].len, ctx->dht_dc[1].val, 12, 0);
		if (ret != 0)
			return -1;
	}
	else
		ctx->dec_vlcs[0][1].table = ctx->std_dec_vlcs[0][1].table;

	if (ctx->is_std_vlc[1][0] == 0)
	{
		ret = build_vlc(&ctx->dec_vlcs[1][0], ctx->dht_ac[0].len, ctx->dht_ac[0].val, 251, 1);
		if (ret != 0)
			return -1;
	}
	else
		ctx->dec_vlcs[1][0].table = ctx->std_dec_vlcs[1][0].table;

	if (ctx->is_std_vlc[1][1] == 0)
	{
		ret = build_vlc(&ctx->dec_vlcs[1][1], ctx->dht_ac[1].len, ctx->dht_ac[1].val, 251, 1);
		if (ret != 0)
			return -1;
	}
	else
		ctx->dec_vlcs[1][1].table = ctx->std_dec_vlcs[1][1].table;

	return 0;
}
Пример #3
0
int build_std_dec_vlc(jpeg_ctx_t *ctx)
{
	int ret;

	ret = build_vlc(&ctx->std_dec_vlcs[0][0], std_huffman_bits_dc_luminance, std_huffman_val_dc, 12, 0);
	if (ret != 0)
		return -1;

	ret = build_vlc(&ctx->std_dec_vlcs[0][1], std_huffman_bits_dc_chrominance, std_huffman_val_dc, 12, 0);
	if (ret != 0)
		return -1;

	ret = build_vlc(&ctx->std_dec_vlcs[1][0], std_huffman_bits_ac_luminance, std_huffman_val_ac_luminance, 251, 1);
	if (ret != 0)
		return -1;

	ret = build_vlc(&ctx->std_dec_vlcs[1][1], std_huffman_bits_ac_chrominance, std_huffman_val_ac_chrominance, 251, 1);
	if (ret != 0)
		return -1;

	return 0;
}