[MPlayer-cvslog] r30524 - trunk/spudec.c
reimar
subversion at mplayerhq.hu
Sat Feb 6 20:57:45 CET 2010
Author: reimar
Date: Sat Feb 6 20:57:45 2010
New Revision: 30524
Log:
Fix subtitle display for DVDs using fade-in/fade-out.
This does not do the actual fading, this is not supported by MPlayer,
but will just use the highest alpha value used during display.
Modified:
trunk/spudec.c
Modified: trunk/spudec.c
==============================================================================
--- trunk/spudec.c Sat Feb 6 20:18:09 2010 (r30523)
+++ trunk/spudec.c Sat Feb 6 20:57:45 2010 (r30524)
@@ -354,7 +354,7 @@ static void compute_palette(spudec_handl
static void spudec_process_control(spudec_handle_t *this, int pts100)
{
- int a,b; /* Temporary vars */
+ int a,b,c,d; /* Temporary vars */
unsigned int date, type;
unsigned int off;
unsigned int start_off = 0;
@@ -417,10 +417,22 @@ static void spudec_process_control(spude
break;
case 0x04:
/* Alpha */
- this->alpha[0] = this->packet[off] >> 4;
- this->alpha[1] = this->packet[off] & 0xf;
- this->alpha[2] = this->packet[off + 1] >> 4;
- this->alpha[3] = this->packet[off + 1] & 0xf;
+ a = this->packet[off] >> 4;
+ b = this->packet[off] & 0xf;
+ c = this->packet[off + 1] >> 4;
+ d = this->packet[off + 1] & 0xf;
+ // Note: some DVDs change these values to create a fade-in/fade-out effect
+ // We can not handle this, so just keep the highest value during the display time.
+ if (display) {
+ a = FFMAX(a, this->alpha[0]);
+ b = FFMAX(b, this->alpha[1]);
+ c = FFMAX(c, this->alpha[2]);
+ d = FFMAX(d, this->alpha[3]);
+ }
+ this->alpha[0] = a;
+ this->alpha[1] = b;
+ this->alpha[2] = c;
+ this->alpha[3] = d;
mp_msg(MSGT_SPUDEC,MSGL_DBG2,"Alpha %d, %d, %d, %d\n",
this->alpha[0], this->alpha[1], this->alpha[2], this->alpha[3]);
off+=2;
More information about the MPlayer-cvslog
mailing list