📄 haljpeg.~c
字号:
} else //fit width { _bHALJPEGFit = HALJPEG_DISPLAY_FIT_WIDTH; } }}//***************************************************************************// Function : _HALJPEG_ResetClipRegionToFullBuf// Abstract : Call this function to clip full region// Arguments : none.// Return : none.// Side Effect : none.// Notes : none.//***************************************************************************void _HALJPEG_ResetClipRegionToFullBuf(void){ _wHALJPEGClipHStart = 0; _wHALJPEGClipVStart = 0; _wHALJPEGClipWidth = HALJPEG_DISPLAY_BUF_WIDTH; _wHALJPEGClipHeight = HALJPEG_DISPLAY_BUF_HEIGHT;}//***************************************************************************// Function : _HALJPEG_CalculateScaling// Abstract : Calculate the scaling according to the zoom mode.// Arguments : bZoomMode ==> The paramter of zoom mode.// Return : none.// Side Effect : none.// Notes ://***************************************************************************void _HALJPEG_CalculateScaling(BYTE bZoomMode){ _bHALJPEGScalingAll = TRUE; //Extract all image from FOrg. _HALJPEG_GetFitWidthOrHeight(); //To get the rotating status. Rotating 90 degree==>TRUE. Else==>FALSE. _bHALJPEGTemp = _HALJPEG_GetRotateStatus(); //Calculate the scaling rate that we have to use the clip command if (_bHALJPEGTemp) //rotate { if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width _wHALJPEGScalingRate = (WORD)((DWORD)_wHALJPEGRealHeight * 1000L / (DWORD)__HALJPEGSetting.wDisplayWidth); else //fit height _wHALJPEGScalingRate = (WORD)((DWORD)_wHALJPEGRealWidth * 1000L / (DWORD)__HALJPEGSetting.wDisplayHeight); } else { if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width _wHALJPEGScalingRate = (WORD)((DWORD)_wHALJPEGRealWidth*1000L/(DWORD)__HALJPEGSetting.wDisplayWidth); else //fit height _wHALJPEGScalingRate = (WORD)((DWORD)_wHALJPEGRealHeight*1000L/(DWORD)__HALJPEGSetting.wDisplayHeight); } _wHALJPEGExtractWidth = _wHALJPEGRealWidth; //Extract the width in the original buffer. _wHALJPEGExtractHeight = _wHALJPEGRealHeight; //Extract the Height in the original buffer. //Reset the clip region _HALJPEG_ResetClipRegionToFullBuf(); switch (bZoomMode) { case VIEW_ZOOM25: _bHALJPEGTemp1 = 4; _bHALJPEGZoomRate = 25; break; case VIEW_ZOOM50: _bHALJPEGTemp1 = 2; _bHALJPEGZoomRate = 50; break; case VIEW_ZOOM100: _bHALJPEGTemp1 = 1; _bHALJPEGZoomRate = 100; break; case VIEW_ZOOM150: _bHALJPEGZoomRate = 150; break; case VIEW_ZOOM200: _bHALJPEGZoomRate = 200; break; default: break; } if (bZoomMode <= VIEW_ZOOM100) { if (_bHALJPEGTemp) //rotate { if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width _wHALJPEGScalingHeight = __HALJPEGSetting.wDisplayWidth / _bHALJPEGTemp1; else _wHALJPEGScalingWidth = __HALJPEGSetting.wDisplayHeight / _bHALJPEGTemp1; } else { if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width _wHALJPEGScalingWidth = __HALJPEGSetting.wDisplayWidth / _bHALJPEGTemp1; else _wHALJPEGScalingHeight = __HALJPEGSetting.wDisplayHeight / _bHALJPEGTemp1; } } else { //Need to re-decode when zoom in mode. if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width { if (_bHALJPEGTemp) //rotate _wHALJPEGScalingHeight = HALJPEG_DISPLAY_BUF_WIDTH; else _wHALJPEGScalingWidth = HALJPEG_DISPLAY_BUF_WIDTH; } else //fit height { if (_bHALJPEGTemp) //rotate _wHALJPEGScalingWidth = HALJPEG_DISPLAY_BUF_HEIGHT; else _wHALJPEGScalingHeight = HALJPEG_DISPLAY_BUF_HEIGHT; } } //CoCo, Does CT909 JPEG Decoder need this? _HALJPEG_ForceTo8Multiple(&_wHALJPEGScalingWidth); _HALJPEG_ForceTo8Multiple(&_wHALJPEGScalingHeight); if (_bHALJPEGTemp) //Rotate 90 { if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width { _wHALJPEGScalingWidth = (WORD)((DWORD)_wHALJPEGScalingHeight * (DWORD)_wHALJPEGRealWidth / (DWORD)_wHALJPEGRealHeight); _HALJPEG_ProtectBufHeight(&_wHALJPEGScalingWidth); } else //fit height { _wHALJPEGScalingHeight = (WORD)((DWORD)_wHALJPEGScalingWidth * (DWORD)_wHALJPEGRealHeight / (DWORD)_wHALJPEGRealWidth); _HALJPEG_ProtectBufWidth(&_wHALJPEGScalingHeight); } } else { if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width { _wHALJPEGScalingHeight = (WORD)((DWORD)_wHALJPEGScalingWidth * (DWORD)_wHALJPEGRealHeight / (DWORD)_wHALJPEGRealWidth); _HALJPEG_ProtectBufHeight(&_wHALJPEGScalingHeight); } else //fit height { _wHALJPEGScalingWidth = (WORD)((DWORD)_wHALJPEGScalingHeight * (DWORD)_wHALJPEGRealWidth / (DWORD)_wHALJPEGRealHeight); _HALJPEG_ProtectBufWidth(&_wHALJPEGScalingWidth); } } //CoCo, Does CT909 JPEG Decoder need this? _HALJPEG_ForceTo8Multiple(&_wHALJPEGScalingWidth); _HALJPEG_ForceTo8Multiple(&_wHALJPEGScalingHeight); _wHALJPEGExtractHStart = 0; //Extract the image from the starting position of the FOrg. _wHALJPEGExtractVStart = 0; //Extract the image from the starting position of the FOrg. if (bZoomMode > VIEW_ZOOM100) { //Calculate the width and height of the clip region. //if (_wHALJPEGScalingRate < (WORD)_bHALJPEGZoomRate*10) { //First, extract image by decode command. Second, clip it to fit the zoom rate. if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width { if (_bHALJPEGTemp) //Rotate 90 _wHALJPEGClipWidth = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_WIDTH*(DWORD)HALJPEG_DISPLAY_BUF_WIDTH*100L/(DWORD)__HALJPEGSetting.wDisplayWidth/(DWORD)_bHALJPEGZoomRate); else _wHALJPEGClipWidth = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_WIDTH*(DWORD)HALJPEG_DISPLAY_BUF_WIDTH*100L/(DWORD)__HALJPEGSetting.wDisplayWidth/(DWORD)_bHALJPEGZoomRate); _wHALJPEGClipHeight = (WORD)((DWORD)_wHALJPEGClipWidth * (DWORD)HALJPEG_DISPLAY_BUF_HEIGHT / (DWORD)HALJPEG_DISPLAY_BUF_WIDTH); } else { if (_bHALJPEGTemp) //Rotate 90 _wHALJPEGClipHeight = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_HEIGHT*(DWORD)HALJPEG_DISPLAY_BUF_HEIGHT*100L/(DWORD)__HALJPEGSetting.wDisplayHeight/(DWORD)_bHALJPEGZoomRate); else _wHALJPEGClipHeight = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_HEIGHT*(DWORD)HALJPEG_DISPLAY_BUF_HEIGHT*100L/(DWORD)__HALJPEGSetting.wDisplayHeight/(DWORD)_bHALJPEGZoomRate); _wHALJPEGClipWidth = (WORD)((DWORD)_wHALJPEGClipHeight * (DWORD)HALJPEG_DISPLAY_BUF_WIDTH / (DWORD)HALJPEG_DISPLAY_BUF_HEIGHT); } _wHALJPEGClipHStart = (HALJPEG_DISPLAY_BUF_WIDTH - _wHALJPEGClipWidth) >> 1; _wHALJPEGClipVStart = (HALJPEG_DISPLAY_BUF_HEIGHT - _wHALJPEGClipHeight) >> 1; } /* else { _bHALJPEGScalingAll = FALSE; //Calculate the width and height of the picture that we want to extract from FOrg. if (_bHALJPEGTemp) //Rotate 90 { if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width { if (((DWORD)__HALJPEGSetting.wDisplayWidth*(DWORD)_wHALJPEGRealWidth*(DWORD)_bHALJPEGZoomRate/100L/(DWORD)_wHALJPEGRealHeight) > (DWORD)HALJPEG_DISPLAY_BUF_HEIGHT) { //fill the whole screen to prevent the black region _wHALJPEGScalingWidth = HALJPEG_DISPLAY_BUF_HEIGHT; _wHALJPEGExtractWidth = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_HEIGHT*(DWORD)_wHALJPEGRealHeight/(DWORD)__HALJPEGSetting.wDisplayWidth*100L/(DWORD)_bHALJPEGZoomRate); } else _wHALJPEGScalingWidth = (WORD)((DWORD)__HALJPEGSetting.wDisplayWidth*(DWORD)_wHALJPEGRealWidth / (DWORD)_wHALJPEGRealHeight*(DWORD)_bHALJPEGZoomRate/100L); _wHALJPEGExtractHeight = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_WIDTH*(DWORD)_wHALJPEGRealHeight*100L/(DWORD)__HALJPEGSetting.wDisplayWidth/(DWORD)_bHALJPEGZoomRate); } else //fit height { if (((DWORD)__HALJPEGSetting.wDisplayHeight*(DWORD)_wHALJPEGRealHeight*(DWORD)_bHALJPEGZoomRate/100L/(DWORD)_wHALJPEGRealWidth) > (DWORD)HALJPEG_DISPLAY_BUF_WIDTH) { //fill the whole screen to prevent the black region _wHALJPEGExtractHeight = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_WIDTH*(DWORD)_wHALJPEGRealWidth*100L/(DWORD)__HALJPEGSetting.wDisplayHeight/(DWORD)_bHALJPEGZoomRate); _wHALJPEGScalingHeight = HALJPEG_DISPLAY_BUF_WIDTH; } else _wHALJPEGScalingHeight = (WORD)((DWORD)__HALJPEGSetting.wDisplayHeight*(DWORD)_wHALJPEGRealHeight/(DWORD)_wHALJPEGRealWidth*(DWORD)_bHALJPEGZoomRate/100L); _wHALJPEGExtractWidth = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_HEIGHT*(DWORD)_wHALJPEGRealWidth*100L/(DWORD)__HALJPEGSetting.wDisplayHeight/(DWORD)_bHALJPEGZoomRate); } } else { if (_bHALJPEGFit == HALJPEG_DISPLAY_FIT_WIDTH) // fit width { _wHALJPEGExtractWidth = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_WIDTH*(DWORD)_wHALJPEGRealWidth*100L/(DWORD)__HALJPEGSetting.wDisplayWidth/(DWORD)_bHALJPEGZoomRate); if (((DWORD)__HALJPEGSetting.wDisplayWidth*(DWORD)_wHALJPEGRealHeight*(DWORD)_bHALJPEGZoomRate/100L/(DWORD)_wHALJPEGRealWidth) > (DWORD)HALJPEG_DISPLAY_BUF_HEIGHT) { //fill the whole screen to prevent the black region _wHALJPEGExtractHeight = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_HEIGHT*(DWORD)_wHALJPEGRealWidth*100L/(DWORD)__HALJPEGSetting.wDisplayWidth/(DWORD)_bHALJPEGZoomRate); _wHALJPEGScalingHeight = HALJPEG_DISPLAY_BUF_HEIGHT; } else _wHALJPEGScalingHeight = (WORD)((DWORD)__HALJPEGSetting.wDisplayWidth*(DWORD)_wHALJPEGRealHeight/(DWORD)_wHALJPEGRealWidth*(DWORD)_bHALJPEGZoomRate/100L); } else //fit height { if (((DWORD)__HALJPEGSetting.wDisplayHeight*(DWORD)_wHALJPEGRealWidth*(DWORD)_bHALJPEGZoomRate/100L/(DWORD)_wHALJPEGRealHeight) > (DWORD)HALJPEG_DISPLAY_BUF_WIDTH) { //fill the whole screen to prevent the black region _wHALJPEGExtractWidth = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_WIDTH*(DWORD)_wHALJPEGRealHeight*100L/(DWORD)__HALJPEGSetting.wDisplayHeight/(DWORD)_bHALJPEGZoomRate); _wHALJPEGScalingWidth = HALJPEG_DISPLAY_BUF_WIDTH; } else _wHALJPEGScalingWidth = (WORD)((DWORD)__HALJPEGSetting.wDisplayHeight*(DWORD)_wHALJPEGRealWidth/(DWORD)_wHALJPEGRealHeight*(DWORD)_bHALJPEGZoomRate/100L); _wHALJPEGExtractHeight = (WORD)((DWORD)HALJPEG_DISPLAY_BUF_HEIGHT*(DWORD)_wHALJPEGRealHeight*100L/(DWORD)__HALJPEGSetting.wDisplayHeight/(DWORD)_bHALJPEGZoomRate); } } //CoCo, Does CT909 need it? _HALJPEG_ForceTo8Multiple(&_wHALJPEGExtractWidth); _HALJPEG_ForceTo8Multiple(&_wHALJPEGExtractHeight); _HALJPEG_ForceTo8Multiple(&_wHALJPEGScalingWidth); _HALJPEG_ForceTo8Multiple(&_wHALJPEGScalingHeight); //Set the starting position to extract the image from FOrg. _wHALJPEGExtractHStart = (_wHALJPEGRealWidth - _wHALJPEGExtractWidth) >> 1; _wHALJPEGExtractVStart = (_wHALJPEGRealHeight - _wHALJPEGExtractHeight) >> 1; //CoCo, Does CT909 need it? _HALJPEG_ForceTo8Multiple(&_wHALJPEGExtractHStart); _HALJPEG_ForceTo8Multiple(&_wHALJPEGExtractVStart); } */ }#ifndef CT950_STYLE _HALJPEG_TuneForTVAttribute();#elif (DRAM_CONFIGURATION_TYPE == DRAM_SIZE_16) _HALJPEG_TuneForTVAttribute();#endif //#ifndef CT950_STYLE if (_wHALJPEGScalingWidth < HALJPEG_DISPLAY_BUF_WIDTH) { if ((HALJPEG_DISPLAY_BUF_WIDTH-_wHALJPEGScalingWidth) <= HALJPEG_ENLARGE_WIDTH_PIXELS) { _wHALJPEGScalingWidth = HALJPEG_DISPLAY_BUF_WIDTH; } } if (_wHALJPEGScalingHeight < HALJPEG_DISPLAY_BUF_HEIGHT) { if ((HALJPEG_DISPLAY_BUF_HEIGHT-_wHALJPEGScalingHeight) <= HALJPEG_ENLARGE_HEIGHT_PIXELS) { _wHALJPEGScalingHeight = HALJPEG_DISPLAY_BUF_HEIGHT; } }}//***************************************************************************// Function : _HALJPEG_FirstScaling// Abstract : Do the first scaling to tell RISC scaling 3 frame buffer(big original buffer)// : to one frame buffer. (720x480)// Arguments : none.// Return : none.// Side Effect : none.// Notes : Modify _wHALJPEGRealWidth and _wHALJPEGRealHeight.//***************************************************************************void _HALJPEG_FirstScaling(void){ //fit height if ((DWORD)((DWORD)_wHALJPEGRealWidth * (DWORD)HALJPEG_FIRST_SCALING_HEIGHT) < (DWORD)((DWORD)_wHALJPEGRealHeight * (DWORD)HALJPEG_FIRST_SCALING_WIDTH)) { if (_wHALJPEGRealHeight > HALJPEG_FIRST_SCALING_HEIGHT) { //fit height //Can't exchange the sequence of calculating the width and height //Real width must be 8's multiple. _wHALJPEGRealWidth = (WORD)((DWORD)_wHALJPEGRealWidth * (DWORD)HALJPEG_FIRST_SCALING_HEIGHT / (DWORD)_wHALJPEGRealHeight); _HALJPEG_ForceTo8Multiple(&_wHALJPEGRealWidth); _wHALJPEGRealHeight = HALJPEG_FIRST_SCALING_HEIGHT; } } else //fit width { if (_wHALJPEGRealWidth > HALJPEG_FIRST_SCALING_WIDTH) { //Can't exchange the sequence of calculating the width and height //Real height must be 2's multiple. _wHALJPEGRealHeight = (WORD)((DWORD)_wHALJPEGRealHeight * (DWORD)HALJPEG_FIRST_SCALING_WIDTH / (DWORD)_wHALJPEGRealWidth); _HALJPEG_ForceTo8Multiple(&_wHALJPEGRealHeight); _wHALJPEGRealWidth = HALJPEG_FIRST_SCALING_WIDTH; } }}//***************************************************************************// Function : _HALJPEG_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 __HALJPEGSetting.bOperation to judge which pan action should be transformed.//***************************************************************************BYTE _HALJPEG_TransformPanAction(BYTE bAction){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -