Blame lib/driver/audio.c

Packit dd8086
/*
Packit dd8086
  Copyright (C) 2005, 2008, 2011 Rocky Bernstein <rocky@gnu.org>
Packit dd8086
Packit dd8086
  This program is free software: you can redistribute it and/or modify
Packit dd8086
  it under the terms of the GNU General Public License as published by
Packit dd8086
  the Free Software Foundation, either version 3 of the License, or
Packit dd8086
  (at your option) any later version.
Packit dd8086
Packit dd8086
  This program is distributed in the hope that it will be useful,
Packit dd8086
  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit dd8086
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit dd8086
  GNU General Public License for more details.
Packit dd8086
Packit dd8086
  You should have received a copy of the GNU General Public License
Packit dd8086
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit dd8086
*/
Packit dd8086
/*! Audio (via line output) related routines. */
Packit dd8086

Packit dd8086
Packit dd8086
#ifdef HAVE_CONFIG_H
Packit dd8086
# include "config.h"
Packit dd8086
# define __CDIO_CONFIG_H__ 1
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#include <cdio/cdio.h>
Packit dd8086
#include <cdio/util.h>
Packit dd8086
#include <cdio/audio.h>
Packit dd8086
#include "cdio_private.h"
Packit dd8086
Packit dd8086
/* Return the number of seconds (discarding frame portion) of an MSF */
Packit dd8086
uint32_t
Packit dd8086
cdio_audio_get_msf_seconds(msf_t *p_msf) 
Packit dd8086
{
Packit dd8086
  return 
Packit dd8086
    cdio_from_bcd8(p_msf->m)*CDIO_CD_SECS_PER_MIN + cdio_from_bcd8(p_msf->s);
Packit dd8086
}
Packit dd8086
Packit dd8086
/*!
Packit dd8086
  Get volume of an audio CD.
Packit dd8086
  
Packit dd8086
  @param p_cdio the CD object to be acted upon.
Packit dd8086
  
Packit dd8086
*/
Packit dd8086
driver_return_code_t 
Packit dd8086
cdio_audio_get_volume (CdIo_t *p_cdio,  /*out*/ cdio_audio_volume_t *p_volume)
Packit dd8086
{
Packit dd8086
  cdio_audio_volume_t temp_audio_volume;
Packit dd8086
  
Packit dd8086
  if (!p_cdio) return DRIVER_OP_UNINIT;
Packit dd8086
Packit dd8086
  if (!p_volume) p_volume = &temp_audio_volume;
Packit dd8086
  if (p_cdio->op.audio_get_volume) {
Packit dd8086
    return p_cdio->op.audio_get_volume (p_cdio->env, p_volume);
Packit dd8086
  } else {
Packit dd8086
    return DRIVER_OP_UNSUPPORTED;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
/*!
Packit dd8086
  Playing CD through analog output
Packit dd8086
  
Packit dd8086
  @param p_cdio the CD object to be acted upon.
Packit dd8086
*/
Packit dd8086
driver_return_code_t 
Packit dd8086
cdio_audio_pause (CdIo_t *p_cdio) 
Packit dd8086
{
Packit dd8086
  if (!p_cdio) return DRIVER_OP_UNINIT;
Packit dd8086
Packit dd8086
  if (p_cdio->op.audio_pause) {
Packit dd8086
    return p_cdio->op.audio_pause (p_cdio->env);
Packit dd8086
  } else {
Packit dd8086
    return DRIVER_OP_UNSUPPORTED;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
/*!
Packit dd8086
  Playing CD through analog output at the given MSF.
Packit dd8086
  
Packit dd8086
  @param p_cdio the CD object to be acted upon.
Packit dd8086
*/
Packit dd8086
driver_return_code_t 
Packit dd8086
cdio_audio_play_msf (CdIo_t *p_cdio, msf_t *p_start_msf, msf_t *p_end_msf)
Packit dd8086
{
Packit dd8086
  if (!p_cdio) return DRIVER_OP_UNINIT;
Packit dd8086
Packit dd8086
  if (p_cdio->op.audio_play_msf) {
Packit dd8086
    return p_cdio->op.audio_play_msf (p_cdio->env, p_start_msf, p_end_msf);
Packit dd8086
  } else {
Packit dd8086
    return DRIVER_OP_UNSUPPORTED;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
/*!
Packit dd8086
  Playing CD through analog output
Packit dd8086
  
Packit dd8086
  @param p_cdio the CD object to be acted upon.
Packit dd8086
*/
Packit dd8086
driver_return_code_t 
Packit dd8086
cdio_audio_play_track_index (CdIo_t *p_cdio, cdio_track_index_t *p_track_index)
Packit dd8086
{
Packit dd8086
  if (!p_cdio) return DRIVER_OP_UNINIT;
Packit dd8086
Packit dd8086
  if (p_cdio->op.audio_play_track_index) {
Packit dd8086
    return p_cdio->op.audio_play_track_index (p_cdio->env, p_track_index);
Packit dd8086
  } else {
Packit dd8086
    return DRIVER_OP_UNSUPPORTED;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
/*!
Packit dd8086
  Get subchannel information.
Packit dd8086
  
Packit dd8086
  @param p_cdio the CD object to be acted upon.
Packit dd8086
*/
Packit dd8086
driver_return_code_t 
Packit dd8086
cdio_audio_read_subchannel (CdIo_t *p_cdio, cdio_subchannel_t *p_subchannel)
Packit dd8086
{
Packit dd8086
  if (!p_cdio) return DRIVER_OP_UNINIT;
Packit dd8086
Packit dd8086
  if (p_cdio->op.audio_read_subchannel) {
Packit dd8086
    return p_cdio->op.audio_read_subchannel(p_cdio->env, p_subchannel);
Packit dd8086
  } else {
Packit dd8086
    return DRIVER_OP_UNSUPPORTED;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
/*!
Packit dd8086
  Resume playing an audio CD.
Packit dd8086
  
Packit dd8086
  @param p_cdio the CD object to be acted upon.
Packit dd8086
  
Packit dd8086
*/
Packit dd8086
driver_return_code_t 
Packit dd8086
cdio_audio_resume (CdIo_t *p_cdio)
Packit dd8086
{
Packit dd8086
  if (!p_cdio) return DRIVER_OP_UNINIT;
Packit dd8086
Packit dd8086
  if (p_cdio->op.audio_resume) {
Packit dd8086
    return p_cdio->op.audio_resume(p_cdio->env);
Packit dd8086
  } else {
Packit dd8086
    return DRIVER_OP_UNSUPPORTED;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
/*!
Packit dd8086
  Set volume of an audio CD.
Packit dd8086
  
Packit dd8086
  @param p_cdio the CD object to be acted upon.
Packit dd8086
  
Packit dd8086
*/
Packit dd8086
driver_return_code_t 
Packit dd8086
cdio_audio_set_volume (CdIo_t *p_cdio, cdio_audio_volume_t *p_volume)
Packit dd8086
{
Packit dd8086
  if (!p_cdio) return DRIVER_OP_UNINIT;
Packit dd8086
Packit dd8086
  if (p_cdio->op.audio_set_volume) {
Packit dd8086
    return p_cdio->op.audio_set_volume(p_cdio->env, p_volume);
Packit dd8086
  } else {
Packit dd8086
    return DRIVER_OP_UNSUPPORTED;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
/*!
Packit dd8086
  Resume playing an audio CD.
Packit dd8086
  
Packit dd8086
  @param p_cdio the CD object to be acted upon.
Packit dd8086
  
Packit dd8086
*/
Packit dd8086
driver_return_code_t 
Packit dd8086
cdio_audio_stop (CdIo_t *p_cdio)
Packit dd8086
{
Packit dd8086
  if (!p_cdio) return DRIVER_OP_UNINIT;
Packit dd8086
Packit dd8086
  if (p_cdio->op.audio_stop) {
Packit dd8086
    return p_cdio->op.audio_stop(p_cdio->env);
Packit dd8086
  } else {
Packit dd8086
    return DRIVER_OP_UNSUPPORTED;
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086

Packit dd8086
/* 
Packit dd8086
 * Local variables:
Packit dd8086
 *  c-file-style: "gnu"
Packit dd8086
 *  tab-width: 8
Packit dd8086
 *  indent-tabs-mode: nil
Packit dd8086
 * End:
Packit dd8086
 */