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

📄 haljpeg.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                __bJPEGOperation = HAL_JPEG_OPERATION_FV;
                break;
            case HAL_JPEG_OPERATION_FH:
                __bJPEGOperation = HAL_JPEG_OPERATION_RC;
                break;
            case HAL_JPEG_OPERATION_FV:
                __bJPEGOperation = HAL_JPEG_OPERATION_RCC;
                break;
            default:
                break; //__bJPEGOperation is the same as the previous. 
            }
        }
        break;
    case HAL_JPEG_OPERATION_RCFV:
        {
            switch (bCurrentOperation)
            {
            case HAL_JPEG_OPERATION_RC:
                __bJPEGOperation = HAL_JPEG_OPERATION_FV;
                break;
            case HAL_JPEG_OPERATION_RCC:
                __bJPEGOperation = HAL_JPEG_OPERATION_FH;
                break;
            case HAL_JPEG_OPERATION_FH:
                __bJPEGOperation = HAL_JPEG_OPERATION_RCC;
                break;
            case HAL_JPEG_OPERATION_FV:
                __bJPEGOperation = HAL_JPEG_OPERATION_RC;
                break;
            default:
                break; //__bJPEGOperation is the same as the previous. 
            }
        }
        break;
    default:
        break; //__bJPEGOperation is the same as the previous.
    }    
#endif
}

//***************************************************************************
//  Function    :   HAL_JPEGOperation
//  Abstract    :   Call this function for rotate and flip
//  Arguments   :   
//  Return              :   none.
//  Side Effect :   none.
//  Notes       :   Should call HAL_JPEGTransformOperation before calling this function.
//***************************************************************************
void HAL_JPEGOperation(void)
{
#ifndef NO_PICTURECD

#ifdef SUPPORT_JPEG_3_FRAMES
    HAL_Display(HAL_DISPLAY_VIDEO, FALSE);

    //CoCo2.31, wait the "disable video" action OK before doing JPEG reset.
    __dwCheckTime  = UTL_GetSysTimer();
    while ((UTL_GetSysTimer() - __dwCheckTime ) < COUNT_100_MSEC)    
    {
        W99AV_ReadDRAMData (0xC1, &__dwTemp);
        
        if (HIWORD(__dwTemp) == 0) //The "disable video" action is OK.
            break;
    }
#endif

    _JPEGCalculateScaling(VIEW_ZOOM100);

    _JPEGDecodeCmd(HAL_JPEG_NODECODE, VIEW_ZOOM100);
#endif
}

//***************************************************************************
//  Function    :   _TransformPanAction
//  Abstract    :   This function will transform the action of the pan according to
//              :   current operation.
//  Arguments   :   bAction, the action of pan.
//  Return      :   The action of pan.
//  Side Effect :   none.
//  Notes       :   use __bJPEGOperation to judge which pan action should be transformed.
//***************************************************************************
BYTE _TransformPanAction(BYTE bAction)
{
#ifndef NO_PICTURECD
    switch (__bJPEGOperation)
    {
    case HAL_JPEG_OPERATION_RC:
        {
            switch (bAction)
            {
            case VIEW_ZOOM_LEFT:
                return VIEW_ZOOM_DOWN;
            case VIEW_ZOOM_RIGHT:
                return VIEW_ZOOM_UP;
            case VIEW_ZOOM_UP:
                return VIEW_ZOOM_LEFT;
            case VIEW_ZOOM_DOWN:
                return VIEW_ZOOM_RIGHT;
            default:
                break;
            }
        }
        break;
    case HAL_JPEG_OPERATION_FHFV:
        {
            switch (bAction)
            {
            case VIEW_ZOOM_LEFT:
                return VIEW_ZOOM_RIGHT;
            case VIEW_ZOOM_RIGHT:
                return VIEW_ZOOM_LEFT;
            case VIEW_ZOOM_UP:
                return VIEW_ZOOM_DOWN;
            case VIEW_ZOOM_DOWN:
                return VIEW_ZOOM_UP;
            default:
                break;
            }
        }
        break;
    case HAL_JPEG_OPERATION_RCC:
        {
            switch (bAction)
            {
            case VIEW_ZOOM_LEFT:
                return VIEW_ZOOM_UP;
            case VIEW_ZOOM_RIGHT:
                return VIEW_ZOOM_DOWN;
            case VIEW_ZOOM_UP:
                return VIEW_ZOOM_RIGHT;
            case VIEW_ZOOM_DOWN:
                return VIEW_ZOOM_LEFT;
            default:
                break;
            }
        }
        break;
    case HAL_JPEG_OPERATION_RCFH:
        {
            switch (bAction)
            {
            case VIEW_ZOOM_LEFT:
                return VIEW_ZOOM_UP;
            case VIEW_ZOOM_RIGHT:
                return VIEW_ZOOM_DOWN;
            case VIEW_ZOOM_UP:
                return VIEW_ZOOM_LEFT;
            case VIEW_ZOOM_DOWN:
                return VIEW_ZOOM_RIGHT;
            default:
                break;
            }
        }
        break;
    case HAL_JPEG_OPERATION_FH:
        {
            switch (bAction)
            {
            case VIEW_ZOOM_LEFT:
                return VIEW_ZOOM_RIGHT;
            case VIEW_ZOOM_RIGHT:
                return VIEW_ZOOM_LEFT;
            default:
                break;
            }
        }
        break;
    case HAL_JPEG_OPERATION_FV:
        {
            switch (bAction)
            {
            case VIEW_ZOOM_UP:
                return VIEW_ZOOM_DOWN;
            case VIEW_ZOOM_DOWN:
                return VIEW_ZOOM_UP;
            default:
                break;
            }
        }
        break;
    case HAL_JPEG_OPERATION_RCFV:
        {
            switch (bAction)
            {
            case VIEW_ZOOM_LEFT:
                return VIEW_ZOOM_DOWN;
            case VIEW_ZOOM_RIGHT:
                return VIEW_ZOOM_UP;
            case VIEW_ZOOM_UP:
                return VIEW_ZOOM_RIGHT;
            case VIEW_ZOOM_DOWN:
                return VIEW_ZOOM_LEFT;
            default:
                break;
            }
        }
        break;
    default:
        break;
    }
    
#endif
    return bAction;
}

