Changeset 806:01208d682d8e in roaraudio for libroaryiff


Ignore:
Timestamp:
09/17/08 16:39:59 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

done some code for CD playback, the interface to the server is still missing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroaryiff/audiocd.c

    r688 r806  
    2525#include <libroaryiff.h> 
    2626 
     27struct { 
     28 int fh; 
     29 int stream; 
     30 char * device; 
     31} _g_roaryiff_cdrom = {-1, -1, NULL}; 
     32 
    2733int YEjectAudioCD(YConnection *con) { 
     34 YStopAudioCD(con); 
    2835 return system("eject") == 0 ? 0 : -1; 
    2936} 
    3037 
     38int YPlayAudioCDTrack(YConnection *con, int track_number) { 
     39 struct roar_connection rcon; 
     40 int flags; 
     41 
     42 if ( con == NULL ) 
     43  return -1; 
     44 
     45 rcon.fh = con->fd; 
     46 
     47 
     48 if ( _g_roaryiff_cdrom.fh == -1 ) { 
     49  // ok, we need to open the cdrom device 
     50  if ( _g_roaryiff_cdrom.device == NULL ) { 
     51   _g_roaryiff_cdrom.device = roar_cdromdevice(); 
     52   if ( _g_roaryiff_cdrom.device == NULL ) 
     53    return -1; 
     54  } 
     55  if ( (_g_roaryiff_cdrom.fh = open(_g_roaryiff_cdrom.device, O_RDONLY, 0644)) == -1 ) 
     56   return -1; 
     57 
     58  if ( (flags = fcntl(_g_roaryiff_cdrom.fh, F_GETFL, 0)) == -1 ) { 
     59   close(_g_roaryiff_cdrom.fh); 
     60   _g_roaryiff_cdrom.fh = -1; 
     61   return -1; 
     62  } 
     63 
     64  flags |= FD_CLOEXEC; 
     65 
     66  if ( fcntl(_g_roaryiff_cdrom.fh, F_SETFL, flags) == -1 ) { 
     67   close(_g_roaryiff_cdrom.fh); 
     68   _g_roaryiff_cdrom.fh = -1; 
     69   return -1; 
     70  } 
     71 } 
     72 
     73 return -1; 
     74} 
     75 
     76int YStopAudioCD(YConnection *con) { 
     77 struct roar_connection rcon; 
     78 
     79 if ( con == NULL ) 
     80  return -1; 
     81 
     82 rcon.fh = con->fd; 
     83 
     84 if ( _g_roaryiff_cdrom.fh != -1 ) { 
     85  close(_g_roaryiff_cdrom.fh); 
     86 } 
     87 
     88 if ( _g_roaryiff_cdrom.stream != -1 ) { 
     89  roar_kick(&rcon, ROAR_OT_STREAM, _g_roaryiff_cdrom.stream); 
     90 } 
     91 
     92 return 0; 
     93} 
     94 
    3195//ll 
Note: See TracChangeset for help on using the changeset viewer.