1
0
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:
Diego Biurrun
2014-08-03 10:49:40 -07:00
parent f89d76c103
commit c065f4a0c6

View File

@@ -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 */