//***************************************************************************
//  Function    :   _DoZoomPanDecode
//  Abstract    :   
//  Arguments   :   none.
//  Return      :   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _DoZoomPanDecode(void)
{
#ifndef NO_PICTURECD
    _JPEGDecodeCmd(HAL_JPEG_NODECODE, __bZoomFactor);
    __dwCheckTime=UTL_GetSysTimer();
    while((UTL_GetSysTimer()-__dwCheckTime) < COUNT_1_SEC)
    {
        if (HAL_QueryStatus(HAL_JPEG_DECODE_STATUS) == HAL_QUERY_RESULT_OK)
        {
            //HAL_Display(HAL_DISPLAY_JPEG, HAL_JPEG_DECODE);				
            _JPEGDisplay(HAL_JPEG_NODECODE);
#ifndef SUPPORT_JPEG_3_FRAMES
            __btActiveFrame = !__btActiveFrame;
#endif
            break;
        }
    }
    
#endif
}

//***************************************************************************
//  Function    :   HAL_JPEGCanDoEffect
//  Abstract    :   This function will judge current picture can do effect or not.
//  Arguments   :   
//  Return      :   TRUE==>Can do effect. FALSE==>Can't do effect.
//  Side Effect :   none.
//  Notes       :  
//***************************************************************************
BYTE HAL_JPEGCanDoEffect(void)
{
#ifndef NO_PICTURECD

    _JPEGGetFitWidthOrHeight();

    if (_bJPEGfit == HAL_JPEG_DISPLAY_FIT_WIDTH)    
    {
        if (_wJPEGRealWidth < __wWidth)
        {
            return FALSE;
        }
    }
    else if (_bJPEGfit == HAL_JPEG_DISPLAY_FIT_HEIGHT) 
    {
        if (_wJPEGRealHeight < __wHeight)
        {
            return FALSE;
        }
    }

    return TRUE;
    
#endif
}

//CoCo.newJPEG
//***************************************************************************
//  Function    :   _JPEGFirstScaling
//  Abstract    :   Do the first scaling to tell RISC scaling 3 frame buffer(big original buffer)
//              :   to one frame buffer. (720x480) This function will save the result to 
//              :   W99AV_DRAM_JPEG_SIZE for RISC before decoding.
//  Arguments   :   none.
//  Return      :   none.
//  Side Effect :   none.
//  Notes       :   Modify _wJPEGRealWidth and _wJPEGRealHeight.
//***************************************************************************
void _JPEGFirstScaling(void)
{
#ifndef NO_PICTURECD
    
    //CT908 can get the real size of JPEG after parsing header.
    _JPEGRealSize();        

#ifdef SUPPORT_JPEG_KEEP_1X1_RATIO
    if (__bDVDROM)
    {
        __wHALJPEGFirstScalingWidth = HAL_DISPLAY_DVD_JPEG_FIRST_SCALING_WIDTH;
        __wHALJPEGFirstScalingHeight = HAL_DISPLAY_DVD_JPEG_FIRST_SCALING_HEIGHT;
    }
    else
    {
        __wHALJPEGFirstScalingWidth = HAL_DISPLAY_CD_JPEG_FIRST_SCALING_WIDTH;
        __wHALJPEGFirstScalingHeight = HAL_DISPLAY_CD_JPEG_FIRST_SCALING_HEIGHT;
    }
#else
    __wHALJPEGFirstScalingWidth = __wHALJPEGDisplayBufWidth;
    __wHALJPEGFirstScalingHeight = __wHALJPEGDisplayBufHeight;
#endif


    // if (_wJPEGRealWidth/_wJPEGRealHeight < DisplayWidth/DisplayHeight)==>fit height
    //fit height
    if ((DWORD)((DWORD)_wJPEGRealWidth * (DWORD)__wHALJPEGFirstScalingHeight) <
        (DWORD)((DWORD)_wJPEGRealHeight * (DWORD)__wHALJPEGFirstScalingWidth))
    {
        //fit height
        if (_wJPEGRealHeight > __wHALJPEGFirstScalingHeight)
        {
            //Can't exchange the sequence of calculating the width and height
            //Real width must be 8's multiple.
            _wJPEGRealWidth = (WORD)((DWORD)_wJPEGRealWidth * (DWORD)__wHALJPEGFirstScalingHeight / (DWORD)_wJPEGRealHeight);
            _ForceTo8Multiple(&_wJPEGRealWidth);
            _wJPEGRealHeight =  __wHALJPEGFirstScalingHeight;
        }
    }
    else //fit width
    {
        if (_wJPEGRealWidth > __wHALJPEGFirstScalingWidth)
        {
            //Can't exchange the sequence of calculating the width and height
            //Real height must be 2's multiple.
            _wJPEGRealHeight = (WORD)((DWORD)_wJPEGRealHeight * (DWORD)__wHALJPEGFirstScalingWidth / (DWORD)_wJPEGRealWidth);
            /*
            if (_wJPEGRealHeight % 2)
                _wJPEGRealHeight -= 1;
     

⌨️ 快捷键说明

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