common.h
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:3k
- /*****************************************************************************
- * common.h : DirectShow access module for vlc
- *****************************************************************************
- * Copyright (C) 2002 VideoLAN
- * $Id: common.h 8694 2004-09-12 18:00:02Z gbazin $
- *
- * Author: Gildas Bazin <gbazin@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
- *****************************************************************************/
- /*****************************************************************************
- * Preamble
- *****************************************************************************/
- #include <string>
- #include <list>
- #include <deque>
- using namespace std;
- #ifndef _MSC_VER
- # include <wtypes.h>
- # include <unknwn.h>
- # include <ole2.h>
- # include <limits.h>
- # define _WINGDI_ 1
- # define AM_NOVTABLE
- # define _OBJBASE_H_
- # undef _X86_
- # define _I64_MAX LONG_LONG_MAX
- # define LONGLONG long long
- #endif
- #include <dshow.h>
- typedef struct dshow_stream_t dshow_stream_t;
- /****************************************************************************
- * Crossbar stuff
- ****************************************************************************/
- #define MAX_CROSSBAR_DEPTH 10
- typedef struct CrossbarRouteRec
- {
- IAMCrossbar *pXbar;
- LONG VideoInputIndex;
- LONG VideoOutputIndex;
- LONG AudioInputIndex;
- LONG AudioOutputIndex;
- } CrossbarRoute;
- void DeleteCrossbarRoutes( access_sys_t * );
- HRESULT FindCrossbarRoutes( vlc_object_t *, access_sys_t *,
- IPin *, LONG, int = 0 );
- /****************************************************************************
- * Access descriptor declaration
- ****************************************************************************/
- struct access_sys_t
- {
- /* These 2 must be left at the beginning */
- vlc_mutex_t lock;
- vlc_cond_t wait;
- IFilterGraph *p_graph;
- ICaptureGraphBuilder2 *p_capture_graph_builder2;
- IMediaControl *p_control;
- int i_crossbar_route_depth;
- CrossbarRoute crossbar_routes[MAX_CROSSBAR_DEPTH];
- /* list of elementary streams */
- dshow_stream_t **pp_streams;
- int i_streams;
- int i_current_stream;
- /* misc properties */
- int i_width;
- int i_height;
- int i_chroma;
- };