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

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * cdda.c : CD digital audio input module for vlc using libcdio
  3.  *****************************************************************************
  4.  * Copyright (C) 2000, 2003, 2004, 2005 the VideoLAN team
  5.  * $Id: 23020f133de03ab1a68a85f2db76900e765d0e8e $
  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.  * Preamble
  25.  *****************************************************************************/
  26. #ifdef HAVE_CONFIG_H
  27. # include "config.h"
  28. #endif
  29. #include "callback.h"
  30. #include "access.h"
  31. #include <cdio/version.h>
  32. #include <vlc_plugin.h>
  33. /*****************************************************************************
  34.  * Module descriptor
  35.  *****************************************************************************/
  36. /*****************************************************************************
  37.  * Option help text
  38.  *****************************************************************************/
  39. #if LIBCDIO_VERSION_NUM >= 72
  40. static const char *const psz_paranoia_list[] = { "none", "overlap", "full" };
  41. static const char *const psz_paranoia_list_text[] = { N_("none"), N_("overlap"),
  42.                                           N_("full") };
  43. #endif
  44. #define DEBUG_LONGTEXT N_( 
  45.     "This integer when viewed in binary is a debugging maskn" 
  46.     "meta info          1n" 
  47.     "events             2n" 
  48.     "MRL                4n" 
  49.     "external call      8n" 
  50.     "all calls (0x10)  16n" 
  51.     "LSN       (0x20)  32n" 
  52.     "seek      (0x40)  64n" 
  53.     "libcdio   (0x80) 128n" 
  54.     "libcddb  (0x100) 256n" )
  55. #define CACHING_LONGTEXT N_( 
  56.     "Caching value for CDDA streams. This " 
  57.     "value should be set in millisecond units." )
  58. #define BLOCKS_PER_READ_LONGTEXT N_( 
  59.     "How many CD blocks to get on a single CD read. " 
  60.     "Generally on newer/faster CDs, this increases throughput at the " 
  61.     "expense of a little more memory usage and initial delay. SCSI-MMC " 
  62.     "limitations generally don't allow for more than 25 blocks per access.")
  63. #define CDDB_TITLE_FMT_LONGTEXT N_( 
  64. "Format used in the GUI Playlist Title. Similar to the Unix date n" 
  65. "Format specifiers that start with a percent sign. Specifiers are: n" 
  66. "   %a : The artist (for the album)n" 
  67. "   %A : The album informationn" 
  68. "   %C : Categoryn" 
  69. "   %e : The extended data (for a track)n" 
  70. "   %I : CDDB disk IDn" 
  71. "   %G : Genren" 
  72. "   %M : The current MRLn" 
  73. "   %m : The CD-DA Media Catalog Number (MCN)n" 
  74. "   %n : The number of tracks on the CDn" 
  75. "   %p : The artist/performer/composer in the trackn" 
  76. "   %T : The track numbern" 
  77. "   %s : Number of seconds in this trackn" 
  78. "   %S : Number of seconds in the CDn" 
  79. "   %t : The track title or MRL if no titlen" 
  80. "   %Y : The year 19xx or 20xxn" 
  81. "   %% : a % n")
  82. #define TITLE_FMT_LONGTEXT N_( 
  83. "Format used in the GUI Playlist Title. Similar to the Unix date n" 
  84. "Format specifiers that start with a percent sign. Specifiers are: n" 
  85. "   %M : The current MRLn" 
  86. "   %m : The CD-DA Media Catalog Number (MCN)n" 
  87. "   %n : The number of tracks on the CDn" 
  88. "   %T : The track numbern" 
  89. "   %s : Number of seconds in this trackn" 
  90. "   %S : Number of seconds in the CDn" 
  91. "   %t : The track title or MRL if no titlen" 
  92. "   %% : a % n")
  93. #define PARANOIA_TEXT N_("Enable CD paranoia?")
  94. #define PARANOIA_LONGTEXT N_( 
  95.         "Select whether to use CD Paranoia for jitter/error correction.n" 
  96.         "none: no paranoia - fastest.n" 
  97.         "overlap: do only overlap detection - not generally recommended.n" 
  98.         "full: complete jitter and error correction detection - slowest.n" )
  99. /*****************************************************************************
  100.  * Module descriptor
  101.  *****************************************************************************/
  102. vlc_module_begin ()
  103.     add_usage_hint( N_("cddax://[device-or-file][@[T]track]") )
  104.     set_description( N_("Compact Disc Digital Audio (CD-DA) input") )
  105.     set_capability( "access", 10 /* compare with priority of cdda */ )
  106.     set_shortname( N_("Audio Compact Disc"))
  107.     set_callbacks( CDDAOpen, CDDAClose )
  108.     add_shortcut( "cddax" )
  109.     add_shortcut( "cd" )
  110.     set_category( CAT_INPUT )
  111.     set_subcategory( SUBCAT_INPUT_ACCESS )
  112.     /* Configuration options */
  113.     add_integer ( MODULE_STRING "-debug", 0, CDDADebugCB,
  114.                   N_("Additional debug"),
  115.                   DEBUG_LONGTEXT, true )
  116.     add_integer( MODULE_STRING "-caching",
  117.                  DEFAULT_PTS_DELAY / MILLISECONDS_PER_SEC, NULL,
  118.                  N_("Caching value in microseconds"),
  119.                  CACHING_LONGTEXT, true )
  120.     add_integer( MODULE_STRING "-blocks-per-read",
  121.                  DEFAULT_BLOCKS_PER_READ, CDDABlocksPerReadCB,
  122.                  N_("Number of blocks per CD read"),
  123.                  BLOCKS_PER_READ_LONGTEXT, true )
  124.     add_string( MODULE_STRING "-title-format",
  125.                 "Track %T. %t", NULL,
  126.                 N_("Format to use in playlist "title" field when no CDDB"),
  127.                 TITLE_FMT_LONGTEXT, true )
  128. #if LIBCDIO_VERSION_NUM >= 73
  129.     add_bool( MODULE_STRING "-analog-output", false, NULL,
  130.               N_("Use CD audio controls and output?"),
  131.               N_("If set, audio controls and audio jack output are used"),
  132.               false )
  133. #endif
  134.     add_bool( MODULE_STRING "-cdtext-enabled", true, CDTextEnabledCB,
  135.               N_("Do CD-Text lookups?"),
  136.               N_("If set, get CD-Text information"),
  137.               false )
  138.     add_bool( MODULE_STRING "-navigation-mode", true,
  139. #ifdef FIXED
  140.           CDDANavModeCB,
  141. #else
  142.           NULL,
  143. #endif
  144.               N_("Use Navigation-style playback?"),
  145.               N_("Tracks are navigated via Navagation rather than "
  146.          "a playlist entries"),
  147.               false )
  148. #if LIBCDIO_VERSION_NUM >= 72
  149.       add_string( MODULE_STRING "-paranoia", NULL, NULL,
  150.         PARANOIA_TEXT,
  151.         PARANOIA_LONGTEXT,
  152.         false )
  153.       change_string_list( psz_paranoia_list, psz_paranoia_list_text, 0 );
  154. #endif /* LIBCDIO_VERSION_NUM >= 72 */
  155. #ifdef HAVE_LIBCDDB
  156.     set_section( N_("CDDB" ), 0 )
  157.     add_string( MODULE_STRING "-cddb-title-format",
  158.                 "Track %T. %t - %p %A", NULL,
  159.                 N_("Format to use in playlist "title" field when using CDDB"),
  160.                 CDDB_TITLE_FMT_LONGTEXT, true )
  161.     add_bool( MODULE_STRING "-cddb-enabled", true, CDDBEnabledCB,
  162.               N_("CDDB lookups"),
  163.               N_("If set, lookup CD-DA track information using the CDDB "
  164.                  "protocol"),
  165.               false )
  166.     add_string( MODULE_STRING "-cddb-server", "freedb.freedb.org", NULL,
  167.                 N_("CDDB server"),
  168.                 N_( "Contact this CDDB server look up CD-DA information"),
  169.         true )
  170.     add_integer( MODULE_STRING "-cddb-port", 8880, NULL,
  171.                  N_("CDDB server port"),
  172.                  N_("CDDB server uses this port number to communicate on"),
  173.                  true )
  174.     add_string( MODULE_STRING "-cddb-email", "me@home", NULL,
  175.                 N_("email address reported to CDDB server"),
  176.                 N_("email address reported to CDDB server"),
  177.         true )
  178.     add_bool( MODULE_STRING "-cddb-enable-cache", true, NULL,
  179.               N_("Cache CDDB lookups?"),
  180.               N_("If set cache CDDB information about this CD"),
  181.               false )
  182.     add_bool( MODULE_STRING "-cddb-httpd", false, NULL,
  183.               N_("Contact CDDB via the HTTP protocol?"),
  184.               N_("If set, the CDDB server gets information via the CDDB HTTP "
  185.                  "protocol"),
  186.               true )
  187.     add_integer( MODULE_STRING "-cddb-timeout", 10, NULL,
  188.                  N_("CDDB server timeout"),
  189.                  N_("Time (in seconds) to wait for a response from the "
  190.                     "CDDB server"),
  191.                  false )
  192.     add_string( MODULE_STRING "-cddb-cachedir", "~/.cddbslave", NULL,
  193.                 N_("Directory to cache CDDB requests"),
  194.                 N_("Directory to cache CDDB requests"),
  195.         true )
  196.     add_bool( MODULE_STRING "-cdtext-prefer", true, CDTextPreferCB,
  197.               N_("Prefer CD-Text info to CDDB info?"),
  198.               N_("If set, CD-Text information will be preferred "
  199.          "to CDDB information when both are available"),
  200.               false )
  201. #endif /*HAVE_LIBCDDB*/
  202. vlc_module_end ()