home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2004 March / PCWELT_3_2004.ISO / pcwsoft / flaskmpeg_078_39_src.z.exe / flaskmpeg / Video / idctapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-10-28  |  2.8 KB  |  64 lines

  1. /* 
  2.  *  IDCT API - provides custom iDCT libraries for FlasKMPEG MPEG decoder.
  3.  *
  4.  *    Copyright (C) Alberto Vigata - December 2000  ultraflask@yahoo.com
  5.  *                 
  6.  *
  7.  *  This file is part of FlasKMPEG, a free MPEG to MPEG/AVI converter
  8.  *    
  9.  *  FlasKMPEG is free software; you can redistribute it and/or modify
  10.  *  it under the terms of the GNU General Public License as published by
  11.  *  the Free Software Foundation; either version 2, or (at your option)
  12.  *  any later version.
  13.  *   
  14.  *  FlasKMPEG is distributed in the hope that it will be useful,
  15.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  *  GNU General Public License for more details.
  18.  *   
  19.  *  You should have received a copy of the GNU General Public License
  20.  *  along with GNU Make; see the file COPYING.  If not, write to
  21.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  22.  *
  23.  */
  24.  
  25.  
  26. #define    FMPEG_IDCT_VERSION        0x00000100
  27. #define    FMPEG_IDCT_OK                  0x00000004
  28. #define    FMPEG_IDCT_ERROR            0x00000005
  29.  
  30. // Flags definition
  31. #define SUPPORTS_MMX          0x00000001  // Use this flags to indicate
  32. #define SUPPORTS_MMX_EXT      0x00000002
  33. #define SUPPORTS_SSE          0x00000004  // that the iDCT needs the
  34. #define SUPPORTS_SSE2         0x00000008  // technology to work
  35. #define SUPPORTS_3DNOW        0x00000010
  36. #define SUPPORTS_3DNOW_EXT    0x00000020
  37.  
  38. #define PROCESSOR_SUPPORT_MASK 0x0000003F // Mask that indicates what bits indicate
  39.                                           // the required technology
  40.  
  41. #define IEEE1180_COMPLIANT    0x00000040  // iDCT passes IEEE1180 test
  42. #define FLOATING_POINT        0x00000080  // iDCT uses floating point calculations
  43. #define INTEGER               0x00000100  // iDCT uses integer calculations
  44.  
  45. typedef    struct {
  46.     DWORD    dwSize;                        // Size of this structure
  47.   DWORD dwVersion;          // Must be FMPEG_IDCT_VERSION
  48.     char    sName[32];          // Name of the iDCT
  49.   char  sDescription[256];  // Description of the iDCT
  50.   void (*InitIdct)(void);    // Permorm initializations. Can be NULL.
  51.   void (*Idct)(short *block); // Perform iDCT
  52.   void (*DeInitIdct)(void);  // Clear up initializations. Can be NULL.
  53.   DWORD dwFlags;            // Flags to indicate additional features of the iDCT
  54. } FMpegIdctInfo,*LPFMpegIdctInfo;
  55.  
  56.  
  57. typedef    struct {
  58.     int    (*GetIdctCount)();   // Return number of iDCTs implemented in this module
  59.   void   (*GetIdct)(int idx, LPFMpegIdctInfo IdctInfo); // Get iDCT with index idx
  60. } FMpegIdct_PluginFunc,*LPFMpegIdct_PluginFunc;
  61.  
  62. // The library must export this function
  63. // void _stdcall fmGetPluginFunc( LPFMpegIdct_PluginFunc lpPluginFunc );
  64. typedef void (*fmGetPluginFuncPtr)(LPFMpegIdct_PluginFunc lpPluginFunc);