Ticket #466: mplayer.rollup.patch

File mplayer.rollup.patch, 2.5 KB (added by dswarin+mplayer@…, 21 years ago)

TiVo closed caption rollup patch

  • libmpdemux/demux_ty_osd.c

    old new  
    4646#define TY_CCPAINTON  (  1 )
    4747
    4848#define TY_CC_MAX_X   ( 45 )
     49#define TY_CC_MAX_Y   (  4 )
    4950
    5051static int      TY_CC_CUR_X;
    5152static int      TY_CC_CUR_Y;
    … …  
    114115           cy = SUB_MAX_TEXT - TY_CC_Y_Offset - 1;
    115116   }
    116117
    117         // printf( "Calling ty_DrawChar() x:%d y:%d %c fg:%d bg:%d\n",
    118         //      cx, cy, disChar, fgColor, bgColor );
     118        // printf( "Calling ty_DrawChar() x:%d y:%d '%c' fg:%d bg:%d\n",
     119        //      cx, cy, disChar, fgColor, bgColor );
    119120
    120121   ty_OSD2.text[ TY_CC_Y_Offset + cy ][ cx ] = disChar;
    121122   memset( &( ty_OSD2.text[ TY_CC_Y_Offset + cy ][ cx + 1 ] ), ' ',
    … …  
    150151
    151152        for ( index = 0 ; index < numLines ; index++ )
    152153        {
    153                 strcpy( ty_OSD1.text[ TY_CC_Y_Offset + dest ],
    154                         ty_OSD1.text[ TY_CC_Y_Offset + source ] );
     154                strcpy( ty_OSD2.text[ TY_CC_Y_Offset + dest ],
     155                        ty_OSD2.text[ TY_CC_Y_Offset + source ] );
    155156           dest++;
    156157                source++;
    157158        }
    158         memset( ty_OSD1.text[ TY_CC_Y_Offset + source - 1 ], ' ', TY_CC_MAX_X - 1 );
    159         ty_OSD1.text[ TY_CC_Y_Offset + source - 1 ][ TY_CC_MAX_X - 1 ] = 0;
     159        memset( ty_OSD2.text[ TY_CC_Y_Offset + source - 1 ], ' ', TY_CC_MAX_X - 1 );
     160        ty_OSD2.text[ TY_CC_Y_Offset + source - 1 ][ TY_CC_MAX_X - 1 ] = 0;
    160161}
    161162
    162163static void ty_drawchar( char c )
    … …  
    252253         TY_CC_CUR_Y = CC_row[ ( ( b1 << 1 ) & 14 ) | ( ( b2 >> 5 ) & 1 ) ];
    253254
    254255                        // Offset into MPlayer's Buffer
    255                         if ( ( TY_CC_CUR_Y >= 1 ) && ( TY_CC_CUR_Y <= 4 ) )
     256                        if ( TY_CC_stat > TY_CCPAINTON ) {
     257                                TY_CC_CUR_Y = TY_CC_MAX_Y;
     258                                TY_CC_Y_Offset = SUB_MAX_TEXT - 5 - 1;
     259                        }
     260                        else if ( ( TY_CC_CUR_Y >= 1 ) && ( TY_CC_CUR_Y <= 4 ) )
    256261                        {
    257262                                TY_CC_Y_Offset = SUB_MAX_TEXT - 5 - 1;
    258263                        }
    259                         if ( ( TY_CC_CUR_Y >= 5 ) && ( TY_CC_CUR_Y <= 10 ) )
     264                        else if ( ( TY_CC_CUR_Y >= 5 ) && ( TY_CC_CUR_Y <= 10 ) )
    260265                        {
    261266                                TY_CC_Y_Offset = SUB_MAX_TEXT - 5 - 5;
    262267                        }
    263                         if ( ( TY_CC_CUR_Y >= 12 ) && ( TY_CC_CUR_Y <= 15 ) )
     268                        else if ( ( TY_CC_CUR_Y >= 12 ) && ( TY_CC_CUR_Y <= 15 ) )
    264269                        {
    265270                                TY_CC_Y_Offset = SUB_MAX_TEXT - 5 - 12;
    266271                        }
    … …  
    384389                  {
    385390                     if ( TY_CC_stat == TY_CCPOPUP ) ty_ClearOSD( 1, 2 );
    386391                     TY_CC_stat = b2 - 0x23;
    387                      if ( TY_CC_CUR_Y < TY_CC_stat ) TY_CC_CUR_Y = TY_CC_stat;
     392                     TY_CC_CUR_Y = TY_CC_MAX_Y;
     393                     TY_CC_Y_Offset = SUB_MAX_TEXT - 5 - 1;
    388394                     break;
    389395                  }
    390396