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

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * access.c
  3.  *****************************************************************************
  4.  * Copyright (C) 1999-2008 the VideoLAN team
  5.  * $Id: b5668c0ddd8d98b9e060a09819226d4f01909a0a $
  6.  *
  7.  * Author: Laurent Aimar <fenrir _AT_ videolan _DOT_ 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. #ifdef HAVE_CONFIG_H
  24. # include "config.h"
  25. #endif
  26. #include "access.h"
  27. #include <libvlc.h>
  28. /*****************************************************************************
  29.  * access_New:
  30.  *****************************************************************************/
  31. access_t *__access_New( vlc_object_t *p_obj, const char *psz_access,
  32.                         const char *psz_demux, const char *psz_path )
  33. {
  34.     access_t *p_access = vlc_custom_create( p_obj, sizeof (*p_access),
  35.                                             VLC_OBJECT_GENERIC, "access" );
  36.     if( p_access == NULL )
  37.         return NULL;
  38.     /* */
  39.     msg_Dbg( p_obj, "creating access '%s' path='%s'",
  40.              psz_access, psz_path );
  41.     p_access->psz_path   = strdup( psz_path );
  42.     p_access->psz_access = strdup( psz_access );
  43.     p_access->psz_demux  = strdup( psz_demux );
  44.     p_access->pf_read    = NULL;
  45.     p_access->pf_block   = NULL;
  46.     p_access->pf_seek    = NULL;
  47.     p_access->pf_control = NULL;
  48.     p_access->p_sys      = NULL;
  49.     access_InitFields( p_access );
  50.     /* Before module_need (for var_Create...) */
  51.     vlc_object_attach( p_access, p_obj );
  52.     p_access->p_module = module_need( p_access, "access", psz_access, true );
  53.     if( p_access->p_module == NULL )
  54.     {
  55.         vlc_object_detach( p_access );
  56.         free( p_access->psz_access );
  57.         free( p_access->psz_path );
  58.         free( p_access->psz_demux );
  59.         vlc_object_release( p_access );
  60.         return NULL;
  61.     }
  62.     return p_access;
  63. }
  64. /*****************************************************************************
  65.  * access_Delete:
  66.  *****************************************************************************/
  67. void access_Delete( access_t *p_access )
  68. {
  69.     module_unneed( p_access, p_access->p_module );
  70.     vlc_object_detach( p_access );
  71.     free( p_access->psz_access );
  72.     free( p_access->psz_path );
  73.     free( p_access->psz_demux );
  74.     vlc_object_release( p_access );
  75. }