Subversion Repositories Games.Descent

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.     SMPEG - SDL MPEG Player Library
  3.     Copyright (C) 1999  Loki Entertainment Software
  4.  
  5.     This library is free software; you can redistribute it and/or
  6.     modify it under the terms of the GNU Library General Public
  7.     License as published by the Free Software Foundation; either
  8.     version 2 of the License, or (at your option) any later version.
  9.  
  10.     This library is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.     Library General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU Library General Public
  16.     License along with this library; if not, write to the Free
  17.     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. */
  19.  
  20. /* MPEG filters */
  21.  
  22. #ifndef _MPEGFILTER_H_
  23. #define _MPEGFILTER_H_
  24.  
  25. /* SMPEG filter info flags */
  26. #define SMPEG_FILTER_INFO_MB_ERROR    1
  27. #define SMPEG_FILTER_INFO_PIXEL_ERROR 2
  28.  
  29. /* Filter info from SMPEG */
  30. typedef struct SMPEG_FilterInfo {
  31.   Uint16* yuv_mb_square_error;
  32.   Uint16* yuv_pixel_square_error;
  33. } SMPEG_FilterInfo;
  34.  
  35. /* MPEG filter definition */
  36. struct SMPEG_Filter;
  37.  
  38. /* Callback functions for the filter */
  39. typedef void (* SMPEG_FilterCallback)( SDL_Overlay * dest, SDL_Overlay * source, SDL_Rect * region, SMPEG_FilterInfo * filter_info, void * data );
  40. typedef void (* SMPEG_FilterDestroy)( struct SMPEG_Filter * filter );
  41.  
  42. /* The filter definition itself */
  43. typedef struct SMPEG_Filter {
  44.   Uint32 flags;
  45.   void * data;
  46.   SMPEG_FilterCallback callback;
  47.   SMPEG_FilterDestroy destroy;
  48. } SMPEG_Filter;
  49.  
  50. /* SMPEG built-in filters. */
  51. #ifdef __cplusplus
  52. extern "C" {
  53. #endif
  54.  
  55. /* The null filter (default). It simply copies the source rectangle to the video overlay. */
  56. extern DECLSPEC SMPEG_Filter * SMPEGfilter_null(void);
  57.  
  58. /* The bilinear filter. A basic low-pass filter that will produce a smoother image. */
  59. extern DECLSPEC SMPEG_Filter * SMPEGfilter_bilinear(void);
  60.  
  61. /* The deblocking filter. It filters block borders and non-intra coded blocks to reduce blockiness */
  62. extern DECLSPEC SMPEG_Filter * SMPEGfilter_deblocking(void);
  63.  
  64. #ifdef __cplusplus
  65. };
  66. #endif
  67. #endif /* _MPEGFILTER_H_ */
  68.