⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memcfg.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 2 页
字号:
        memcfg_set_framebuf_anchor(anchor_gs);
        set_fbuf_size( GS_LUMA_SIZE, GS_CHROMA_SIZE);

        YCbCrGrapeMdCfg(352,288);
        setvpp_linear_mode_width(352);
    }
    break;

#ifdef SUPPORT_PREVIEW_9FRAMES
    case MEMORY_PREVIEW:
        vpp_set_bg_color(0x40,0xc07c);                  // blue color
        memcfg_set_framebuf_anchor(anchor_preview);
    #ifdef  MEMCFG_COMPACT_MODE
        set_fbuf_size( LUMA_SIZE, CHROMA_SIZE );

        regs0->evbya            = M_EVBYA;
        SetEvbyaLimit( M_EVBSZ );

        // set decode buffer to 480x576
        regs0->mc_mbwidth   = 30;                                       // 480 decode
        set_framebuf_mb_mode_width(30);                                 // 480 source buffers
        regs0->vpp_config1  = (regs0->vpp_config1 & ~0x07) | 0x00;      // 720
    #else   /*!defined(MEMCFG_COMPACT_MODE)*/
        set_fbuf_size( LUMA_SIZE, CHROMA_SIZE );
    
        regs0->evbya            = P_EVBYA;
        SetEvbyaLimit( P_EVBSZ );

    #endif/*!defined(MEMCFG_COMPACT_MODE)*/

    #ifdef SDRAM_NO_REORDER 
        setup_vpp_mapping(3,1);
    #else
        setup_vpp_mapping(3,0);
    #endif

        set_disbuf(2);
        line_offset = (720+31)/32*32 ;    
        set_framebuf_linear_mode_width(line_offset);

        // set linear mode width
        setvpp_linear_mode_width(720);

        break;
#endif
        
#ifdef DVD_AUDIO
    case MEMORY_DVD_AUDIO:
    {
        memcfg_set_framebuf_anchor(anchor_dvdaudio);
        set_fbuf_size( LUMA_SIZE, CHROMA_SIZE );

        regs0->evbya            = P_EVBYA;
        SetEvbyaLimit( P_EVBSZ );

        set_disbuf(0);              
        setup_vpp_mapping(1,0);
        regs0->mc_mbwidth = 45;                                     // 720 mc
        set_framebuf_mb_mode_width(45);                             // 720 source buffer
        regs0->vpp_config1 = (regs0->vpp_config1 & ~0x07) | 0x00;   // 720 display
    }
    break;
#endif

#ifdef  SUPPORT_MIDI
    case MEMORY_MIDI:
    {
        regs0->ref0_luma        = D_REF0_LUMA; 
        regs0->ref0_chroma      = D_REF0_CHROMA;
        regs0->ref1_luma        = D_REF1_LUMA;
        regs0->ref1_chroma      = D_REF1_CHROMA;
        regs0->bidir_luma       = D_BIDIR_LUMA;
        regs0->bidir_chroma     = D_BIDIR_CHROMA;
       
        regs0->vppref0_luma     = regs0->ref0_luma;
        regs0->vppref1_luma     = regs0->ref1_luma;
        regs0->vppref0_chroma   = regs0->ref0_chroma;
        regs0->vppref1_chroma   = regs0->ref1_chroma;
        regs0->vppbidir_luma    = regs0->bidir_luma;
        regs0->vppbidir_chroma  = regs0->bidir_chroma;

        regs0->evbya            = D_EVBYA;
        SetEvbyaLimit( D_EVBSZ );

        set_fbuf_size( D_LUMA_SIZE, D_CHROMA_SIZE );

        set_disbuf(0);              
        setup_vpp_mapping(1,0);

        regs0->mc_mbwidth = 22;                                     // 352 (22)
        set_framebuf_mb_mode_width(22);                             // 352 (22)
        regs0->vpp_config1 = (regs0->vpp_config1 & ~0x07) | 0x02;   // 352 (type 010)
        setVPP_PictureSize(352,288);
    }
    break;
#endif  // SUPPORT_MIDI

    case MEMORY_DVD_NTSC:
    case MEMORY_SVCD_NTSC:
    case MEMORY_CVD_NTSC:
    case MEMORY_VCD_NTSC:   
    case MEMORY_SVCD_PAL:
    case MEMORY_CVD_PAL:
    case MEMORY_VCD_PAL:    
