亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zoom.c

?? 一個兩碟控制的VCD的代碼,兩碟之間的轉動及連續播放,已大量生產的CODE.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Copyright 1997, ESS Technology, Inc.					*/
/* SCCSID @(#)zoom.c	1.63 6/11/98 */

/*
 * $Log$
 */

#ifdef ZOOM
#include "mvd.h"
#include "common.h"
#include "util.h"
#include "debug.h"
#include "display.h"
#include "zoom.h"
#include "buffer.h"
#include "fsosd.h"
#include "vp.h"
#include "vcxi.h"
#include "play.h"
#ifdef VSCALE
#include "vscale.h"
#endif
#ifdef CUST3
#include "const.h"
#include "custdsa.h"
#endif
#include "xport.h"

static unsigned int U_zoom_start , V_zoom_start, Y_zoom_start;

int save_width1;
int FromBtoB;
static int zoom_y_offset, zoom_uv_offset;
static unsigned int disp_width, disp_height;

PRIVATE void get_pic_size(void);
#ifdef PLAY20
extern int play_state;
#endif

#ifndef BF43
static int UV_location=-1;
#endif
extern int old_bane;
 
void Zoom_start()
{
    int       i, j, k, m, tmp;
    int       dest_u_start, dest_v_start, dest_y_start;
    int       wY, wUV;
    DISP_Info *dip, *dipp;
    unsigned  int buffer_size, height;
    extern int DISP_frame;
    int compressed = 0;
    int       v_start, u_start, y_start;
    int       width, full_height;
    extern int scale_dy_Y, scale_dy_UV;

    FromBtoB = 0;
    dip = DISP_info + DISP_frame;
    full_height = dip->height > 288;
    wY  = dip->wY;
    wUV = dip->wUV;

    if (!zoom_y_pos) zoom_y_pos = 2;
    k = (zoom_y_pos-2)*wY;
    if (full_height || dip->zUV) {   /* E2  or  E0 with compressing */
	zoom_uv_offset = ((zoom_y_pos-2) * wUV + ((zoom_x_pos * 3) >> 4))>>1;
	zoom_uv_offset = (zoom_uv_offset+1) / 3 * 3;
	tmp = zoom_uv_offset % wUV;
	m = zoom_uv_offset - tmp;

	if (full_height) {
	    mvd[vid_scn_misc0] &= 0xfffffffe;
	    mvd[vid_scn_misc0] |= 0x6000;

	    zoom_y_offset = (m << 2) + (tmp << 1);
	} else {
	    if (dip->zY)
		zoom_y_offset = k + (tmp << 1);
	    else {
		zoom_y_offset = (zoom_uv_offset/wUV * wY) << 1;
		zoom_y_offset += ((tmp << 2)/3) << 1;
	    }
	}
    }
    else {               /* E0 without compressing */
        zoom_y_offset = k + (zoom_x_pos >> 2);
        zoom_uv_offset = ((k + (zoom_x_pos >> 1)) >> 2);
    }
    zoom_y_offset &= 0xfffffffe;
    zoom_uv_offset += zoom_uv_offset/wUV*wUV;  /* this is because U, V buffer 
	is looked like uuuu..vvvv...uuu...vvv.. */
#ifndef BF43
    if (UV_location!=-1) {
        if (zoom_y_pos) {
        i = zoom_y_pos/scale_dy_Y * scale_dy_Y;
        }
        else
        i = 0;
        zoom_y_offset -= i*wY;
        zoom_uv_offset-= ((i>>1)<<1) * wUV ;
    }
#endif

    /* When E0 zoom by 2, or E2 zoom by 4, hardware cannot do vscale
       as Y,U,V wholely. So, we let hardware do Y vscale, and duplicate
       UV ourselfs by store UV to a temperary buffer, and duplicate the
       line .

       We use VBV buffer as temperary buffer to store U and V, with
       duplicated lines. 
     */

    if (zoom_level == 2 || !dip->zY || DISP_frame == 2) {
#ifndef BF43
	/* duplicated copy line */
	if(UV_location==-1)
          u_start = dip->startU + zoom_uv_offset;   /* dword address */
	else
          u_start = UV_location + zoom_uv_offset;   /* dword address */
#else
        u_start = dip->startU + zoom_uv_offset;   /* dword address */
#endif
        v_start = u_start + dip->wUV;   	  /* dword address */
	
	/* width of each line which needed to be duplicated */
        if (zoom_level == 1)                 /* E0 */
#ifndef BF43
	  if (!old_bane && mineomine) width = 21;
	  else
#endif
	    width = (wUV + 1) >> 1;
        else                                 /* E2 */
	    width = (wUV + 3) >> 2;
	height = dip->height >> 2;
	buffer_size = ((height * width) << 1);
	
	zoom_frame = -1;
	switch (DISP_frame) {
	  case 0:
	  case 1:
	    dipp = DISP_info + 2;
	    U_zoom_start = dipp->startY;
	    break;
	  case 2:
	    zoom_frame = H_VscaleFrame;
            if (vcx_scn_vscale != 0x10 
#ifdef PLAY20
		&& play_state != PLAY_STILL_STATE
		&& play_state != PLAY_WAIT_TIME_STATE
		&& !is_slide_show
#endif
	    ) {
		FromBtoB=1;
                dipp = DISP_info + 2;
	    }
            else 
	    {
#ifdef VSCALE
	    if (H_VscaleFrame == 1)
		dipp = DISP_info + 1;
	    else
		dipp = DISP_info + 0;
#else
	    dipp = DISP_info + 0;
#endif
	    }
        if (zoom_y_pos >= 76)
            U_zoom_start = dipp->startY;
        else
            U_zoom_start = dipp->startU - buffer_size * 2 ;
#ifndef BF43
	if (UV_location!=-1)
            U_zoom_start = (dipp->startU+dipp->height*dipp->wUV) -(buffer_size<<1) ;
#endif

            break;
	  default:
	    U_zoom_start = VBV_start;     /* E2 picture, zoom_buffer start */
	    				  /* at VBV buffer */
	    break;
	}
	V_zoom_start = U_zoom_start + buffer_size;
	j = 0; m=0;
	k = (width *3 ) >> 2;
	for (i = 0; i < (dip->height >> 2); i++) {
	    m = (i * wUV ) << 1;
	    {
		for (k = 0; k < width; k++) {
		    *(long*) dram(j + width + U_zoom_start) =
			*(long*) dram(j + U_zoom_start) = 
			    *(long*)dram(u_start + m);
		    *(long*) dram(j + width + V_zoom_start) =
			*(long*) dram(j + V_zoom_start) = 
			    *(long*)dram(v_start + m);
		    j++; m++;
		    asm("nop");
		    asm("nop");
		}
		j +=  width;
	    }
	}
    }

#ifndef BF43
    if (UV_location!=-1) {
        wY = dipp->wY;
	width <<=1;
	height = dipp->height>>1;
        Y_zoom_start = U_zoom_start - height*width;
        m = Y_zoom_start;
        u_start = dipp->startY + zoom_y_offset;   /* dword address */
        for (j=0;j<height;j++) {
          for (i=0;i<width;i++) {
             *(long*)dram(m)=*(long*)dram(u_start);
             m++; u_start++;
          }
          u_start += wY-width;
        }
    }
#endif
    /* with VSCALE on, we cannot use DMA_WIDTH2 register , always set
       DMA_WIDTH0 to 0, and DMA_WIDTH1 to real width.      */

    DISP_change_zoom(zoom_level);
    if (zoom_level == 1 && !full_height)
        mvd[buscon_dma_width1] = wY >> 1;
}

