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

📄 vfwpback.c

📁 魔兽2Linux版
💻 C
字号:
//==========================================================================////  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY//  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE//  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR//  PURPOSE.////  Copyright (c) 1999 - 2001  On2 Technologies Inc. All Rights Reserved.////--------------------------------------------------------------------------/******************************************************************************   Module Title :     VFWPBack.C**   Description  :     Video CODEC playback module*******************************************************************************//*****************************************************************************  Header Files******************************************************************************/#define STRICT              /* Strict type checking. *///#include "Timer.h"#include "Quantize.h"#include "pbdll.h"#include "BlockMapping.h"/*****************************************************************************  Module constants.******************************************************************************/                        /*****************************************************************************  Exported Global Variables******************************************************************************/  //int LoadAndDecode(PB_INSTANCE *pbi);/*****************************************************************************  Imports ******************************************************************************/  extern void UpdateUMVBorder( PB_INSTANCE *pbi, UINT8 * DestReconPtr );extern void IssueWarning( char * WarningMessage );/*****************************************************************************  Module Static Variables******************************************************************************/  /*****************************************************************************  Forward References******************************************************************************/  /*****************************************************************************  Explicit Imports******************************************************************************//* Last Inter frame DC values *///extern Q_LIST_ENTRY InvLastInterDC;//extern Q_LIST_ENTRY InvLastIntraDC;/**************************************************************************** *  *  ROUTINE       :     LoadAndDecode * *  INPUTS        :     None * *  OUTPUTS       :     None. * *  RETURNS       :     None. * *  FUNCTION      :     Loads and decodes a frame. * *  SPECIAL NOTES :     None.  * * *  ERRORS        :     None. * ****************************************************************************/int LoadAndDecode(PB_INSTANCE *pbi){        UINT32  i;    BOOL    LoadFrameOK;    // Reset the DC predictors.    pbi->InvLastIntraDC = 0;    pbi->InvLastInterDC = 0;    /* Load the next frame. */    LoadFrameOK = LoadFrame(pbi);                 if ( LoadFrameOK )    {        if ( (pbi->ThisFrameQualityValue != pbi->LastFrameQualityValue) )        {            /* Initialise DCT tables. */            UpdateQ( pbi, pbi->ThisFrameQualityValue );              pbi->LastFrameQualityValue = pbi->ThisFrameQualityValue;            }                          /* Decode the data into the fragment buffer. */        DecodeData(pbi);                        }    // If there have been any changes and we want RGB output then convert.    if ( LoadFrameOK )    {           if ( pbi->OutputRGB )        {            if ( !pbi->SkipYUVtoRGB )            {                if ( pbi->FramesHaveBeenSkipped )                {                    // Copy additional fragments for YUV conversion into the display fragments list.                    for ( i = 0; i < pbi->UnitFragments; i++ )                    {                        if ( pbi->skipped_display_fragments[i] )                            pbi->display_fragments[i] = 1;                    }                    // The YUV conversion is now up to date so clear the skipped                     // display fragments list.                    memset( pbi->skipped_display_fragments, 0, pbi->UnitFragments );                    // Clear the skipped flag... we are up to date                    pbi->FramesHaveBeenSkipped = FALSE;                }                            // Update the display bitmap from the YUV411 structure.                 CopyYUVtoBmp(pbi,pbi->LastFrameRecon, pbi->bmp_dptr0, FALSE, TRUE  );            }            else            {                pbi->FramesHaveBeenSkipped = TRUE;                // Note fragments that need YUV conversion at a later date.                for ( i = 0; i < pbi->UnitFragments; i++ )                {                    if ( pbi->display_fragments[i] )                        pbi->skipped_display_fragments[i] = 1;                }            }        }        return 0;    }    // Test this condition. .. ??? is it an error    return -1;    // IssueWarning( "Frame Load Error" );}                          

⌨️ 快捷键说明

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