#if defined( SDRAM_16Mb_Mode ) && defined( SUPPORT_FILE_SYSTEM_MODE )
    case 0xff:  // 2004/08/26 yltseng
#endif
#ifdef MEMCFG_COMPACT_MODE
    {
        memcfg_set_framebuf_anchor(anchor_compact);
        set_fbuf_size( N_LUMA_SIZE, N_CHROMA_SIZE );

        regs0->evbya            = N_EVBYA;
        SetEvbyaLimit( N_EVBSZ );

        set_disbuf(0);              
        setup_vpp_mapping(1,0);
        
        if( config != MEMORY_DVD_NTSC ) // 2004/09/13 yltseng
        {
            regs0->mc_mbwidth   = 30;                                       // 480
            set_framebuf_mb_mode_width(30);
            regs0->vpp_config1  = (regs0->vpp_config1 & ~0x07) | 0x03;      // 480
            setVPP_PictureSize(480,480);            
        }
        else
        {
            regs0->mc_mbwidth   = 45;                                       // 720
            set_framebuf_mb_mode_width(45);
            regs0->vpp_config1  = (regs0->vpp_config1 & ~0x07) | 0x00;      // 720
            setVPP_PictureSize(720,480);
        }
    }
    break;
#endif/*defined(MEMCFG_COMPACT_MODE)*/

    // (PAL)
    // for typical decoding, all set to maximum size
    case MEMORY_DVD_PAL:
    default:
    {   
        memcfg_set_framebuf_anchor(anchor_dvdpal);
        
        set_fbuf_size( LUMA_SIZE, CHROMA_SIZE );

        regs0->evbya            = P_EVBYA;
        SetEvbyaLimit( P_EVBSZ );

        set_disbuf(0);              
        setup_vpp_mapping(1,0);
        regs0->mc_mbwidth = 45;                                     // 720 mc
        set_framebuf_mb_mode_width(45);                             // 720 source buffer
        regs0->vpp_config1 = (regs0->vpp_config1 & ~0x07) | 0x00;   // 720 display        
        
        
#ifdef  MEMCFG_MOVE_OSDSUP
        osdya_n                 = P_OSDYA;
        supya_n                 = P_SUPYA;
#endif
    }
    break;
    }

#ifdef  MONE_CONFIG
    if (config==MEMORY_DVD_PAL) io_write_wait("PAL\n");
    else io_write_wait("OTHER\n");
#endif

#ifdef  MB22
    mb22_en = (config==MEMORY_DVD_PAL);    
#else
    mb22_en = 0;
#endif

#ifdef  DTH_CFG_ENABLE
    if (config==MEMORY_DVD_PAL) {
        config_mc_compression(1);
        set_dis_pic_size(720,576);  // force setting display mode
    } else {
        config_mc_compression(0);
    }
#else
    config_mc_compression(0);
#endif

#ifdef  MONE_CONFIG
    if (regs0->mc_compress) memcfg_printf("HAS compressed\n");
    else memcfg_printf("NOT compressed\n");
#endif

    /*
    ** config L-mem and also move video-bitstream buffer
    */
#define RESTORE_EVB()   memcpyS((void *)(SDRAM_BASE+regs0->evbya*1024), (void *)(SDRAM_BASE+evbya_old*1024),EVBSZ*1024)
#define MOVE_OSD()      memcpyS((void *)(SDRAM_BASE+osdya_n*1024), (void *)(SDRAM_BASE+REG_OSDYA*1024), OSDSIZE*1024)
#define MOVE_SUP()      memcpyS((void *)(SDRAM_BASE+supya_n*1024), (void *)(SDRAM_BASE+regs0->supya*1024), SUPSIZE*1024)