void zoom_reset()
{
    extern int disp_frame;
    extern int save_zoom_level;

    DO_blank();
    zoom_x_pos = 0;
    zoom_y_pos = 0;
    mvd[buscon_dma_scale_type] = 0;
    mvd[buscon_dma_width1] = save_width1;
    zoom_level = 0;
    DISP_change_zoom(zoom_level);
    if (vcx_scn_vscale != 0x10 && DISP_frame==2 && FromBtoB) {
         rescaleB();
    }
    disp_frame = DISP_frame;
}

rescaleB()
{
	resetVscale();
        initVscale_Pointer();
        VscaleStart = 1;
        VscaleLastFrame = 0;
        while (VscaleStart) vscale2();
}

void zoom_in(void)
{
    extern int VID_decoding_in_progress ;

/*  If system is not really pause, then ignore zoom_in key */
#ifdef PLAY20
    if (XPORT_active && play_state == PLAY_NORMAL_STATE)
        return;
#endif
    get_pic_size();

#if (!CUST71 && !CUSTDVD) /* For CUST71, this is handled in play.c */
    if (disp_height <= 288
#ifdef PLAY20
	|| is_slide_show || PLAY_e2_in_loop
#endif
	) {
	/* For low resolution, only do 2X zoom */
	if (zoom_level == 1)
	    return;
	zoom_level = 1;
    }
    else  
#endif	/* CUST71 */
    {
	if (zoom_level == 2)
	    return;
	zoom_level ++;
    }


    if (zoom_level == 1) {
	zoom_x_pos += disp_width >> 2;
	zoom_y_pos += disp_height >> 2;
    } else
    if (zoom_level == 2) {
	zoom_x_pos += disp_width >> 3;
	zoom_y_pos += disp_height >> 3;
    }
    save_width1 = mvd[buscon_dma_width1] ;
    DO_blank();

#ifndef BF43
    UV_location=-1;
    if (DISP_frame == 2 && vcx_scn_height == 288
#ifdef PLAY20
                && play_state != PLAY_STILL_STATE
                && play_state != PLAY_WAIT_TIME_STATE
                && !is_slide_show
#endif
	
    ) {
           Adjust_zoom_XY(zoom_x_pos, zoom_y_pos);
           scale_half();
           Zoom_start();
	   return;
    }
#endif

    pan(zoom_x_pos, zoom_y_pos);
    return;
}

