Changeset 2561:5e4969de3dc9 in roaraudio for plugins/gstreamer0.10


Ignore:
Timestamp:
09/04/09 02:36:02 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

enable any kind of PCM, preper a bit for a-law/mu-law

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins/gstreamer0.10/roarsink.c

    r2560 r2561  
    6868    GST_STATIC_CAPS( 
    6969        "audio/x-raw-int, " 
    70         "endianness = (int) BYTE_ORDER, " 
    71         "signed = (boolean) TRUE, " 
     70        "endianness = (int) { BIG_ENDIAN, LITTLE_ENDIAN }, " 
     71        "signed = (boolean) { true, false }, " 
    7272        "width = (int) 32, " 
    7373        "depth = (int) 32, " 
     
    7676 
    7777        "audio/x-raw-int, " 
    78         "endianness = (int) BYTE_ORDER, " 
    79         "signed = (boolean) TRUE, " 
     78        "endianness = (int) { BIG_ENDIAN, LITTLE_ENDIAN }, " 
     79        "signed = (boolean) { true, false }, " 
    8080        "width = (int) 24, " 
    8181        "depth = (int) 24, " 
     
    8484 
    8585        "audio/x-raw-int, " 
    86         "endianness = (int) BYTE_ORDER, " 
    87         "signed = (boolean) TRUE, " 
     86        "endianness = (int) { BIG_ENDIAN, LITTLE_ENDIAN }, " 
     87        "signed = (boolean) { true, false }, " 
    8888        "width = (int) 16, " 
    8989        "depth = (int) 16, " 
     
    267267static gboolean gst_roarsink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec) { 
    268268  GstRoarSink *roarsink = GST_ROARSINK(asink); 
     269  int codec = ROAR_CODEC_DEFAULT; 
    269270 
    270271  GST_DEBUG_OBJECT(roarsink, "prepare"); 
     
    273274  GST_INFO_OBJECT(roarsink, "attempting to open data connection to esound server"); 
    274275 
     276  switch (spec->type) { 
     277   case GST_BUFTYPE_LINEAR: 
     278     switch (spec->sign) { 
     279      case TRUE: 
     280        switch (spec->bigend) { 
     281         case TRUE:  codec = ROAR_CODEC_PCM_S_BE; break; 
     282         case FALSE: codec = ROAR_CODEC_PCM_S_LE; break; 
     283         default: return FALSE; break; 
     284        } 
     285       break; 
     286      case FALSE: 
     287        switch (spec->bigend) { 
     288         case TRUE:  codec = ROAR_CODEC_PCM_U_BE; break; 
     289         case FALSE: codec = ROAR_CODEC_PCM_U_LE; break; 
     290         default: return FALSE; break; 
     291        } 
     292       break; 
     293      default: return FALSE; break; 
     294     } 
     295    break; 
     296   case GST_BUFTYPE_A_LAW:  codec = ROAR_CODEC_ALAW;    break; 
     297   case GST_BUFTYPE_MU_LAW: codec = ROAR_CODEC_MULAW;   break; 
     298   default: 
     299     return FALSE; 
     300  } 
     301 
    275302  roarsink->fd = roar_simple_new_stream(&(roarsink->con), spec->rate, spec->channels, spec->depth, 
    276                                         ROAR_CODEC_DEFAULT, ROAR_DIR_PLAY); 
     303                                        codec, ROAR_DIR_PLAY); 
    277304 
    278305  if ( roarsink->fd == -1 ) 
Note: See TracChangeset for help on using the changeset viewer.