#ifdef  MEMCFG_PAL_LMEM
    // only use Lmem for PAL D1 mode
    if (config==MEMORY_DVD_PAL)
    {
        config_Lmem(1);

    #ifdef MOVE_PAL_AUDYA   // 2005/01/24 yltseng
        if( memory_config_saved != MEMORY_DVD_PAL )
            AUDIF_Reset_DSP();
    #endif               
        RESTORE_EVB();
        
    #ifdef  MEMCFG_MOVE_OSDSUP
        MOVE_OSD();
        MOVE_SUP();
    #endif
        ModifyFsBufAddr();
    }
    else
    {
        RESTORE_EVB();
    #ifdef  MEMCFG_MOVE_OSDSUP
        MOVE_OSD();
        MOVE_SUP();
    #endif
        ModifyFsBufAddr();

    #ifdef MOVE_PAL_AUDYA   // 2005/01/24 yltseng
        if( memory_config_saved == MEMORY_DVD_PAL )
            AUDIF_Reset_DSP();
    #endif
        config_Lmem(0);
    }

#else
    #define RESTORE_EVBX()   memcpyS((void *)(SDRAM_BASE+regs0->evbya*1024), (void *)(SDRAM_BASE+evbya_old*1024),P_EVBSZ*1024)

    if (avd_is_midi() ) { //Jeff 20031028
        if (regs0->evbya!=evbya_old) RESTORE_EVBX();
    }
    config_Lmem(0);
#endif
    
    ModifyNavBufAddr();

    //OSD Display Buffer pointer
#ifdef OSDISP
    static int osd_memcfg_flag=0;
    //when boot and this function first called, memory addr is the same with PROMBASE, cause some bug.
    //so, add the static flag to avoid.    kehw
    if(osd_memcfg_flag)	
    {
    	REG_OSDYA                   = 0x00480000>>10;//osdya_n;
    	REG_OSDYA2                  = 0x00480000>>10;//osdya_n;
    }
    else
#endif		
    {
#ifdef OSDISP
    	osd_memcfg_flag=1;
#endif
    
#ifdef SUPPORT_16BIT_OSD
        if(OSD_buffer_16bit ==1)
        {
            REG_OSDYA                   = GP_REF1_LUMA + 64;
            REG_OSDYA2                  = GP_REF1_LUMA + 64;//osdya_n;
        }
        else
        {
            REG_OSDYA                   = osdya_n;
            REG_OSDYA2                  = osdya_n;
        }
#else
        REG_OSDYA                   = osdya_n;
        REG_OSDYA2                  = osdya_n;
#endif
    }
    
    //Sub-picture bitstream Buffer pointer
    regs0->sup_buffer_limit     = SUPSIZE*1024;
    regs0->supya                = supya_n;
    regs0->supya_limit          = SUPSIZE;  
    set_sup_hwbuf(supya_n, supya_n+SUPSIZE);
    
    regs0->supya2               = A_SUPYA2;
    regs0->supya2_limit         = SUPSIZE2;
    
#ifdef TWO_SUBTITLE //terry,2004/7/28 01:49PM
    set_sup_hwbuf2(A_SUPYA2, A_SUPYA2+SUPSIZE2);
#endif

    SetupOtherBufferPointer();

    // clearup framebuf status
    vpp_reset_framebuf_state();

    // clearup memory
    if (blue)
    {
        clrFrameBuffer(FRAME_REF0|FRAME_REF1|FRAME_BIDIR|FRAME_FILL_BLUE);
    }
    else
    {
        clrFrameBuffer(FRAME_REF0|FRAME_REF1);        
    }

// 2004/07/02 yltseng, for PAL/NTSC switch
#if defined( SDRAM_16Mb_Mode ) && defined( SUPPORT_FILE_SYSTEM_MODE )
    if( pFsJpeg->gifsFuncBtn == FS_FUNC_OTHER )
        resync_video_bitstream();
#endif

    // re-enable video
    enable_video();

    // re-enable it
    setup_clock_gating(1);
#ifdef SDRAM_16Mb_Mode//terry,2003/10/21 10:03AM        
    regs0->osd_en = osd_enable;//terry,2003/10/20 03:24PM
#endif

    // 2004/06/12 yltseng move here
    memory_config_saved = configX;
    memory_config_w_saved = w;
    memory_config_h_saved = h;
}


//
//
//
#ifdef DVD_SERVO

#include "sinf.h"
UINT8 ServoDVDUserArea[200]; //extent to support DVD multi-session, Jeff 20031208

