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

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * vcd.c : VCD input module for vlc
  3.  *****************************************************************************
  4.  * Copyright (C) 2000, 2003, 2004, 2005 the VideoLAN team
  5.  * $Id: 9e632344d7f534723e9da0e83a4bc3eb5acd89cd $
  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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. /*****************************************************************************
  24.  * top-level module code - handles options, shortcuts, loads sub-modules.
  25.  *****************************************************************************/
  26. /*****************************************************************************
  27.  * Preamble
  28.  *****************************************************************************/
  29. #ifdef HAVE_CONFIG_H
  30. # include "config.h"
  31. #endif
  32. #include <vlc_common.h>
  33. #include <vlc_plugin.h>
  34. #include <vlc_charset.h>
  35. /*****************************************************************************
  36.  * Exported prototypes
  37.  *****************************************************************************/
  38. int  VCDOpen       ( vlc_object_t * );
  39. void VCDClose      ( vlc_object_t * );
  40. int  VCDOpenIntf   ( vlc_object_t * );
  41. void VCDCloseIntf  ( vlc_object_t * );
  42. int  VCDInit   ( vlc_object_t * );
  43. void VCDEnd    ( vlc_object_t * );
  44. int  DebugCallback ( vlc_object_t *p_this, const char *psz_name,
  45.                          vlc_value_t oldval, vlc_value_t val,
  46.                          void *p_data );
  47. int  BlocksPerReadCallback ( vlc_object_t *p_this, const char *psz_name,
  48.                  vlc_value_t oldval, vlc_value_t val,
  49.                  void *p_data );
  50. /*****************************************************************************
  51.  * Option help text
  52.  *****************************************************************************/
  53. #define DEBUG_LONGTEXT 
  54.     "This integer when viewed in binary is a debugging maskn" 
  55.     "meta info         1n" 
  56.     "event info        2n" 
  57.     "MRL               4n" 
  58.     "external call     8n" 
  59.     "all calls (10)   16n" 
  60.     "LSN       (20)   32n" 
  61.     "PBC       (40)   64n" 
  62.     "libcdio   (80)  128n" 
  63.     "seek-set (100)  256n" 
  64.     "seek-cur (200)  512n" 
  65.     "still    (400) 1024n" 
  66.     "vcdinfo  (800) 2048n"
  67. #define VCD_TITLE_FMT_LONGTEXT 
  68. "Format used in the GUI Playlist Title. Similar to the Unix date n" 
  69. "Format specifiers that start with a percent sign. Specifiers are: n" 
  70. "   %A : The album informationn" 
  71. "   %C : The VCD volume count - the number of CDs in the collectionn" 
  72. "   %c : The VCD volume num - the number of the CD in the collection.n" 
  73. "   %F : The VCD Format, e.g. VCD 1.0, VCD 1.1, VCD 2.0, or SVCDn" 
  74. "   %I : The current entry/segment/playback type, e.g. ENTRY, TRACK, SEGMENT...n" 
  75. "   %L : The playlist ID prefixed with " LID" if it existsn" 
  76. "   %N : The current number of the %I - a decimal numbern" 
  77. "   %P : The publisher IDn" 
  78. "   %p : The preparer IDn" 
  79. "   %S : If we are in a segment (menu), the kind of segmentn" 
  80. "   %T : The MPEG track number (starts at 1)n" 
  81. "   %V : The volume set IDn" 
  82. "   %v : The volume IDn" 
  83. "       A number between 1 and the volume count.n" 
  84. "   %% : a % n"
  85. /*****************************************************************************
  86.  * Module descriptor
  87.  *****************************************************************************/
  88. vlc_module_begin ()
  89.     set_shortname( N_("(Super) Video CD"))
  90.     set_description( N_("Video CD (VCD 1.0, 1.1, 2.0, SVCD, HQVCD) input") )
  91.     add_usage_hint( N_("vcdx://[device-or-file][@{P,S,T}num]") )
  92.     add_shortcut( "vcdx" )
  93.     set_category( CAT_INPUT )
  94.     set_subcategory( SUBCAT_INPUT_ACCESS )
  95.     set_capability( "access", 55 /* slightly lower than vcd */ )
  96.     set_callbacks( VCDOpen, VCDClose )
  97.     /* Configuration options */
  98.     add_integer ( MODULE_STRING "-debug", 0, NULL,
  99.                   N_("If nonzero, this gives additional debug information."),
  100.                   DEBUG_LONGTEXT, true )
  101.     add_integer ( MODULE_STRING "-blocks-per-read", 20,
  102.           NULL,
  103.                   N_("Number of CD blocks to get in a single read."),
  104.                   N_("Number of CD blocks to get in a single read."),
  105.           true )
  106.     add_bool( MODULE_STRING "-PBC", 0, NULL,
  107.               N_("Use playback control?"),
  108.               N_("If VCD is authored with playback control, use it. "
  109.                  "Otherwise we play by tracks."),
  110.               false )
  111.     add_bool( MODULE_STRING "-track-length", true,
  112.           NULL,
  113.               N_("Use track length as maximum unit in seek?"),
  114.               N_("If set, the length of the seek bar is the track rather than "
  115.          "the length of an entry."),
  116.               false )
  117.     add_bool( MODULE_STRING "-extended-info", 0, NULL,
  118.               N_("Show extended VCD info?"),
  119.               N_("Show the maximum amount of information under Stream and "
  120.                  "Media Info. Shows for example playback control navigation."),
  121.               false )
  122.     add_string( MODULE_STRING "-author-format",
  123.                 "%v - %F disc %c of %C",
  124.                 NULL,
  125.                 N_("Format to use in the playlist's "author" field."),
  126.                 VCD_TITLE_FMT_LONGTEXT, true )
  127.     add_string( MODULE_STRING "-title-format",
  128.                 "%I %N %L%S - %M %A %v - disc %c of %C %F",
  129.                 NULL,
  130.                 N_("Format to use in the playlist's "title" field."),
  131.                 VCD_TITLE_FMT_LONGTEXT, false )
  132. vlc_module_end ()