dvdsubdec: make up clut values if they weren't set
This commit is contained in:
parent
455aaa3fbd
commit
0a786810af
@ -37,6 +37,7 @@ gstspu_vobsub_recalc_palette (GstDVDSpu * dvdspu,
|
|||||||
SpuState *state = &dvdspu->spu_state;
|
SpuState *state = &dvdspu->spu_state;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
|
if (state->vobsub.current_clut[idx[0]] != 0) {
|
||||||
for (i = 0; i < 4; i++, dest++) {
|
for (i = 0; i < 4; i++, dest++) {
|
||||||
guint32 col = state->vobsub.current_clut[idx[i]];
|
guint32 col = state->vobsub.current_clut[idx[i]];
|
||||||
|
|
||||||
@ -47,6 +48,23 @@ gstspu_vobsub_recalc_palette (GstDVDSpu * dvdspu,
|
|||||||
dest->V = ((guint16) ((col >> 8) & 0xff)) * dest->A;
|
dest->V = ((guint16) ((col >> 8) & 0xff)) * dest->A;
|
||||||
dest->U = ((guint16) (col & 0xff)) * dest->A;
|
dest->U = ((guint16) (col & 0xff)) * dest->A;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
int y = 240;
|
||||||
|
|
||||||
|
/* The CLUT presumably hasn't been set, so we'll just guess some
|
||||||
|
* values for the non-transparent colors (white, grey, black) */
|
||||||
|
for (i = 0; i < 4; i++, dest++) {
|
||||||
|
dest->A = (alpha[i] << 4) | alpha[i];
|
||||||
|
if (alpha[i] != 0) {
|
||||||
|
dest[0].Y = y * dest[0].A;
|
||||||
|
y -= 112;
|
||||||
|
if (y < 0)
|
||||||
|
y = 0;
|
||||||
|
}
|
||||||
|
dest[0].U = 128 * dest[0].A;
|
||||||
|
dest[0].V = 128 * dest[0].A;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Recalculate the main, HL & ChgCol palettes */
|
/* Recalculate the main, HL & ChgCol palettes */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user