common.h
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:3k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * common.h : DirectShow access module for vlc
  3.  *****************************************************************************
  4.  * Copyright (C) 2002 VideoLAN
  5.  * $Id: common.h 8694 2004-09-12 18:00:02Z gbazin $
  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., 59 Temple Place - Suite 330, Boston, MA  02111, 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. #   define _WINGDI_ 1
  36. #   define AM_NOVTABLE
  37. #   define _OBJBASE_H_
  38. #   undef _X86_
  39. #   define _I64_MAX LONG_LONG_MAX
  40. #   define LONGLONG long long
  41. #endif
  42. #include <dshow.h>
  43. typedef struct dshow_stream_t dshow_stream_t;
  44. /****************************************************************************
  45.  * Crossbar stuff
  46.  ****************************************************************************/
  47. #define MAX_CROSSBAR_DEPTH 10
  48. typedef struct CrossbarRouteRec
  49. {
  50.     IAMCrossbar *pXbar;
  51.     LONG        VideoInputIndex;
  52.     LONG        VideoOutputIndex;
  53.     LONG        AudioInputIndex;
  54.     LONG        AudioOutputIndex;
  55. } CrossbarRoute;
  56. void DeleteCrossbarRoutes( access_sys_t * );
  57. HRESULT FindCrossbarRoutes( vlc_object_t *, access_sys_t *,
  58.                             IPin *, LONG, int = 0 );
  59. /****************************************************************************
  60.  * Access descriptor declaration
  61.  ****************************************************************************/
  62. struct access_sys_t
  63. {
  64.     /* These 2 must be left at the beginning */
  65.     vlc_mutex_t lock;
  66.     vlc_cond_t  wait;
  67.     IFilterGraph           *p_graph;
  68.     ICaptureGraphBuilder2  *p_capture_graph_builder2;
  69.     IMediaControl          *p_control;
  70.     int                     i_crossbar_route_depth;
  71.     CrossbarRoute           crossbar_routes[MAX_CROSSBAR_DEPTH];
  72.     /* list of elementary streams */
  73.     dshow_stream_t **pp_streams;
  74.     int            i_streams;
  75.     int            i_current_stream;
  76.     /* misc properties */
  77.     int            i_width;
  78.     int            i_height;
  79.     int            i_chroma;
  80. };