mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit 'c065f4a0c652cc569c927c95148111b3aa2962dc'
* commit 'c065f4a0c652cc569c927c95148111b3aa2962dc': huffyuv: K&R formatting cosmetics Conflicts: libavcodec/huffyuvdec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
c1e7fb60d1
|
@ -41,17 +41,18 @@
|
||||||
|
|
||||||
#define classic_shift_luma_table_size 42
|
#define classic_shift_luma_table_size 42
|
||||||
static const unsigned char classic_shift_luma[classic_shift_luma_table_size + FF_INPUT_BUFFER_PADDING_SIZE] = {
|
static const unsigned char classic_shift_luma[classic_shift_luma_table_size + FF_INPUT_BUFFER_PADDING_SIZE] = {
|
||||||
34,36,35,69,135,232,9,16,10,24,11,23,12,16,13,10,14,8,15,8,
|
34, 36, 35, 69, 135, 232, 9, 16, 10, 24, 11, 23, 12, 16, 13, 10,
|
||||||
16,8,17,20,16,10,207,206,205,236,11,8,10,21,9,23,8,8,199,70,
|
14, 8, 15, 8, 16, 8, 17, 20, 16, 10, 207, 206, 205, 236, 11, 8,
|
||||||
69,68, 0,
|
10, 21, 9, 23, 8, 8, 199, 70, 69, 68, 0,
|
||||||
0,0,0,0,0,0,0,0,
|
0,0,0,0,0,0,0,0,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define classic_shift_chroma_table_size 59
|
#define classic_shift_chroma_table_size 59
|
||||||
static const unsigned char classic_shift_chroma[classic_shift_chroma_table_size + FF_INPUT_BUFFER_PADDING_SIZE] = {
|
static const unsigned char classic_shift_chroma[classic_shift_chroma_table_size + FF_INPUT_BUFFER_PADDING_SIZE] = {
|
||||||
66,36,37,38,39,40,41,75,76,77,110,239,144,81,82,83,84,85,118,183,
|
66, 36, 37, 38, 39, 40, 41, 75, 76, 77, 110, 239, 144, 81, 82, 83,
|
||||||
56,57,88,89,56,89,154,57,58,57,26,141,57,56,58,57,58,57,184,119,
|
84, 85, 118, 183, 56, 57, 88, 89, 56, 89, 154, 57, 58, 57, 26, 141,
|
||||||
214,245,116,83,82,49,80,79,78,77,44,75,41,40,39,38,37,36,34, 0,
|
57, 56, 58, 57, 58, 57, 184, 119, 214, 245, 116, 83, 82, 49, 80, 79,
|
||||||
|
78, 77, 44, 75, 41, 40, 39, 38, 37, 36, 34, 0,
|
||||||
0,0,0,0,0,0,0,0,
|
0,0,0,0,0,0,0,0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -153,9 +154,9 @@ static int generate_joint_tables(HYuvContext *s)
|
||||||
int i, b, g, r, code;
|
int i, b, g, r, code;
|
||||||
int p0 = s->decorrelate;
|
int p0 = s->decorrelate;
|
||||||
int p1 = !s->decorrelate;
|
int p1 = !s->decorrelate;
|
||||||
// restrict the range to +/-16 because that's pretty much guaranteed to
|
/* Restrict the range to +/-16 because that's pretty much guaranteed
|
||||||
// cover all the combinations that fit in 11 bits total, and it doesn't
|
* to cover all the combinations that fit in 11 bits total, and it
|
||||||
// matter if we miss a few rare codes.
|
* does not matter if we miss a few rare codes. */
|
||||||
for (i = 0, g = -16; g < 16; g++) {
|
for (i = 0, g = -16; g < 16; g++) {
|
||||||
int len0 = s->len[p0][g & 255];
|
int len0 = s->len[p0][g & 255];
|
||||||
int limit0 = VLC_BITS - len0;
|
int limit0 = VLC_BITS - len0;
|
||||||
|
@ -209,9 +210,8 @@ static int read_huffman_tables(HYuvContext *s, const uint8_t *src, int length)
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
if (read_len_table(s->len[i], &gb, s->vlc_n) < 0)
|
if (read_len_table(s->len[i], &gb, s->vlc_n) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
if (ff_huffyuv_generate_bits_table(s->bits[i], s->len[i], s->vlc_n) < 0) {
|
if (ff_huffyuv_generate_bits_table(s->bits[i], s->len[i], s->vlc_n) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
ff_free_vlc(&s->vlc[i]);
|
ff_free_vlc(&s->vlc[i]);
|
||||||
if ((ret = init_vlc(&s->vlc[i], VLC_BITS, s->vlc_n, s->len[i], 1, 1,
|
if ((ret = init_vlc(&s->vlc[i], VLC_BITS, s->vlc_n, s->len[i], 1, 1,
|
||||||
s->bits[i], 4, 4, 0)) < 0)
|
s->bits[i], 4, 4, 0)) < 0)
|
||||||
|
@ -240,8 +240,10 @@ static int read_old_huffman_tables(HYuvContext *s)
|
||||||
if (read_len_table(s->len[1], &gb, 256) < 0)
|
if (read_len_table(s->len[1], &gb, 256) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
for(i=0; i<256; i++) s->bits[0][i] = classic_add_luma [i];
|
for (i = 0; i < 256; i++)
|
||||||
for(i=0; i<256; i++) s->bits[1][i] = classic_add_chroma[i];
|
s->bits[0][i] = classic_add_luma[i];
|
||||||
|
for (i = 0; i < 256; i++)
|
||||||
|
s->bits[1][i] = classic_add_chroma[i];
|
||||||
|
|
||||||
if (s->bitstream_bpp >= 24) {
|
if (s->bitstream_bpp >= 24) {
|
||||||
memcpy(s->bits[1], s->bits[0], 256 * sizeof(uint32_t));
|
memcpy(s->bits[1], s->bits[0], 256 * sizeof(uint32_t));
|
||||||
|
@ -271,7 +273,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
||||||
memset(s->vlc, 0, 4 * sizeof(VLC));
|
memset(s->vlc, 0, 4 * sizeof(VLC));
|
||||||
|
|
||||||
s->interlaced = avctx->height > 288;
|
s->interlaced = avctx->height > 288;
|
||||||
|
|
||||||
s->bgr32 = 1;
|
s->bgr32 = 1;
|
||||||
|
|
||||||
if (avctx->extradata_size) {
|
if (avctx->extradata_size) {
|
||||||
|
@ -356,19 +357,17 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
||||||
s->yuv = 1;
|
s->yuv = 1;
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
if (s->yuy2) {
|
if (s->yuy2)
|
||||||
avctx->pix_fmt = AV_PIX_FMT_YUYV422;
|
avctx->pix_fmt = AV_PIX_FMT_YUYV422;
|
||||||
} else {
|
else
|
||||||
avctx->pix_fmt = AV_PIX_FMT_YUV422P;
|
avctx->pix_fmt = AV_PIX_FMT_YUV422P;
|
||||||
}
|
|
||||||
s->yuv = 1;
|
s->yuv = 1;
|
||||||
break;
|
break;
|
||||||
case 24:
|
case 24:
|
||||||
if (s->bgr32) {
|
if (s->bgr32)
|
||||||
avctx->pix_fmt = AV_PIX_FMT_0RGB32;
|
avctx->pix_fmt = AV_PIX_FMT_0RGB32;
|
||||||
} else {
|
else
|
||||||
avctx->pix_fmt = AV_PIX_FMT_BGR24;
|
avctx->pix_fmt = AV_PIX_FMT_BGR24;
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
av_assert0(s->bgr32);
|
av_assert0(s->bgr32);
|
||||||
|
@ -803,11 +802,10 @@ static void draw_slice(HYuvContext *s, AVFrame *frame, int y)
|
||||||
h = y - s->last_slice_end;
|
h = y - s->last_slice_end;
|
||||||
y -= h;
|
y -= h;
|
||||||
|
|
||||||
if (s->bitstream_bpp == 12) {
|
if (s->bitstream_bpp == 12)
|
||||||
cy = y >> 1;
|
cy = y >> 1;
|
||||||
} else {
|
else
|
||||||
cy = y;
|
cy = y;
|
||||||
}
|
|
||||||
|
|
||||||
offset[0] = frame->linesize[0] * y;
|
offset[0] = frame->linesize[0] * y;
|
||||||
offset[1] = frame->linesize[1] * cy;
|
offset[1] = frame->linesize[1] * cy;
|
||||||
|
@ -971,17 +969,20 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
"YUY2 output is not implemented yet\n");
|
"YUY2 output is not implemented yet\n");
|
||||||
return AVERROR_PATCHWELCOME;
|
return AVERROR_PATCHWELCOME;
|
||||||
} else {
|
} else {
|
||||||
|
leftv =
|
||||||
leftv = p->data[2][0] = get_bits(&s->gb, 8);
|
p->data[2][0] = get_bits(&s->gb, 8);
|
||||||
lefty = p->data[0][1] = get_bits(&s->gb, 8);
|
lefty =
|
||||||
leftu = p->data[1][0] = get_bits(&s->gb, 8);
|
p->data[0][1] = get_bits(&s->gb, 8);
|
||||||
|
leftu =
|
||||||
|
p->data[1][0] = get_bits(&s->gb, 8);
|
||||||
p->data[0][0] = get_bits(&s->gb, 8);
|
p->data[0][0] = get_bits(&s->gb, 8);
|
||||||
|
|
||||||
switch (s->predictor) {
|
switch (s->predictor) {
|
||||||
case LEFT:
|
case LEFT:
|
||||||
case PLANE:
|
case PLANE:
|
||||||
decode_422_bitstream(s, width - 2);
|
decode_422_bitstream(s, width - 2);
|
||||||
lefty = s->hdsp.add_hfyu_left_pred(p->data[0] + 2, s->temp[0], width - 2, lefty);
|
lefty = s->hdsp.add_hfyu_left_pred(p->data[0] + 2, s->temp[0],
|
||||||
|
width - 2, lefty);
|
||||||
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
||||||
leftu = s->hdsp.add_hfyu_left_pred(p->data[1] + 1, s->temp[1], width2 - 1, leftu);
|
leftu = s->hdsp.add_hfyu_left_pred(p->data[1] + 1, s->temp[1], width2 - 1, leftu);
|
||||||
leftv = s->hdsp.add_hfyu_left_pred(p->data[2] + 1, s->temp[2], width2 - 1, leftv);
|
leftv = s->hdsp.add_hfyu_left_pred(p->data[2] + 1, s->temp[2], width2 - 1, leftv);
|
||||||
|
@ -995,13 +996,15 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
|
|
||||||
ydst = p->data[0] + p->linesize[0] * y;
|
ydst = p->data[0] + p->linesize[0] * y;
|
||||||
|
|
||||||
lefty = s->hdsp.add_hfyu_left_pred(ydst, s->temp[0], width, lefty);
|
lefty = s->hdsp.add_hfyu_left_pred(ydst, s->temp[0],
|
||||||
|
width, lefty);
|
||||||
if (s->predictor == PLANE) {
|
if (s->predictor == PLANE) {
|
||||||
if (y > s->interlaced)
|
if (y > s->interlaced)
|
||||||
s->hdsp.add_bytes(ydst, ydst - fake_ystride, width);
|
s->hdsp.add_bytes(ydst, ydst - fake_ystride, width);
|
||||||
}
|
}
|
||||||
y++;
|
y++;
|
||||||
if (y >= s->height) break;
|
if (y >= s->height)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_slice(s, p, y);
|
draw_slice(s, p, y);
|
||||||
|
@ -1011,7 +1014,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
vdst = p->data[2] + p->linesize[2] * cy;
|
vdst = p->data[2] + p->linesize[2] * cy;
|
||||||
|
|
||||||
decode_422_bitstream(s, width);
|
decode_422_bitstream(s, width);
|
||||||
lefty = s->hdsp.add_hfyu_left_pred(ydst, s->temp[0], width, lefty);
|
lefty = s->hdsp.add_hfyu_left_pred(ydst, s->temp[0],
|
||||||
|
width, lefty);
|
||||||
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
||||||
leftu = s->hdsp.add_hfyu_left_pred(udst, s->temp[1], width2, leftu);
|
leftu = s->hdsp.add_hfyu_left_pred(udst, s->temp[1], width2, leftu);
|
||||||
leftv = s->hdsp.add_hfyu_left_pred(vdst, s->temp[2], width2, leftv);
|
leftv = s->hdsp.add_hfyu_left_pred(vdst, s->temp[2], width2, leftv);
|
||||||
|
@ -1032,7 +1036,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
case MEDIAN:
|
case MEDIAN:
|
||||||
/* first line except first 2 pixels is left predicted */
|
/* first line except first 2 pixels is left predicted */
|
||||||
decode_422_bitstream(s, width - 2);
|
decode_422_bitstream(s, width - 2);
|
||||||
lefty = s->hdsp.add_hfyu_left_pred(p->data[0] + 2, s->temp[0], width - 2, lefty);
|
lefty = s->hdsp.add_hfyu_left_pred(p->data[0] + 2, s->temp[0],
|
||||||
|
width - 2, lefty);
|
||||||
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
||||||
leftu = s->hdsp.add_hfyu_left_pred(p->data[1] + 1, s->temp[1], width2 - 1, leftu);
|
leftu = s->hdsp.add_hfyu_left_pred(p->data[1] + 1, s->temp[1], width2 - 1, leftu);
|
||||||
leftv = s->hdsp.add_hfyu_left_pred(p->data[2] + 1, s->temp[2], width2 - 1, leftv);
|
leftv = s->hdsp.add_hfyu_left_pred(p->data[2] + 1, s->temp[2], width2 - 1, leftv);
|
||||||
|
@ -1043,17 +1048,20 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
/* second line is left predicted for interlaced case */
|
/* second line is left predicted for interlaced case */
|
||||||
if (s->interlaced) {
|
if (s->interlaced) {
|
||||||
decode_422_bitstream(s, width);
|
decode_422_bitstream(s, width);
|
||||||
lefty = s->hdsp.add_hfyu_left_pred(p->data[0] + p->linesize[0], s->temp[0], width, lefty);
|
lefty = s->hdsp.add_hfyu_left_pred(p->data[0] + p->linesize[0],
|
||||||
|
s->temp[0], width, lefty);
|
||||||
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
||||||
leftu = s->hdsp.add_hfyu_left_pred(p->data[1] + p->linesize[2], s->temp[1], width2, leftu);
|
leftu = s->hdsp.add_hfyu_left_pred(p->data[1] + p->linesize[2], s->temp[1], width2, leftu);
|
||||||
leftv = s->hdsp.add_hfyu_left_pred(p->data[2] + p->linesize[1], s->temp[2], width2, leftv);
|
leftv = s->hdsp.add_hfyu_left_pred(p->data[2] + p->linesize[1], s->temp[2], width2, leftv);
|
||||||
}
|
}
|
||||||
y++; cy++;
|
y++;
|
||||||
|
cy++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* next 4 pixels are left predicted too */
|
/* next 4 pixels are left predicted too */
|
||||||
decode_422_bitstream(s, 4);
|
decode_422_bitstream(s, 4);
|
||||||
lefty = s->hdsp.add_hfyu_left_pred(p->data[0] + fake_ystride, s->temp[0], 4, lefty);
|
lefty = s->hdsp.add_hfyu_left_pred(p->data[0] + fake_ystride,
|
||||||
|
s->temp[0], 4, lefty);
|
||||||
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
||||||
leftu = s->hdsp.add_hfyu_left_pred(p->data[1] + fake_ustride, s->temp[1], 2, leftu);
|
leftu = s->hdsp.add_hfyu_left_pred(p->data[1] + fake_ustride, s->temp[1], 2, leftu);
|
||||||
leftv = s->hdsp.add_hfyu_left_pred(p->data[2] + fake_vstride, s->temp[2], 2, leftv);
|
leftv = s->hdsp.add_hfyu_left_pred(p->data[2] + fake_vstride, s->temp[2], 2, leftv);
|
||||||
|
@ -1062,14 +1070,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
/* next line except the first 4 pixels is median predicted */
|
/* next line except the first 4 pixels is median predicted */
|
||||||
lefttopy = p->data[0][3];
|
lefttopy = p->data[0][3];
|
||||||
decode_422_bitstream(s, width - 4);
|
decode_422_bitstream(s, width - 4);
|
||||||
s->hdsp.add_hfyu_median_pred(p->data[0] + fake_ystride + 4, p->data[0] + 4, s->temp[0], width - 4, &lefty, &lefttopy);
|
s->hdsp.add_hfyu_median_pred(p->data[0] + fake_ystride + 4,
|
||||||
|
p->data[0] + 4, s->temp[0],
|
||||||
|
width - 4, &lefty, &lefttopy);
|
||||||
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
||||||
lefttopu = p->data[1][1];
|
lefttopu = p->data[1][1];
|
||||||
lefttopv = p->data[2][1];
|
lefttopv = p->data[2][1];
|
||||||
s->hdsp.add_hfyu_median_pred(p->data[1] + fake_ustride + 2, p->data[1] + 2, s->temp[1], width2 - 2, &leftu, &lefttopu);
|
s->hdsp.add_hfyu_median_pred(p->data[1] + fake_ustride + 2, p->data[1] + 2, s->temp[1], width2 - 2, &leftu, &lefttopu);
|
||||||
s->hdsp.add_hfyu_median_pred(p->data[2] + fake_vstride + 2, p->data[2] + 2, s->temp[2], width2 - 2, &leftv, &lefttopv);
|
s->hdsp.add_hfyu_median_pred(p->data[2] + fake_vstride + 2, p->data[2] + 2, s->temp[2], width2 - 2, &leftv, &lefttopv);
|
||||||
}
|
}
|
||||||
y++; cy++;
|
y++;
|
||||||
|
cy++;
|
||||||
|
|
||||||
for (; y < height; y++, cy++) {
|
for (; y < height; y++, cy++) {
|
||||||
uint8_t *ydst, *udst, *vdst;
|
uint8_t *ydst, *udst, *vdst;
|
||||||
|
@ -1078,10 +1089,13 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
while (2 * cy > y) {
|
while (2 * cy > y) {
|
||||||
decode_gray_bitstream(s, width);
|
decode_gray_bitstream(s, width);
|
||||||
ydst = p->data[0] + p->linesize[0] * y;
|
ydst = p->data[0] + p->linesize[0] * y;
|
||||||
s->hdsp.add_hfyu_median_pred(ydst, ydst - fake_ystride, s->temp[0], width, &lefty, &lefttopy);
|
s->hdsp.add_hfyu_median_pred(ydst, ydst - fake_ystride,
|
||||||
|
s->temp[0], width,
|
||||||
|
&lefty, &lefttopy);
|
||||||
y++;
|
y++;
|
||||||
}
|
}
|
||||||
if (y >= height) break;
|
if (y >= height)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
draw_slice(s, p, y);
|
draw_slice(s, p, y);
|
||||||
|
|
||||||
|
@ -1091,7 +1105,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
udst = p->data[1] + p->linesize[1] * cy;
|
udst = p->data[1] + p->linesize[1] * cy;
|
||||||
vdst = p->data[2] + p->linesize[2] * cy;
|
vdst = p->data[2] + p->linesize[2] * cy;
|
||||||
|
|
||||||
s->hdsp.add_hfyu_median_pred(ydst, ydst - fake_ystride, s->temp[0], width, &lefty, &lefttopy);
|
s->hdsp.add_hfyu_median_pred(ydst, ydst - fake_ystride,
|
||||||
|
s->temp[0], width,
|
||||||
|
&lefty, &lefttopy);
|
||||||
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
if (!(s->flags & CODEC_FLAG_GRAY)) {
|
||||||
s->hdsp.add_hfyu_median_pred(udst, udst - fake_ustride, s->temp[1], width2, &leftu, &lefttopu);
|
s->hdsp.add_hfyu_median_pred(udst, udst - fake_ustride, s->temp[1], width2, &leftu, &lefttopu);
|
||||||
s->hdsp.add_hfyu_median_pred(vdst, vdst - fake_vstride, s->temp[2], width2, &leftv, &lefttopv);
|
s->hdsp.add_hfyu_median_pred(vdst, vdst - fake_vstride, s->temp[2], width2, &leftv, &lefttopv);
|
||||||
|
@ -1125,14 +1141,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||||
case LEFT:
|
case LEFT:
|
||||||
case PLANE:
|
case PLANE:
|
||||||
decode_bgr_bitstream(s, width - 1);
|
decode_bgr_bitstream(s, width - 1);
|
||||||
s->hdsp.add_hfyu_left_pred_bgr32(p->data[0] + last_line + 4, s->temp[0], width - 1, left);
|
s->hdsp.add_hfyu_left_pred_bgr32(p->data[0] + last_line + 4,
|
||||||
|
s->temp[0], width - 1, left);
|
||||||
|
|
||||||
for (y = s->height - 2; y >= 0; y--) { // Yes it is stored upside down.
|
for (y = s->height - 2; y >= 0; y--) { // Yes it is stored upside down.
|
||||||
decode_bgr_bitstream(s, width);
|
decode_bgr_bitstream(s, width);
|
||||||
|
|
||||||
s->hdsp.add_hfyu_left_pred_bgr32(p->data[0] + p->linesize[0] * y, s->temp[0], width, left);
|
s->hdsp.add_hfyu_left_pred_bgr32(p->data[0] + p->linesize[0] * y,
|
||||||
|
s->temp[0], width, left);
|
||||||
if (s->predictor == PLANE) {
|
if (s->predictor == PLANE) {
|
||||||
if (s->bitstream_bpp != 32) left[A] = 0;
|
if (s->bitstream_bpp != 32)
|
||||||
|
left[A] = 0;
|
||||||
if ((y & s->interlaced) == 0 &&
|
if ((y & s->interlaced) == 0 &&
|
||||||
y < s->height - 1 - s->interlaced) {
|
y < s->height - 1 - s->interlaced) {
|
||||||
s->hdsp.add_bytes(p->data[0] + p->linesize[0] * y,
|
s->hdsp.add_bytes(p->data[0] + p->linesize[0] * y,
|
||||||
|
@ -1169,9 +1188,8 @@ static av_cold int decode_end(AVCodecContext *avctx)
|
||||||
ff_huffyuv_common_end(s);
|
ff_huffyuv_common_end(s);
|
||||||
av_freep(&s->bitstream_buffer);
|
av_freep(&s->bitstream_buffer);
|
||||||
|
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++)
|
||||||
ff_free_vlc(&s->vlc[i]);
|
ff_free_vlc(&s->vlc[i]);
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1204,4 +1222,4 @@ AVCodec ff_ffvhuff_decoder = {
|
||||||
CODEC_CAP_FRAME_THREADS,
|
CODEC_CAP_FRAME_THREADS,
|
||||||
.init_thread_copy = ONLY_IF_THREADS_ENABLED(decode_init_thread_copy),
|
.init_thread_copy = ONLY_IF_THREADS_ENABLED(decode_init_thread_copy),
|
||||||
};
|
};
|
||||||
#endif
|
#endif /* CONFIG_FFVHUFF_DECODER */
|
||||||
|
|
Loading…
Reference in New Issue