mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-25 00:32:31 +00:00
code redundancy reduction, courtesy of suxen_drol -at- hotmail.com
Originally committed as revision 1790 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
143d464416
commit
a44f8ccbf8
@ -255,6 +255,48 @@ typedef struct {
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
#define LV1_CHECK(buf1,rle_v3,lv1,lp2) \
|
||||
if((lv1 & 0x80) != 0) { \
|
||||
if(rle_v3 != 0) \
|
||||
rle_v3 = 0; \
|
||||
else { \
|
||||
rle_v3 = 1; \
|
||||
buf1 -= 2; \
|
||||
} \
|
||||
} \
|
||||
lp2 = 4;
|
||||
|
||||
|
||||
#define RLE_V3_CHECK(buf1,rle_v1,rle_v2,rle_v3) \
|
||||
if(rle_v3 == 0) { \
|
||||
rle_v2 = *buf1; \
|
||||
rle_v1 = 1; \
|
||||
if(rle_v2 > 32) { \
|
||||
rle_v2 -= 32; \
|
||||
rle_v1 = 0; \
|
||||
} \
|
||||
rle_v3 = 1; \
|
||||
} \
|
||||
buf1--;
|
||||
|
||||
|
||||
#define LP2_CHECK(buf1,rle_v3,lp2) \
|
||||
if(lp2 == 0 && rle_v3 != 0) \
|
||||
rle_v3 = 0; \
|
||||
else { \
|
||||
buf1--; \
|
||||
rle_v3 = 1; \
|
||||
}
|
||||
|
||||
|
||||
#define RLE_V2_CHECK(buf1,rle_v2, rle_v3,lp2) \
|
||||
rle_v2--; \
|
||||
if(rle_v2 == 0) { \
|
||||
rle_v3 = 0; \
|
||||
buf1 += 2; \
|
||||
} \
|
||||
lp2 = 4;
|
||||
|
||||
static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
unsigned char *cur, unsigned char *ref, int width, int height,
|
||||
unsigned char *buf1, long fflags2, unsigned char *hdr,
|
||||
@ -268,7 +310,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
unsigned long *cur_lp, *ref_lp, *correction_lp[2], *correctionloworder_lp[2],
|
||||
*correctionhighorder_lp[2];
|
||||
unsigned short *correction_type_sp[2];
|
||||
ustr_t xustr[20], *ptr_ustr;
|
||||
ustr_t strip_tbl[20], *strip;
|
||||
int i, j, k, lp1, lp2, flag1, cmd, blks_width, blks_height, region_160_width,
|
||||
rle_v1, rle_v2, rle_v3;
|
||||
|
||||
@ -280,22 +322,22 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
for(j = -1; j < 8; j++)
|
||||
width_tbl[j] = i * j;
|
||||
|
||||
ptr_ustr = xustr;
|
||||
strip = strip_tbl;
|
||||
|
||||
for(region_160_width = 0; region_160_width < (width - min_width_160); region_160_width += min_width_160);
|
||||
|
||||
ptr_ustr->ypos = ptr_ustr->xpos = 0;
|
||||
for(ptr_ustr->width = min_width_160; width > ptr_ustr->width; ptr_ustr->width *= 2);
|
||||
ptr_ustr->height = height;
|
||||
ptr_ustr->split_direction = 0;
|
||||
ptr_ustr->split_flag = 0;
|
||||
ptr_ustr->usl7 = 0;
|
||||
strip->ypos = strip->xpos = 0;
|
||||
for(strip->width = min_width_160; width > strip->width; strip->width *= 2);
|
||||
strip->height = height;
|
||||
strip->split_direction = 0;
|
||||
strip->split_flag = 0;
|
||||
strip->usl7 = 0;
|
||||
|
||||
bit_pos = 0;
|
||||
|
||||
rle_v1 = rle_v2 = rle_v3 = 0;
|
||||
|
||||
while(ptr_ustr >= xustr) {
|
||||
while(strip >= strip_tbl) {
|
||||
if(bit_pos <= 0) {
|
||||
bit_pos = 8;
|
||||
bit_buf = *buf1++;
|
||||
@ -305,44 +347,44 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
cmd = (bit_buf >> bit_pos) & 0x03;
|
||||
|
||||
if(cmd == 0) {
|
||||
ptr_ustr++;
|
||||
memcpy(ptr_ustr, ptr_ustr-1, sizeof(ustr_t));
|
||||
ptr_ustr->split_flag = 1;
|
||||
ptr_ustr->split_direction = 0;
|
||||
ptr_ustr->height = (ptr_ustr->height > 8 ? ((ptr_ustr->height+8)>>4)<<3 : 4);
|
||||
strip++;
|
||||
memcpy(strip, strip-1, sizeof(ustr_t));
|
||||
strip->split_flag = 1;
|
||||
strip->split_direction = 0;
|
||||
strip->height = (strip->height > 8 ? ((strip->height+8)>>4)<<3 : 4);
|
||||
continue;
|
||||
} else if(cmd == 1) {
|
||||
ptr_ustr++;
|
||||
memcpy(ptr_ustr, ptr_ustr-1, sizeof(ustr_t));
|
||||
ptr_ustr->split_flag = 1;
|
||||
ptr_ustr->split_direction = 1;
|
||||
ptr_ustr->width = (ptr_ustr->width > 8 ? ((ptr_ustr->width+8)>>4)<<3 : 4);
|
||||
strip++;
|
||||
memcpy(strip, strip-1, sizeof(ustr_t));
|
||||
strip->split_flag = 1;
|
||||
strip->split_direction = 1;
|
||||
strip->width = (strip->width > 8 ? ((strip->width+8)>>4)<<3 : 4);
|
||||
continue;
|
||||
} else if(cmd == 2) {
|
||||
if(ptr_ustr->usl7 == 0) {
|
||||
ptr_ustr->usl7 = 1;
|
||||
if(strip->usl7 == 0) {
|
||||
strip->usl7 = 1;
|
||||
ref_vectors = NULL;
|
||||
continue;
|
||||
}
|
||||
} else if(cmd == 3) {
|
||||
if(ptr_ustr->usl7 == 0) {
|
||||
ptr_ustr->usl7 = 1;
|
||||
if(strip->usl7 == 0) {
|
||||
strip->usl7 = 1;
|
||||
ref_vectors = buf2 + (*buf1 * 2);
|
||||
buf1++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
cur_frm_pos = cur + width * ptr_ustr->ypos + ptr_ustr->xpos;
|
||||
cur_frm_pos = cur + width * strip->ypos + strip->xpos;
|
||||
|
||||
if((blks_width = ptr_ustr->width) < 0)
|
||||
if((blks_width = strip->width) < 0)
|
||||
blks_width += 3;
|
||||
blks_width >>= 2;
|
||||
blks_height = ptr_ustr->height;
|
||||
blks_height = strip->height;
|
||||
|
||||
if(ref_vectors != NULL) {
|
||||
ref_frm_pos = ref + (ref_vectors[0] + ptr_ustr->ypos) * width +
|
||||
ref_vectors[1] + ptr_ustr->xpos;
|
||||
ref_frm_pos = ref + (ref_vectors[0] + strip->ypos) * width +
|
||||
ref_vectors[1] + strip->xpos;
|
||||
} else
|
||||
ref_frm_pos = cur_frm_pos - width_tbl[4];
|
||||
|
||||
@ -428,40 +470,21 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
break;
|
||||
case 8:
|
||||
if(lp2 == 0) {
|
||||
if(rle_v3 == 0) {
|
||||
rle_v2 = *buf1;
|
||||
rle_v1 = 1;
|
||||
if(rle_v2 > 32) {
|
||||
rle_v2 -= 32;
|
||||
rle_v1 = 0;
|
||||
}
|
||||
rle_v3 = 1;
|
||||
}
|
||||
buf1--;
|
||||
RLE_V3_CHECK(buf1,rle_v1,rle_v2,rle_v3)
|
||||
|
||||
if(rle_v1 == 1 || ref_vectors != NULL) {
|
||||
for(i = 0, j = 0; i < 4; i++, j += width_tbl[1])
|
||||
cur_lp[j] = ref_lp[j];
|
||||
}
|
||||
|
||||
rle_v2--;
|
||||
if(rle_v2 == 0) {
|
||||
rle_v3 = 0;
|
||||
buf1 += 2;
|
||||
}
|
||||
lp2 = 4;
|
||||
RLE_V2_CHECK(buf1,rle_v2, rle_v3,lp2)
|
||||
break;
|
||||
} else {
|
||||
rle_v1 = 1;
|
||||
rle_v2 = *buf1 - 1;
|
||||
}
|
||||
case 5:
|
||||
if(lp2 == 0 && rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
buf1--;
|
||||
rle_v3 = 1;
|
||||
}
|
||||
LP2_CHECK(buf1,rle_v3,lp2)
|
||||
case 4:
|
||||
for(i = 0, j = 0; i < (4 - lp2); i++, j += width_tbl[1])
|
||||
cur_lp[j] = ref_lp[j];
|
||||
@ -491,15 +514,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
for(i = 0, j = 0; i < 4; i++, j += width_tbl[1])
|
||||
cur_lp[j] = lv;
|
||||
|
||||
if((lv1 & 0x80) != 0) {
|
||||
if(rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
rle_v3 = 1;
|
||||
buf1 -= 2;
|
||||
}
|
||||
}
|
||||
lp2 = 4;
|
||||
LV1_CHECK(buf1,rle_v3,lv1,lp2)
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
@ -532,7 +547,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
switch(correction_type_sp[lp2 & 0x01][k]) {
|
||||
case 0:
|
||||
cur_lp[width_tbl[1]] = ((*ref_lp >> 1) + correction_lp[lp2 & 0x01][k]) << 1;
|
||||
if(lp2 > 0 || flag1 == 0 || ptr_ustr->ypos != 0)
|
||||
if(lp2 > 0 || flag1 == 0 || strip->ypos != 0)
|
||||
cur_lp[0] = ((cur_lp[-width_tbl[1]] >> 1) + (cur_lp[width_tbl[1]] >> 1)) & 0xFEFEFEFE;
|
||||
else
|
||||
cur_lp[0] = ((*ref_lp >> 1) + correction_lp[lp2 & 0x01][k]) << 1;
|
||||
@ -544,7 +559,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
((((unsigned short *)ref_lp)[0] >> 1) + correction_lp[lp2 & 0x01][*buf1++]) << 1;
|
||||
((unsigned short *)cur_lp)[width_tbl[2]+1] =
|
||||
((((unsigned short *)ref_lp)[1] >> 1) + correction_lp[lp2 & 0x01][k]) << 1;
|
||||
if(lp2 > 0 || flag1 == 0 || ptr_ustr->ypos != 0)
|
||||
if(lp2 > 0 || flag1 == 0 || strip->ypos != 0)
|
||||
cur_lp[0] = ((cur_lp[-width_tbl[1]] >> 1) + (cur_lp[width_tbl[1]] >> 1)) & 0xFEFEFEFE;
|
||||
else
|
||||
cur_lp[0] = cur_lp[width_tbl[1]];
|
||||
@ -583,40 +598,21 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
|
||||
case 8:
|
||||
if(lp2 == 0) {
|
||||
if(rle_v3 == 0) {
|
||||
rle_v2 = *buf1;
|
||||
rle_v1 = 1;
|
||||
if(rle_v2 > 32) {
|
||||
rle_v2 -= 32;
|
||||
rle_v1 = 0;
|
||||
}
|
||||
rle_v3 = 1;
|
||||
}
|
||||
buf1--;
|
||||
RLE_V3_CHECK(buf1,rle_v1,rle_v2,rle_v3)
|
||||
|
||||
if(rle_v1 == 1) {
|
||||
for(i = 0, j = 0; i < 8; i++, j += width_tbl[1])
|
||||
cur_lp[j] = ref_lp[j];
|
||||
}
|
||||
|
||||
rle_v2--;
|
||||
if(rle_v2 == 0) {
|
||||
rle_v3 = 0;
|
||||
buf1 += 2;
|
||||
}
|
||||
lp2 = 4;
|
||||
RLE_V2_CHECK(buf1,rle_v2, rle_v3,lp2)
|
||||
break;
|
||||
} else {
|
||||
rle_v2 = (*buf1) - 1;
|
||||
rle_v1 = 1;
|
||||
}
|
||||
case 5:
|
||||
if(lp2 == 0 && rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
buf1--;
|
||||
rle_v3 = 1;
|
||||
}
|
||||
LP2_CHECK(buf1,rle_v3,lp2)
|
||||
case 4:
|
||||
for(i = 0, j = 0; i < 8 - (lp2 * 2); i++, j += width_tbl[1])
|
||||
cur_lp[j] = *ref_lp;
|
||||
@ -633,15 +629,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
for(i = 0, j = 0; i < 4; i++, j += width_tbl[1])
|
||||
cur_lp[j] = lv;
|
||||
|
||||
if((lv1 & 0x80) != 0) {
|
||||
if(rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
rle_v3 = 1;
|
||||
buf1 -= 2;
|
||||
}
|
||||
}
|
||||
lp2 = 4;
|
||||
LV1_CHECK(buf1,rle_v3,lv1,lp2)
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -680,7 +668,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
case 0:
|
||||
cur_lp[width_tbl[1]] = ((lv1 >> 1) + correctionloworder_lp[lp2 & 0x01][k]) << 1;
|
||||
cur_lp[width_tbl[1]+1] = ((lv2 >> 1) + correctionhighorder_lp[lp2 & 0x01][k]) << 1;
|
||||
if(lp2 > 0 || ptr_ustr->ypos != 0 || flag1 == 0) {
|
||||
if(lp2 > 0 || strip->ypos != 0 || flag1 == 0) {
|
||||
cur_lp[0] = ((cur_lp[-width_tbl[1]] >> 1) + (cur_lp[width_tbl[1]] >> 1)) & 0xFEFEFEFE;
|
||||
cur_lp[1] = ((cur_lp[-width_tbl[1]+1] >> 1) + (cur_lp[width_tbl[1]+1] >> 1)) & 0xFEFEFEFE;
|
||||
} else {
|
||||
@ -693,7 +681,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
case 1:
|
||||
cur_lp[width_tbl[1]] = ((lv1 >> 1) + correctionloworder_lp[lp2 & 0x01][*buf1++]) << 1;
|
||||
cur_lp[width_tbl[1]+1] = ((lv2 >> 1) + correctionloworder_lp[lp2 & 0x01][k]) << 1;
|
||||
if(lp2 > 0 || ptr_ustr->ypos != 0 || flag1 == 0) {
|
||||
if(lp2 > 0 || strip->ypos != 0 || flag1 == 0) {
|
||||
cur_lp[0] = ((cur_lp[-width_tbl[1]] >> 1) + (cur_lp[width_tbl[1]] >> 1)) & 0xFEFEFEFE;
|
||||
cur_lp[1] = ((cur_lp[-width_tbl[1]+1] >> 1) + (cur_lp[width_tbl[1]+1] >> 1)) & 0xFEFEFEFE;
|
||||
} else {
|
||||
@ -743,16 +731,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
|
||||
case 8:
|
||||
if(lp2 == 0) {
|
||||
if(rle_v3 == 0) {
|
||||
rle_v2 = *buf1;
|
||||
rle_v1 = 1;
|
||||
if(rle_v2 > 32) {
|
||||
rle_v2 -= 32;
|
||||
rle_v1 = 0;
|
||||
}
|
||||
rle_v3 = 1;
|
||||
}
|
||||
buf1--;
|
||||
RLE_V3_CHECK(buf1,rle_v1,rle_v2,rle_v3)
|
||||
if(rle_v1 == 1) {
|
||||
if(flag1 != 0) {
|
||||
for(i = 0, j = width_tbl[1]; i < 7; i++, j += width_tbl[1]) {
|
||||
@ -768,24 +747,14 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
}
|
||||
}
|
||||
}
|
||||
rle_v2--;
|
||||
if(rle_v2 == 0) {
|
||||
rle_v3 = 0;
|
||||
buf1 += 2;
|
||||
}
|
||||
lp2 = 4;
|
||||
RLE_V2_CHECK(buf1,rle_v2, rle_v3,lp2)
|
||||
break;
|
||||
} else {
|
||||
rle_v1 = 1;
|
||||
rle_v2 = (*buf1) - 1;
|
||||
}
|
||||
case 5:
|
||||
if(lp2 == 0 && rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
buf1--;
|
||||
rle_v3 = 1;
|
||||
}
|
||||
LP2_CHECK(buf1,rle_v3,lp2)
|
||||
case 4:
|
||||
if(lp2 == 0 && flag1 != 0) {
|
||||
for(i = 0, j = width_tbl[1]; i < 7; i++, j += width_tbl[1]) {
|
||||
@ -827,15 +796,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
lv += (lv << 16);
|
||||
for(i = 0, j = 0; i < 8; i++, j += width_tbl[1])
|
||||
cur_lp[j] = lv;
|
||||
if((lv1 & 0x80) != 0) {
|
||||
if(rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
rle_v3 = 1;
|
||||
buf1 -= 2;
|
||||
}
|
||||
}
|
||||
lp2 = 4;
|
||||
LV1_CHECK(buf1,rle_v3,lv1,lp2)
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -900,26 +861,12 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
|
||||
case 8:
|
||||
if(lp2 == 0) {
|
||||
if(rle_v3 == 0) {
|
||||
rle_v2 = *buf1;
|
||||
rle_v1 = 1;
|
||||
if(rle_v2 > 32) {
|
||||
rle_v2 -= 32;
|
||||
rle_v1 = 0;
|
||||
}
|
||||
rle_v3 = 1;
|
||||
}
|
||||
buf1--;
|
||||
RLE_V3_CHECK(buf1,rle_v1,rle_v2,rle_v3)
|
||||
for(i = 0, j = 0; i < 8; i++, j += width_tbl[1]) {
|
||||
((unsigned long *)cur_frm_pos)[j] = ((unsigned long *)ref_frm_pos)[j];
|
||||
((unsigned long *)cur_frm_pos)[j+1] = ((unsigned long *)ref_frm_pos)[j+1];
|
||||
}
|
||||
rle_v2--;
|
||||
if(rle_v2 == 0) {
|
||||
rle_v3 = 0;
|
||||
buf1 += 2;
|
||||
}
|
||||
lp2 = 4;
|
||||
RLE_V2_CHECK(buf1,rle_v2, rle_v3,lp2)
|
||||
break;
|
||||
} else {
|
||||
rle_v1 = 1;
|
||||
@ -927,12 +874,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
}
|
||||
case 5:
|
||||
case 7:
|
||||
if(lp2 == 0 && rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
buf1--;
|
||||
rle_v3 = 1;
|
||||
}
|
||||
LP2_CHECK(buf1,rle_v3,lp2)
|
||||
case 6:
|
||||
case 4:
|
||||
for(i = 0, j = 0; i < 8 - (lp2 * 2); i++, j += width_tbl[1]) {
|
||||
@ -950,15 +892,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
lv += (lv << 16);
|
||||
for(i = 0, j = 0; i < 8; i++, j += width_tbl[1])
|
||||
((unsigned long *)cur_frm_pos)[j] = ((unsigned long *)cur_frm_pos)[j+1] = lv;
|
||||
if((lv1 & 0x80) != 0) {
|
||||
if(rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
rle_v3 = 1;
|
||||
buf1 -= 2;
|
||||
}
|
||||
}
|
||||
lp2 = 4;
|
||||
LV1_CHECK(buf1,rle_v3,lv1,lp2)
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1022,26 +956,12 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
|
||||
case 8:
|
||||
if(lp2 == 0) {
|
||||
if(rle_v3 == 0) {
|
||||
rle_v2 = *buf1;
|
||||
rle_v1 = 1;
|
||||
if(rle_v2 > 32) {
|
||||
rle_v2 -= 32;
|
||||
rle_v1 = 0;
|
||||
}
|
||||
rle_v3 = 1;
|
||||
}
|
||||
buf1--;
|
||||
RLE_V3_CHECK(buf1,rle_v1,rle_v2,rle_v3)
|
||||
|
||||
for(i = 0, j = 0; i < 8; i++, j += width_tbl[1])
|
||||
cur_lp[j] = ref_lp[j];
|
||||
|
||||
rle_v2--;
|
||||
if(rle_v2 == 0) {
|
||||
rle_v3 = 0;
|
||||
buf1 += 2;
|
||||
}
|
||||
lp2 = 4;
|
||||
RLE_V2_CHECK(buf1,rle_v2, rle_v3,lp2)
|
||||
break;
|
||||
} else {
|
||||
rle_v1 = 1;
|
||||
@ -1049,12 +969,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
}
|
||||
case 5:
|
||||
case 7:
|
||||
if(lp2 == 0 && rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
buf1--;
|
||||
rle_v3 = 1;
|
||||
}
|
||||
LP2_CHECK(buf1,rle_v3,lp2)
|
||||
case 4:
|
||||
case 6:
|
||||
for(i = 0, j = 0; i < 8 - (lp2 * 2); i++, j += width_tbl[1])
|
||||
@ -1070,15 +985,7 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
lv += (lv << 16);
|
||||
for(i = 0, j = 0; i < 4; i++, j += width_tbl[1])
|
||||
cur_lp[j] = lv;
|
||||
if((lv1 & 0x80) != 0) {
|
||||
if(rle_v3 != 0)
|
||||
rle_v3 = 0;
|
||||
else {
|
||||
rle_v3 = 1;
|
||||
buf1 -= 2;
|
||||
}
|
||||
}
|
||||
lp2 = 4;
|
||||
LV1_CHECK(buf1,rle_v3,lv1,lp2)
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1100,22 +1007,22 @@ static void iv_Decode_Chunk(Indeo3DecodeContext *s,
|
||||
}
|
||||
}
|
||||
|
||||
if(ptr_ustr < xustr)
|
||||
if(strip < strip_tbl)
|
||||
return;
|
||||
|
||||
for( ; ptr_ustr >= xustr; ptr_ustr--) {
|
||||
if(ptr_ustr->split_flag != 0) {
|
||||
ptr_ustr->split_flag = 0;
|
||||
ptr_ustr->usl7 = (ptr_ustr-1)->usl7;
|
||||
for( ; strip >= strip_tbl; strip--) {
|
||||
if(strip->split_flag != 0) {
|
||||
strip->split_flag = 0;
|
||||
strip->usl7 = (strip-1)->usl7;
|
||||
|
||||
if(ptr_ustr->split_direction) {
|
||||
ptr_ustr->xpos += ptr_ustr->width;
|
||||
ptr_ustr->width = (ptr_ustr-1)->width - ptr_ustr->width;
|
||||
if(region_160_width <= ptr_ustr->xpos && width < ptr_ustr->width + ptr_ustr->xpos)
|
||||
ptr_ustr->width = width - ptr_ustr->xpos;
|
||||
if(strip->split_direction) {
|
||||
strip->xpos += strip->width;
|
||||
strip->width = (strip-1)->width - strip->width;
|
||||
if(region_160_width <= strip->xpos && width < strip->width + strip->xpos)
|
||||
strip->width = width - strip->xpos;
|
||||
} else {
|
||||
ptr_ustr->ypos += ptr_ustr->height;
|
||||
ptr_ustr->height = (ptr_ustr-1)->height - ptr_ustr->height;
|
||||
strip->ypos += strip->height;
|
||||
strip->height = (strip-1)->height - strip->height;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user