Changeset 1298:b87039ebf291 in roaraudio


Ignore:
Timestamp:
03/16/09 03:57:20 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

wrote some basic code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio_magic.c

    r1284 r1298  
    1 //vio_magic.c: 
     1 
    22 
    33/* 
     
    3535#include "libroar.h" 
    3636 
     37int     roar_vio_open_magic    (struct roar_vio_calls * calls, struct roar_vio_calls * dst, int * codec); 
     38int     roar_vio_magic_close   (struct roar_vio_calls * vio); 
     39 
     40ssize_t roar_vio_magic_read    (struct roar_vio_calls * vio, void *buf, size_t count) { 
     41 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 
     42 void * calls; 
     43 size_t len; 
     44 
     45 if (self == NULL) 
     46  return -1; 
     47 
     48 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 
     49  return -1; 
     50 
     51 if ( roar_buffer_get_len(&(self->inp), &len) == -1 ) 
     52  return -1; 
     53 
     54 if ( len ) { 
     55  len = len > count ? count : len; 
     56  if ( roar_buffer_shift_out(&(self->inp), buf, &len) == -1 ) 
     57   return -1; 
     58 } 
     59 
     60 count -= len; 
     61 buf += len; 
     62 
     63 if ( count ) { 
     64  if ( (count = roar_vio_read((struct roar_vio_calls*) calls, buf, count)) == -1 ) 
     65   return len; 
     66 
     67  return len+count; 
     68 } 
     69 
     70 return len; 
     71} 
     72 
     73ssize_t roar_vio_magic_write   (struct roar_vio_calls * vio, void *buf, size_t count) { 
     74 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 
     75 void * calls; 
     76 
     77 if (self == NULL) 
     78  return -1; 
     79 
     80 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 
     81  return -1; 
     82 
     83 return roar_vio_write((struct roar_vio_calls*)calls, buf, count); 
     84} 
     85 
     86off_t   roar_vio_magic_lseek   (struct roar_vio_calls * vio, off_t offset, int whence) { 
     87 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 
     88 void * calls; 
     89 
     90 if (self == NULL) 
     91  return -1; 
     92 
     93 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 
     94  return -1; 
     95 
     96 return roar_vio_lseek((struct roar_vio_calls*)calls, offset, whence); 
     97} 
     98 
     99int     roar_vio_magic_nonblock(struct roar_vio_calls * vio, int state) { 
     100 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 
     101 void * calls; 
     102 
     103 if (self == NULL) 
     104  return -1; 
     105 
     106 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 
     107  return -1; 
     108 
     109 return roar_vio_nonblock((struct roar_vio_calls*)calls, state); 
     110} 
     111 
     112int     roar_vio_magic_sync    (struct roar_vio_calls * vio) { 
     113 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 
     114 void * calls; 
     115 
     116 if (self == NULL) 
     117  return -1; 
     118 
     119 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 
     120  return -1; 
     121 
     122 return roar_vio_sync((struct roar_vio_calls*)calls); 
     123} 
     124 
    37125//ll 
Note: See TracChangeset for help on using the changeset viewer.