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

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * vcd.c : VCD input module for vlc
  3.  *****************************************************************************
  4.  * Copyright (C) 2000,2003 VideoLAN
  5.  * $Id: vcd.c 7522 2004-04-27 16:35:15Z sam $
  6.  *
  7.  * Authors: Rocky Bernstein <rocky@panix.com>
  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.  * top-level module code - handles options, shortcuts, loads sub-modules.
  25.  *****************************************************************************/
  26. /*****************************************************************************
  27.  * Preamble
  28.  *****************************************************************************/
  29. #include <vlc/vlc.h>
  30. /*****************************************************************************
  31.  * Exported prototypes
  32.  *****************************************************************************/
  33. int  E_(Open)         ( vlc_object_t * );
  34. void E_(Close)        ( vlc_object_t * );
  35. int  E_(OpenIntf)     ( vlc_object_t * );
  36. void E_(CloseIntf)    ( vlc_object_t * );
  37. int  E_(InitVCD)      ( vlc_object_t * );
  38. void E_(EndVCD)       ( vlc_object_t * );
  39. int  E_(DebugCallback) ( vlc_object_t *p_this, const char *psz_name,
  40.                          vlc_value_t oldval, vlc_value_t val,
  41.                          void *p_data );
  42. /*****************************************************************************
  43.  * Option help text
  44.  *****************************************************************************/
  45. #define DEBUG_LONGTEXT N_( 
  46.     "This integer when viewed in binary is a debugging maskn" 
  47.     "meta info         1n" 
  48.     "event info        2n" 
  49.     "MRL               4n" 
  50.     "external call     8n" 
  51.     "all calls (10)   16n" 
  52.     "LSN       (20)   32n" 
  53.     "PBC       (40)   64n" 
  54.     "libcdio   (80)  128n" 
  55.     "seek-set (100)  256n" 
  56.     "seek-cur (200)  512n" 
  57.     "still    (400) 1024n" 
  58.     "vcdinfo  (800) 2048n" )
  59. #define VCD_TITLE_FMT_LONGTEXT N_( 
  60. "Format used in the GUI Playlist Title. Similar to the Unix date n" 
  61. "Format specifiers that start with a percent sign. Specifiers are: n" 
  62. "   %A : The album informationn" 
  63. "   %C : The VCD volume count - the number of CDs in the collectionn" 
  64. "   %c : The VCD volume num - the number of the CD in the collection.n" 
  65. "   %F : The VCD Format, e.g. VCD 1.0, VCD 1.1, VCD 2.0, or SVCDn" 
  66. "   %I : The current entry/segment/playback type, e.g. ENTRY, TRACK, SEGMENT...n" 
  67. "   %L : The playlist ID prefixed with " LID" if it existsn" 
  68. "   %N : The current number of the %I - a decimal numbern" 
  69. "   %P : The publisher IDn" 
  70. "   %p : The preparer In" 
  71. "   %S : If we are in a segment (menu), the kind of segmentn" 
  72. "   %T : The track numbern" 
  73. "   %V : The volume set In" 
  74. "   %v : The volume In" 
  75. "       A number between 1 and the volume count.n" 
  76. "   %% : a % n")
  77. /*****************************************************************************
  78.  * Module descriptor
  79.  *****************************************************************************/
  80. vlc_module_begin();
  81.     add_usage_hint( N_("vcdx://[device-or-file][@{P,S,T}num]") );
  82.     set_description( _("Video CD (VCD 1.0, 1.1, 2.0, SVCD, HQVCD) input") );
  83.     set_capability( "access", 85 /* slightly higher than vcd */ );
  84.     set_callbacks( E_(Open), E_(Close) );
  85.     add_shortcut( "vcd" );
  86.     add_shortcut( "vcdx" );
  87.     /* Configuration options */
  88.     add_integer ( MODULE_STRING "-debug", 0, E_(DebugCallback),
  89.                   N_("If nonzero, this gives additional debug information."),
  90.                   DEBUG_LONGTEXT, VLC_TRUE );
  91.     add_bool( MODULE_STRING "-PBC", 0, NULL,
  92.               N_("Use playback control?"),
  93.               N_("If VCD is authored with playback control, use it. "
  94.                  "Otherwise we play by tracks."),
  95.               VLC_FALSE );
  96.     add_string( MODULE_STRING "-author-format",
  97.                 "%v - %F disc %c of %C",
  98.                 NULL,
  99.                 N_("Format to use in playlist "author""),
  100.                 VCD_TITLE_FMT_LONGTEXT, VLC_TRUE );
  101.     add_string( MODULE_STRING "-title-format",
  102.                 "%I %N%L%S - %M",
  103.                 NULL,
  104.                 N_("Format to use in playlist "title" field"),
  105.                 VCD_TITLE_FMT_LONGTEXT, VLC_TRUE );
  106. #ifdef FIXED
  107.     add_submodule();
  108.         set_capability( "demux", 0 );
  109.         set_callbacks( E_(InitVCD), E_(EndVCD) );
  110. #endif
  111.     add_submodule();
  112.         set_capability( "interface", 0 );
  113.         set_callbacks( E_(OpenIntf), E_(CloseIntf) );
  114. vlc_module_end();