common.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:3k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * common.h : DirectShow access module for vlc
  3.  *****************************************************************************
  4.  * Copyright (C) 2002 the VideoLAN team
  5.  * $Id: 6a3f2b5ea22a3c1fb09f567f767a658782e88026 $
  6.  *
  7.  * Author: Gildas Bazin <gbazin@videolan.org>
  8.  *
  9.  * This program 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 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program 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 this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. /*****************************************************************************
  24.  * Preamble
  25.  *****************************************************************************/
  26. #include <string>
  27. #include <list>
  28. #include <deque>
  29. using namespace std;
  30. #ifndef _MSC_VER
  31. #   include <wtypes.h>
  32. #   include <unknwn.h>
  33. #   include <ole2.h>
  34. #   include <limits.h>
  35. #   ifdef _WINGDI_
  36. #      undef _WINGDI_
  37. #   endif
  38. #   define _WINGDI_ 1
  39. #   define AM_NOVTABLE
  40. #   define _OBJBASE_H_
  41. #   undef _X86_
  42. #   ifndef _I64_MAX
  43. #     define _I64_MAX LONG_LONG_MAX
  44. #   endif
  45. #   define LONGLONG long long
  46. #endif
  47. #include <dshow.h>
  48. typedef struct dshow_stream_t dshow_stream_t;
  49. /****************************************************************************
  50.  * Crossbar stuff
  51.  ****************************************************************************/
  52. #define MAX_CROSSBAR_DEPTH 10
  53. typedef struct CrossbarRouteRec
  54. {
  55.     IAMCrossbar *pXbar;
  56.     LONG        VideoInputIndex;
  57.     LONG        VideoOutputIndex;
  58.     LONG        AudioInputIndex;
  59.     LONG        AudioOutputIndex;
  60. } CrossbarRoute;
  61. void DeleteCrossbarRoutes( access_sys_t * );
  62. HRESULT FindCrossbarRoutes( vlc_object_t *, access_sys_t *,
  63.                             IPin *, LONG, int = 0 );
  64. /****************************************************************************
  65.  * Access descriptor declaration
  66.  ****************************************************************************/
  67. struct access_sys_t
  68. {
  69.     /* These 2 must be left at the beginning */
  70.     vlc_mutex_t lock;
  71.     vlc_cond_t  wait;
  72.     IFilterGraph           *p_graph;
  73.     ICaptureGraphBuilder2  *p_capture_graph_builder2;
  74.     IMediaControl          *p_control;
  75.     int                     i_crossbar_route_depth;
  76.     CrossbarRoute           crossbar_routes[MAX_CROSSBAR_DEPTH];
  77.     /* list of elementary streams */
  78.     dshow_stream_t **pp_streams;
  79.     int            i_streams;
  80.     int            i_current_stream;
  81.     /* misc properties */
  82.     int            i_width;
  83.     int            i_height;
  84.     int            i_chroma;
  85.     bool           b_chroma; /* Force a specific chroma on the dshow input */
  86. };