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

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * cddax.c : CD digital audio input module for vlc using libcdio
  3.  *****************************************************************************
  4.  * Copyright (C) 2000, 2003, 2004 VideoLAN
  5.  * $Id: cdda.c 9123 2004-11-02 23:51:21Z 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.  * Preamble
  25.  *****************************************************************************/
  26. #include "callback.h"
  27. #include "access.h"
  28. /*****************************************************************************
  29.  * Module descriptor
  30.  *****************************************************************************/
  31. /*****************************************************************************
  32.  * Option help text
  33.  *****************************************************************************/
  34. #define DEBUG_LONGTEXT N_( 
  35.     "This integer when viewed in binary is a debugging maskn" 
  36.     "meta info          1n" 
  37.     "events             2n" 
  38.     "MRL                4n" 
  39.     "external call      8n" 
  40.     "all calls (0x10)  16n" 
  41.     "LSN       (0x20)  32n" 
  42.     "seek      (0x40)  64n" 
  43.     "libcdio   (0x80) 128n" 
  44.     "libcddb  (0x100) 256n" )
  45. #define CACHING_LONGTEXT N_( 
  46.     "Allows you to modify the default caching value for CDDA streams. This " 
  47.     "value should be set in millisecond units." )
  48. #define BLOCKS_PER_READ_LONGTEXT N_( 
  49.     "Allows you to specify how many CD blocks to get on a single CD read. " 
  50.     "Generally on newer/faster CDs, this increases throughput at the " 
  51.     "expense of a little more memory usage and initial delay. SCSI-MMC " 
  52.     "limitations generally don't allow for more than 25 blocks per access.")
  53. #define CDDB_TITLE_FMT_LONGTEXT N_( 
  54. "Format used in the GUI Playlist Title. Similar to the Unix date n" 
  55. "Format specifiers that start with a percent sign. Specifiers are: n" 
  56. "   %a : The artist (for the album)n" 
  57. "   %A : The album informationn" 
  58. "   %C : Categoryn" 
  59. "   %e : The extended data (for a track)n" 
  60. "   %I : CDDB disk IDn" 
  61. "   %G : Genren" 
  62. "   %M : The current MRLn" 
  63. "   %m : The CD-DA Media Catalog Number (MCN)n" 
  64. "   %n : The number of tracks on the CDn" 
  65. "   %p : The artist/performer/composer in the trackn" 
  66. "   %T : The track numbern" 
  67. "   %s : Number of seconds in this track n" 
  68. "   %t : The titlen" 
  69. "   %Y : The year 19xx or 20xxn" 
  70. "   %% : a % n")
  71. #define TITLE_FMT_LONGTEXT N_( 
  72. "Format used in the GUI Playlist Title. Similar to the Unix date n" 
  73. "Format specifiers that start with a percent sign. Specifiers are: n" 
  74. "   %M : The current MRLn" 
  75. "   %m : The CD-DA Media Catalog Number (MCN)n" 
  76. "   %n : The number of tracks on the CDn" 
  77. "   %T : The track numbern" 
  78. "   %s : Number of seconds in this track n" 
  79. "   %% : a % n")
  80. /*****************************************************************************
  81.  * Module descriptor
  82.  *****************************************************************************/
  83. vlc_module_begin();
  84.     add_usage_hint( N_("cddax://[device-or-file][@[T]track]") );
  85.     set_description( _("Compact Disc Digital Audio (CD-DA) input") );
  86.     set_capability( "access2", 10 /* compare with priority of cdda */ );
  87.     set_callbacks( E_(CDDAOpen), E_(CDDAClose) );
  88.     add_shortcut( "cddax" );
  89.     add_shortcut( "cd" );
  90.     /* Configuration options */
  91.     add_integer ( MODULE_STRING "-debug", 0, E_(CDDADebugCB),
  92.                   N_("If nonzero, this gives additional debug information."),
  93.                   DEBUG_LONGTEXT, VLC_TRUE );
  94.     add_integer( MODULE_STRING "-caching",
  95.                  DEFAULT_PTS_DELAY / MILLISECONDS_PER_SEC, NULL,
  96.                  N_("Caching value in microseconds"),
  97.                  CACHING_LONGTEXT, VLC_TRUE );
  98.     add_integer( MODULE_STRING "-blocks-per-read",
  99.                  DEFAULT_BLOCKS_PER_READ, E_(CDDABlocksPerReadCB),
  100.                  N_("Number of blocks per CD read"),
  101.                  BLOCKS_PER_READ_LONGTEXT, VLC_TRUE );
  102.     add_string( MODULE_STRING "-author-format",
  103.                 "%A - %a %C %I", NULL,
  104.                 N_("Format to use in playlist "author" field"),
  105.                 TITLE_FMT_LONGTEXT, VLC_TRUE );
  106.     add_string( MODULE_STRING "-title-format",
  107.                 "%T %M", NULL,
  108.                 N_("Format to use in playlist "title" field when no CDDB"),
  109.                 TITLE_FMT_LONGTEXT, VLC_TRUE );
  110. #ifdef HAVE_LIBCDDB
  111.     add_string( MODULE_STRING "-cddb-title-format",
  112.                 "Track %T. %t - %p", NULL,
  113.                 N_("Format to use in playlist "title" field when using CDDB"),
  114.                 CDDB_TITLE_FMT_LONGTEXT, VLC_TRUE );
  115.     add_bool( MODULE_STRING "-cddb-enabled", 1, E_(CDDBEnabledCB),
  116.               N_("Do CDDB lookups?"),
  117.               N_("If set, lookup CD-DA track information using the CDDB "
  118.                  "protocol"),
  119.               VLC_FALSE );
  120.     add_string( MODULE_STRING "-cddb-server", "freedb.freedb.org", NULL,
  121.                 N_("CDDB server"),
  122.                 N_( "Contact this CDDB server look up CD-DA information"),
  123. VLC_TRUE );
  124.     add_integer( MODULE_STRING "-cddb-port", 8880, NULL,
  125.                  N_("CDDB server port"),
  126.                  N_("CDDB server uses this port number to communicate on"),
  127.                  VLC_TRUE );
  128.     add_string( MODULE_STRING "-cddb-email", "me@home", NULL,
  129.                 N_("email address reported to CDDB server"),
  130.                 N_("email address reported to CDDB server"),
  131. VLC_TRUE );
  132.     add_bool( MODULE_STRING "-cddb-enable-cache", VLC_TRUE, NULL,
  133.               N_("Cache CDDB lookups?"),
  134.               N_("If set cache CDDB information about this CD"),
  135.               VLC_FALSE );
  136.     add_bool( MODULE_STRING "-cddb-httpd", VLC_FALSE, NULL,
  137.               N_("Contact CDDB via the HTTP protocol?"),
  138.               N_("If set, the CDDB server gets information via the CDDB HTTP "
  139.                  "protocol"),
  140.               VLC_TRUE );
  141.     add_integer( MODULE_STRING "-cddb-timeout", 10, NULL,
  142.                  N_("CDDB server timeout"),
  143.                  N_("Time (in seconds) to wait for a response from the "
  144.                     "CDDB server"),
  145.                  VLC_FALSE );
  146.     add_string( MODULE_STRING "-cddb-cachedir", "~/.cddbslave", NULL,
  147.                 N_("Directory to cache CDDB requests"),
  148.                 N_("Directory to cache CDDB requests"),
  149. VLC_TRUE );
  150.     add_bool( MODULE_STRING "-cdtext-prefer", VLC_TRUE, E_(CDTextPreferCB),
  151.               N_("Prefer CD-Text info to CDDB info?"),
  152.               N_("If set, CD-Text information will be preferred "
  153.  "to CDDB information when both are available"),
  154.               VLC_FALSE );
  155. #endif
  156.     add_bool( MODULE_STRING "-cdtext-enabled", VLC_TRUE, E_(CDTextEnabledCB),
  157.               N_("Do CD-Text lookups?"),
  158.               N_("If set, get CD-Text information"),
  159.               VLC_FALSE );
  160. vlc_module_end();