You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
huffyuv: K&R formatting cosmetics
This commit is contained in:
@@ -36,16 +36,17 @@
|
||||
|
||||
#define classic_shift_luma_table_size 42
|
||||
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,
|
||||
16,8,17,20,16,10,207,206,205,236,11,8,10,21,9,23,8,8,199,70,
|
||||
69,68, 0
|
||||
34, 36, 35, 69, 135, 232, 9, 16, 10, 24, 11, 23, 12, 16, 13, 10,
|
||||
14, 8, 15, 8, 16, 8, 17, 20, 16, 10, 207, 206, 205, 236, 11, 8,
|
||||
10, 21, 9, 23, 8, 8, 199, 70, 69, 68, 0
|
||||
};
|
||||
|
||||
#define classic_shift_chroma_table_size 59
|
||||
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,
|
||||
56,57,88,89,56,89,154,57,58,57,26,141,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
|
||||
66, 36, 37, 38, 39, 40, 41, 75, 76, 77, 110, 239, 144, 81, 82, 83,
|
||||
84, 85, 118, 183, 56, 57, 88, 89, 56, 89, 154, 57, 58, 57, 26, 141,
|
||||
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
|
||||
};
|
||||
|
||||
static const unsigned char classic_add_luma[256] = {
|
||||
@@ -138,9 +139,9 @@ static void generate_joint_tables(HYuvContext *s)
|
||||
int i, b, g, r, code;
|
||||
int p0 = s->decorrelate;
|
||||
int p1 = !s->decorrelate;
|
||||
// restrict the range to +/-16 because that's pretty much guaranteed to
|
||||
// cover all the combinations that fit in 11 bits total, and it doesn't
|
||||
// matter if we miss a few rare codes.
|
||||
/* Restrict the range to +/-16 because that's pretty much guaranteed
|
||||
* to cover all the combinations that fit in 11 bits total, and it
|
||||
* does not matter if we miss a few rare codes. */
|
||||
for (i = 0, g = -16; g < 16; g++) {
|
||||
int len0 = s->len[p0][g & 255];
|
||||
int limit0 = VLC_BITS - len0;
|
||||
@@ -186,9 +187,8 @@ static int read_huffman_tables(HYuvContext *s, const uint8_t *src, int length)
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (read_len_table(s->len[i], &gb) < 0)
|
||||
return -1;
|
||||
if (ff_huffyuv_generate_bits_table(s->bits[i], s->len[i]) < 0) {
|
||||
if (ff_huffyuv_generate_bits_table(s->bits[i], s->len[i]) < 0)
|
||||
return -1;
|
||||
}
|
||||
ff_free_vlc(&s->vlc[i]);
|
||||
init_vlc(&s->vlc[i], VLC_BITS, 256, s->len[i], 1, 1,
|
||||
s->bits[i], 4, 4, 0);
|
||||
@@ -214,8 +214,10 @@ static int read_old_huffman_tables(HYuvContext *s)
|
||||
if (read_len_table(s->len[1], &gb) < 0)
|
||||
return -1;
|
||||
|
||||
for(i=0; i<256; i++) s->bits[0][i] = classic_add_luma [i];
|
||||
for(i=0; i<256; i++) s->bits[1][i] = classic_add_chroma[i];
|
||||
for (i = 0; i < 256; 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) {
|
||||
memcpy(s->bits[1], s->bits[0], 256 * sizeof(uint32_t));
|
||||
@@ -244,7 +246,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
||||
memset(s->vlc, 0, 3 * sizeof(VLC));
|
||||
|
||||
s->interlaced = s->height > 288;
|
||||
|
||||
s->bgr32 = 1;
|
||||
|
||||
if (avctx->extradata_size) {
|
||||
@@ -310,19 +311,17 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
||||
avctx->pix_fmt = AV_PIX_FMT_YUV420P;
|
||||
break;
|
||||
case 16:
|
||||
if (s->yuy2) {
|
||||
if (s->yuy2)
|
||||
avctx->pix_fmt = AV_PIX_FMT_YUYV422;
|
||||
} else {
|
||||
else
|
||||
avctx->pix_fmt = AV_PIX_FMT_YUV422P;
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
case 32:
|
||||
if (s->bgr32) {
|
||||
if (s->bgr32)
|
||||
avctx->pix_fmt = AV_PIX_FMT_RGB32;
|
||||
} else {
|
||||
else
|
||||
avctx->pix_fmt = AV_PIX_FMT_BGR24;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return AVERROR_INVALIDDATA;
|
||||
@@ -357,8 +356,10 @@ static av_cold int decode_init_thread_copy(AVCodecContext *avctx)
|
||||
|
||||
/* TODO instead of restarting the read when the code isn't in the first level
|
||||
* of the joint table, jump into the 2nd level of the individual table. */
|
||||
#define READ_2PIX(dst0, dst1, plane1){\
|
||||
uint16_t code = get_vlc2(&s->gb, s->vlc[3+plane1].table, VLC_BITS, 1);\
|
||||
#define READ_2PIX(dst0, dst1, plane1) \
|
||||
{ \
|
||||
uint16_t code = get_vlc2(&s->gb, s->vlc[3 + plane1].table, \
|
||||
VLC_BITS, 1); \
|
||||
if (code != 0xffff) { \
|
||||
dst0 = code >> 8; \
|
||||
dst1 = code; \
|
||||
@@ -454,11 +455,10 @@ static void draw_slice(HYuvContext *s, AVFrame *frame, int y)
|
||||
h = y - s->last_slice_end;
|
||||
y -= h;
|
||||
|
||||
if (s->bitstream_bpp == 12) {
|
||||
if (s->bitstream_bpp == 12)
|
||||
cy = y >> 1;
|
||||
} else {
|
||||
else
|
||||
cy = y;
|
||||
}
|
||||
|
||||
offset[0] = frame->linesize[0] * y;
|
||||
offset[1] = frame->linesize[1] * cy;
|
||||
@@ -534,17 +534,20 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
"YUY2 output is not implemented yet\n");
|
||||
return -1;
|
||||
} else {
|
||||
|
||||
leftv = p->data[2][0] = get_bits(&s->gb, 8);
|
||||
lefty = p->data[0][1] = get_bits(&s->gb, 8);
|
||||
leftu = p->data[1][0] = get_bits(&s->gb, 8);
|
||||
leftv =
|
||||
p->data[2][0] = get_bits(&s->gb, 8);
|
||||
lefty =
|
||||
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);
|
||||
|
||||
switch (s->predictor) {
|
||||
case LEFT:
|
||||
case PLANE:
|
||||
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)) {
|
||||
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);
|
||||
@@ -558,13 +561,15 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
|
||||
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 (y > s->interlaced)
|
||||
s->hdsp.add_bytes(ydst, ydst - fake_ystride, width);
|
||||
}
|
||||
y++;
|
||||
if (y >= s->height) break;
|
||||
if (y >= s->height)
|
||||
break;
|
||||
}
|
||||
|
||||
draw_slice(s, p, y);
|
||||
@@ -574,7 +579,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
vdst = p->data[2] + p->linesize[2] * cy;
|
||||
|
||||
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)) {
|
||||
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);
|
||||
@@ -595,7 +601,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
case MEDIAN:
|
||||
/* first line except first 2 pixels is left predicted */
|
||||
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)) {
|
||||
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);
|
||||
@@ -606,17 +613,20 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
/* second line is left predicted for interlaced case */
|
||||
if (s->interlaced) {
|
||||
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)) {
|
||||
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);
|
||||
}
|
||||
y++; cy++;
|
||||
y++;
|
||||
cy++;
|
||||
}
|
||||
|
||||
/* next 4 pixels are left predicted too */
|
||||
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)) {
|
||||
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);
|
||||
@@ -625,14 +635,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
/* next line except the first 4 pixels is median predicted */
|
||||
lefttopy = p->data[0][3];
|
||||
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)) {
|
||||
lefttopu = p->data[1][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[2] + fake_vstride + 2, p->data[2] + 2, s->temp[2], width2 - 2, &leftv, &lefttopv);
|
||||
}
|
||||
y++; cy++;
|
||||
y++;
|
||||
cy++;
|
||||
|
||||
for (; y < height; y++, cy++) {
|
||||
uint8_t *ydst, *udst, *vdst;
|
||||
@@ -641,10 +654,13 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
while (2 * cy > y) {
|
||||
decode_gray_bitstream(s, width);
|
||||
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++;
|
||||
}
|
||||
if (y >= height) break;
|
||||
if (y >= height)
|
||||
break;
|
||||
}
|
||||
draw_slice(s, p, y);
|
||||
|
||||
@@ -654,7 +670,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
udst = p->data[1] + p->linesize[1] * 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)) {
|
||||
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);
|
||||
@@ -688,14 +706,19 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
case LEFT:
|
||||
case PLANE:
|
||||
decode_bgr_bitstream(s, width - 1);
|
||||
s->hdsp.add_hfyu_left_pred_bgr32(p->data[0] + last_line + 4, s->temp[0], width - 1, &leftr, &leftg, &leftb, &lefta);
|
||||
s->hdsp.add_hfyu_left_pred_bgr32(p->data[0] + last_line + 4,
|
||||
s->temp[0], width - 1, &leftr,
|
||||
&leftg, &leftb, &lefta);
|
||||
|
||||
for (y = s->height - 2; y >= 0; y--) { // Yes it is stored upside down.
|
||||
decode_bgr_bitstream(s, width);
|
||||
|
||||
s->hdsp.add_hfyu_left_pred_bgr32(p->data[0] + p->linesize[0] * y, s->temp[0], width, &leftr, &leftg, &leftb, &lefta);
|
||||
s->hdsp.add_hfyu_left_pred_bgr32(p->data[0] + p->linesize[0] * y,
|
||||
s->temp[0], width, &leftr,
|
||||
&leftg, &leftb, &lefta);
|
||||
if (s->predictor == PLANE) {
|
||||
if (s->bitstream_bpp != 32) lefta = 0;
|
||||
if (s->bitstream_bpp != 32)
|
||||
lefta = 0;
|
||||
if ((y & s->interlaced) == 0 &&
|
||||
y < s->height - 1 - s->interlaced) {
|
||||
s->hdsp.add_bytes(p->data[0] + p->linesize[0] * y,
|
||||
@@ -732,9 +755,8 @@ static av_cold int decode_end(AVCodecContext *avctx)
|
||||
ff_huffyuv_common_end(s);
|
||||
av_freep(&s->bitstream_buffer);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
for (i = 0; i < 6; i++)
|
||||
ff_free_vlc(&s->vlc[i]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -767,4 +789,4 @@ AVCodec ff_ffvhuff_decoder = {
|
||||
CODEC_CAP_FRAME_THREADS,
|
||||
.init_thread_copy = ONLY_IF_THREADS_ENABLED(decode_init_thread_copy),
|
||||
};
|
||||
#endif
|
||||
#endif /* CONFIG_FFVHUFF_DECODER */
|
||||
|
Reference in New Issue
Block a user