void zoom_move_right()
{
    zoom_x_pos += HORZ_OFFSET;
    pan(zoom_x_pos, zoom_y_pos);
}

void zoom_move_left()
{
    zoom_x_pos -= HORZ_OFFSET;
    pan(zoom_x_pos, zoom_y_pos);
}

void zoom_move_up()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线一区| 精品欧美一区二区在线观看 | 首页亚洲欧美制服丝腿| 在线亚洲高清视频| 亚洲成人激情av| 日韩精品专区在线影院重磅| 青草av.久久免费一区| 欧美va亚洲va香蕉在线| 国产精品99久久久久久似苏梦涵| 欧美激情一区二区三区蜜桃视频| 不卡视频在线观看| 亚洲综合无码一区二区| 欧美日韩情趣电影| 韩国精品久久久| 国产精品成人在线观看| 欧美伊人精品成人久久综合97| 日本欧美一区二区在线观看| 久久夜色精品一区| 99这里只有精品| 午夜精品123| 久久久久久97三级| 色婷婷亚洲一区二区三区| 亚洲一区二区精品久久av| 欧美成人官网二区| 91麻豆自制传媒国产之光| 日日噜噜夜夜狠狠视频欧美人 | 91精品国产综合久久久久久久久久 | 麻豆高清免费国产一区| 国产三级精品三级| 欧美日韩亚洲综合在线 | 亚洲卡通动漫在线| 欧美不卡一二三| 91丝袜国产在线播放| 石原莉奈在线亚洲二区| 国产亚洲欧美一区在线观看| 欧洲一区二区av| 国产黄色91视频| 亚洲成人综合在线| 国产精品色婷婷久久58| 7777精品伊人久久久大香线蕉经典版下载 | 久久午夜羞羞影院免费观看| 日本韩国欧美国产| 国内精品国产三级国产a久久| 亚洲另类一区二区| 国产日韩欧美精品综合| 欧美高清hd18日本| 91丨九色丨蝌蚪丨老版| 国产一区二区三区四区五区入口| 亚洲国产精品自拍| 国产精品成人一区二区三区夜夜夜| 日韩一区二区三区精品视频| 91日韩一区二区三区| 国精产品一区一区三区mba视频 | av一二三不卡影片| 激情图片小说一区| 日本一区中文字幕| 亚洲影视在线播放| 1区2区3区国产精品| 国产午夜亚洲精品不卡| 欧美一区二区三区婷婷月色| 色综合一个色综合亚洲| 成人精品视频.| 国产一区二区精品久久99| 无吗不卡中文字幕| 亚洲一区二区欧美日韩| 亚洲女人****多毛耸耸8| 国产欧美一区二区三区在线老狼| 日韩免费电影网站| 91精品国产综合久久香蕉的特点| 欧美丝袜丝交足nylons| 色先锋久久av资源部| 波多野结衣在线一区| 国产传媒一区在线| 国产乱码精品一品二品| 国产剧情在线观看一区二区| 九一九一国产精品| 久久99久久99小草精品免视看| 日韩电影免费一区| 欧美a级一区二区| 免费成人结看片| 久久精品国产77777蜜臀| 99久久99久久精品国产片果冻| 国产精品一级二级三级| 国内精品嫩模私拍在线| 国产剧情一区在线| 成人激情小说乱人伦| 波多野洁衣一区| 一本一本大道香蕉久在线精品| 91麻豆国产在线观看| 欧美亚洲日本一区| 欧美精品视频www在线观看| 欧美精品tushy高清| 日韩免费看网站| 久久久精品一品道一区| 中文字幕在线观看一区| 亚洲精品免费播放| 石原莉奈在线亚洲三区| 国内不卡的二区三区中文字幕| 极品美女销魂一区二区三区 | 日日噜噜夜夜狠狠视频欧美人| 美女国产一区二区三区| 国产在线一区二区综合免费视频| 国产高清不卡一区二区| 一本久道中文字幕精品亚洲嫩| 欧美三级午夜理伦三级中视频| 欧美一区二区三区在线看| 久久免费视频一区| 亚洲欧美国产毛片在线| 视频精品一区二区| 国产不卡在线播放| 在线观看日产精品| 欧美xxx久久| 国产精品久久综合| 午夜久久福利影院| 国产福利91精品一区二区三区| 日本韩国欧美三级| 欧美精品一区二区在线观看| 国产精品久久久久久久久免费丝袜| 亚洲国产精品久久一线不卡| 激情六月婷婷久久| 在线免费观看一区| 久久午夜色播影院免费高清| 亚洲中国最大av网站| 国产一区二区精品久久91| 在线欧美一区二区| 国产无遮挡一区二区三区毛片日本| 亚洲精品ww久久久久久p站| 免费一级片91| 色香色香欲天天天影视综合网| 精品国产三级a在线观看| 一区二区三区日韩欧美| 国模大尺度一区二区三区| 在线亚洲+欧美+日本专区| 国产校园另类小说区| 日韩影院免费视频| 91美女在线看| 国产精品区一区二区三| 美洲天堂一区二卡三卡四卡视频 | 天天操天天综合网| 99久久夜色精品国产网站| 久久众筹精品私拍模特| 午夜视频一区二区| 一本久久a久久免费精品不卡| 国产午夜精品久久| 久久精品国产**网站演员| 欧美日韩国产天堂| 国产激情一区二区三区四区| 欧美丰满少妇xxxxx高潮对白| 中文字幕亚洲一区二区va在线| 国产一区二区三区| 日韩一区二区三区观看| 午夜亚洲福利老司机| 欧美影院一区二区| 亚洲欧美一区二区三区久本道91| 国产成人高清在线| 国产欧美日韩另类一区| 久久99久久精品欧美| 91精品久久久久久久91蜜桃 | 亚洲色图欧洲色图| 成人理论电影网| 国产精品乱人伦中文| 成人小视频在线观看| 国产性做久久久久久| 国产黄人亚洲片| 久久综合久久鬼色| 国产成人av电影在线播放| 久久久综合网站| 国产成人在线视频播放| 久久久久99精品一区| 国产福利精品导航| 国产精品护士白丝一区av| av资源网一区| 亚洲私人黄色宅男| 日本精品裸体写真集在线观看 | 91亚洲国产成人精品一区二区三| 国产精品私房写真福利视频| 成人美女视频在线看| 亚洲视频一区二区免费在线观看| 成人免费的视频| 亚洲精品一二三| 欧美日韩美女一区二区| 日韩精品亚洲一区二区三区免费| 制服丝袜日韩国产| 久久精品国产999大香线蕉| 久久亚洲精品国产精品紫薇 | 97久久超碰精品国产| 亚洲免费观看高清完整版在线观看 | 在线影视一区二区三区| 亚洲午夜视频在线| 欧美一区二区三区四区在线观看| 极品少妇xxxx精品少妇| 国产欧美视频在线观看| 99久久久无码国产精品| 亚洲综合一区二区精品导航| 91麻豆精品91久久久久同性| 精品中文字幕一区二区小辣椒| 欧美国产一区二区在线观看| av在线一区二区| 日韩综合一区二区| 国产色产综合色产在线视频 |