void
config_servo_buffer(void)
{   // 2004/11/24 yltseng, to make code clear
    unsigned tbya, size;
    extern  UINT8   DiscType;

    if( cd_type_loaded == CDROM )
    {
        //mp3/jpeg/file play
    #ifdef MP3_PLAY_LONG_ESP      //Gordon 20030718
        if (Is_JPEG_STATE()) 
            size = JPEG_SERVO_SIZE;
        else if(Is_MP3_STATE())
            size = JPEG_SERVO_SIZE+GP_LUMA_SIZE+GP_CHROMA_SIZE;
        else 
    #endif  
            size = JPEG_SERVO_SIZE;
        tbya = A_JPEG_SERVO_YA;     // DVD servo track-buffer pointer

        if (DiscType == CDDVD) {
            servo_max_buffer = 16 * ((unsigned)((size*1024) / 43316));    
        } else {
            servo_max_buffer = ((size*1024) / 2496) - 1;
        }
    }
    else
    {
        tbya = A_DVD_SERVO_YA;      // DVD servo track-buffer pointer     
    #ifdef DVD_AUDIO
        size = dAMG_LSN ? DVDA_SERVO_SIZE : DVDV_SERVO_SIZE;
    #else
        size = DVDV_SERVO_SIZE;
    #endif
        servo_max_buffer = 16 * ((unsigned)((size*1024) / 43316));  // 2004/11/29 yltseng
    }

    #ifdef PORTABLE_DVD
    extern int is_iop_call_back(unsigned *,unsigned *,BYTE);//jhuang 2003/12/3
    is_iop_call_back(&tbya,&size,0);
    #endif

    if (is_svo_dvd())
    {
        pServoUserInfo = ServoDVDUserArea;
    }
    else
    {
        // cd
        pServoUserInfo = (UINT8 *)(SDRAM_BASE_CACHED + (tbya)*1024);
        tbya+=1;
    }

    pTrackBuf = (UINT8 *) (SDRAM_BASE_UNCACHED + (tbya)*1024);  
      
    regs0->rf_sdramif_tbya  = tbya;                 // SERVO track buffer
    regs0->cdrya            = tbya;                 // HOST read buffer
    regs0->cdrya_limit      = size-1;


    #ifdef  MONE_CONFIG
    memcfg_printf("config_servo_buffer()\n");
    memcfg_printf("tbya $%x cdrya $%x cdrya_limit $%x\n", tbya, tbya, size-1);
    memcfg_printf("servo_max_buffer %d\n", servo_max_buffer);
    #endif
}
#endif


#ifdef MODIFY_OSD_SHOW_NEW_STYLE_WINDOW
/*
 *Function Description:
 *    to get the config mode is PAl or NTSC
 *
 *   zhaoyanhua add 2003-12-18 10:38
 */
/*
BYTE GetConfigMode(int config)
{
    BYTE mode = 0;
    
    switch(config)
    {
        case MEMORY_GRAPH_NTSC:
        case MEMORY_DVD_NTSC :
        case MEMORY_SVCD_NTSC:
        case MEMORY_CVD_NTSC:
        case MEMORY_VCD_NTSC:
            mode = MODE_NTSC;
            break;
        case MEMORY_GRAPH_PAL:
        case MEMORY_PREVIEW:
        case MEMORY_DVD_PAL:
        case MEMORY_SVCD_PAL:
        case MEMORY_CVD_PAL:
        case MEMORY_VCD_PAL:
        case MEMORY_DVD_AUDIO:
        default:
            mode = MODE_PAL;
    }
    return mode;

}
#endif
*/

BYTE GetConfigMode(int config)   //terry edit   fengjl upload it 3-12-24 12:59
{
     BYTE mode = 0;

     //if(tv_format!=MODE_AUTO)
     {
       if(getVPP_TVsystem()==1) mode = MODE_PAL;
       else mode = MODE_NTSC;
     }
     /*
     else
     {
       switch(config)
       {
          case MEMORY_GRAPH_NTSC:
          case MEMORY_DVD_NTSC :
          case MEMORY_SVCD_NTSC:
          case MEMORY_CVD_NTSC:
          case MEMORY_VCD_NTSC:
               mode = MODE_NTSC;
               break;          
          default:
               if(getVPP_TVsystem()==1) mode = MODE_PAL;
               else mode = MODE_NTSC;
       }
     }*/

     return mode;

}
#endif



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -