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

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * callback.c : Callbacks for CD digital audio input module
  3.  *****************************************************************************
  4.  * Copyright (C) 2004 VideoLAN
  5.  * $Id: callback.c 8606 2004-08-31 18:32:54Z rocky $
  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. #include "callback.h"
  24. #include "cdda.h"
  25. int
  26. E_(CDDADebugCB)   ( vlc_object_t *p_this, const char *psz_name,
  27.     vlc_value_t oldval, vlc_value_t val, void *p_data )
  28. {
  29.   cdda_data_t *p_cdda;
  30.   if (NULL == p_cdda_input) return VLC_EGENERIC;
  31.   p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
  32.   if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT)) {
  33.     msg_Dbg( p_cdda_input, "Old debug (x%0x) %d, new debug (x%0x) %d",
  34.              p_cdda->i_debug, p_cdda->i_debug, val.i_int, val.i_int);
  35.   }
  36.   p_cdda->i_debug = val.i_int;
  37.   return VLC_SUCCESS;
  38. }
  39. /* FIXME: could probably shorten some of the below boilerplate code...
  40. */
  41. int
  42. E_(CDDBEnabledCB)   ( vlc_object_t *p_this, const char *psz_name,
  43.                       vlc_value_t oldval, vlc_value_t val, void *p_data )
  44. {
  45.   cdda_data_t *p_cdda;
  46.   if (NULL == p_cdda_input) return VLC_EGENERIC;
  47.   p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
  48. #ifdef HAVE_LIBCDDB
  49.   if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT)) {
  50.     msg_Dbg( p_cdda_input, "Old CDDB Enabled (x%0x) %d, new (x%0x) %d",
  51.              p_cdda->b_cddb_enabled, p_cdda->b_cddb_enabled,
  52.              val.b_bool, val.b_bool);
  53.   }
  54.   p_cdda->b_cddb_enabled = val.b_bool;
  55. #endif
  56.   return VLC_SUCCESS;
  57. }
  58. int
  59. E_(CDTextEnabledCB)   ( vlc_object_t *p_this, const char *psz_name,
  60. vlc_value_t oldval, vlc_value_t val, void *p_data )
  61. {
  62.   cdda_data_t *p_cdda;
  63.   if (NULL == p_cdda_input) return VLC_EGENERIC;
  64.   p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
  65.   if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT)) {
  66.     msg_Dbg( p_cdda_input, "Old CDText Enabled (x%0x) %d, new (x%0x) %d",
  67.              p_cdda->b_cdtext_enabled, p_cdda->b_cdtext_enabled,
  68.              val.b_bool, val.b_bool);
  69.   }
  70.   p_cdda->b_cdtext_enabled = val.b_bool;
  71.   return VLC_SUCCESS;
  72. }
  73. int
  74. E_(CDTextPreferCB)   ( vlc_object_t *p_this, const char *psz_name,
  75.        vlc_value_t oldval, vlc_value_t val, void *p_data )
  76. {
  77.   cdda_data_t *p_cdda;
  78.   if (NULL == p_cdda_input) return VLC_EGENERIC;
  79.   p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
  80. #ifdef HAVE_LIBCDDB
  81.   if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT)) {
  82.     msg_Dbg( p_cdda_input, "Old CDText Prefer (x%0x) %d, new (x%0x) %d",
  83.              p_cdda->b_cdtext_prefer, p_cdda->b_cdtext_prefer,
  84.              val.b_bool, val.b_bool);
  85.   }
  86.   p_cdda->b_cdtext_prefer = val.b_bool;
  87. #endif
  88.   return VLC_SUCCESS;
  89. }
  90. int
  91. E_(CDDABlocksPerReadCB) ( vlc_object_t *p_this, const char *psz_name,
  92.   vlc_value_t oldval, vlc_value_t val, void *p_data )
  93. {
  94.   cdda_data_t *p_cdda;
  95.   if (NULL == p_cdda_input) return VLC_EGENERIC;
  96.   p_cdda = (cdda_data_t *)p_cdda_input->p_sys;
  97.   if (p_cdda->i_debug & (INPUT_DBG_CALL|INPUT_DBG_EXT)) {
  98.     msg_Dbg( p_cdda_input, "Old blocks per read: %d, new %d",
  99.              p_cdda->i_blocks_per_read, val.i_int);
  100.   }
  101.   if (0 == val.i_int) val.i_int = DEFAULT_BLOCKS_PER_READ;
  102.   if ( val.i_int >= MIN_BLOCKS_PER_READ && val.i_int <= MAX_BLOCKS_PER_READ )
  103.     p_cdda->i_blocks_per_read = val.i_int;
  104.   else {
  105.     msg_Warn( p_cdda_input, 
  106.       "Number of blocks (%d) has to be between %d and %d. No change.", 
  107.       val.i_int, MIN_BLOCKS_PER_READ, MAX_BLOCKS_PER_READ );
  108.   }
  109.   
  110.   return VLC_SUCCESS;
  111. }