Blame include/cdio/audio.h

Packit dd8086
/* -*- c -*-
Packit dd8086
    Copyright (C) 2005, 2007, 2008 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
Packit dd8086
/** \file audio.h 
Packit dd8086
 *
Packit dd8086
 *  \brief The top-level header for CD audio-related libcdio
Packit dd8086
 *         calls.  These control playing of the CD-ROM through its 
Packit dd8086
 *         line-out jack.
Packit dd8086
 */
Packit dd8086
#ifndef CDIO_AUDIO_H_
Packit dd8086
#define CDIO_AUDIO_H_
Packit dd8086
Packit dd8086
#include <cdio/types.h>
Packit dd8086
Packit dd8086
#ifdef __cplusplus
Packit dd8086
extern "C" {
Packit dd8086
#endif /* __cplusplus */
Packit dd8086
Packit dd8086
  /*! This struct is used by the cdio_audio_read_subchannel */
Packit dd8086
  typedef struct cdio_subchannel_s 
Packit dd8086
  {
Packit dd8086
    uint8_t format;
Packit dd8086
    uint8_t audio_status;
Packit dd8086
    uint8_t address:	4;
Packit dd8086
    uint8_t control:	4;
Packit dd8086
    uint8_t track;
Packit dd8086
    uint8_t index;
Packit dd8086
    msf_t   abs_addr;
Packit dd8086
    msf_t   rel_addr;
Packit dd8086
  } cdio_subchannel_t;
Packit dd8086
  
Packit dd8086
  /*! This struct is used by cdio_audio_get_volume and cdio_audio_set_volume */
Packit dd8086
  typedef struct cdio_audio_volume_s
Packit dd8086
  {
Packit dd8086
    uint8_t level[4];
Packit dd8086
  } cdio_audio_volume_t;
Packit dd8086
  
Packit dd8086
Packit dd8086
  /*! This struct is used by the CDROMPLAYTRKIND ioctl */
Packit dd8086
  typedef struct cdio_track_index_s
Packit dd8086
  {
Packit dd8086
    uint8_t	i_start_track;	/**< start track */
Packit dd8086
    uint8_t	i_start_index;	/**< start index */
Packit dd8086
    uint8_t	i_end_track;	/**< end track */
Packit dd8086
    uint8_t	i_end_index;	/**< end index */
Packit dd8086
  } cdio_track_index_t;
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
    @param p_volume place to put the list of volume outputs levels
Packit dd8086
Packit dd8086
    p_volume can be NULL in which case we return only whether the driver
Packit dd8086
    has the ability to get the volume or not.
Packit dd8086
Packit dd8086
  */
Packit dd8086
  driver_return_code_t cdio_audio_get_volume (CdIo_t *p_cdio,  /*out*/
Packit dd8086
					      cdio_audio_volume_t *p_volume);
Packit dd8086
Packit dd8086
  /*! 
Packit dd8086
    Return the number of seconds (discarding frame portion) of an MSF 
Packit dd8086
  */
Packit dd8086
  uint32_t cdio_audio_get_msf_seconds(msf_t *p_msf);
Packit dd8086
Packit dd8086
  /*!
Packit dd8086
    Pause 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 cdio_audio_pause (CdIo_t *p_cdio);
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
    @param p_start_msf pointer to staring MSF
Packit dd8086
    @param p_end_msf pointer to ending MSF
Packit dd8086
  */
Packit dd8086
  driver_return_code_t cdio_audio_play_msf (CdIo_t *p_cdio, 
Packit dd8086
					    /*in*/msf_t *p_start_msf,
Packit dd8086
					    /*in*/ msf_t *p_end_msf);
Packit dd8086
Packit dd8086
  /*!
Packit dd8086
    Playing CD through analog output at the desired track and index
Packit dd8086
Packit dd8086
    @param p_cdio the CD object to be acted upon.
Packit dd8086
    @param p_track_index location to start/end.
Packit dd8086
  */
Packit dd8086
  driver_return_code_t cdio_audio_play_track_index 
Packit dd8086
  ( CdIo_t *p_cdio,  cdio_track_index_t *p_track_index);
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
    @param p_subchannel place for returned subchannel information
Packit dd8086
  */
Packit dd8086
  driver_return_code_t cdio_audio_read_subchannel (CdIo_t *p_cdio, 
Packit dd8086
						   /*out*/ cdio_subchannel_t *p_subchannel);
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 cdio_audio_resume (CdIo_t *p_cdio);
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
    @param p_volume place for returned volume-level information
Packit dd8086
Packit dd8086
  */
Packit dd8086
  driver_return_code_t cdio_audio_set_volume (CdIo_t *p_cdio, /*out*/
Packit dd8086
					      cdio_audio_volume_t *p_volume);
Packit dd8086
Packit dd8086
  /*!
Packit dd8086
    Stop 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 cdio_audio_stop (CdIo_t *p_cdio);
Packit dd8086
Packit dd8086
#ifdef __cplusplus
Packit dd8086
}
Packit dd8086
#endif /* __cplusplus */
Packit dd8086
Packit dd8086
#endif /* CDIO_AUDIO_H_ */