22 #include "JackError.h"    23 #include "JackPortType.h"    35 bool JackPort::Allocate(
int refnum, 
const char* port_name, 
const char* port_type, JackPortFlags flags)
    37     jack_port_type_id_t 
id = GetPortTypeId(port_type);
    38     assert(
id >= 0 && 
id <= PORT_TYPES_MAX);
    39     if (
id == PORT_TYPES_MAX) {
    45     strcpy(fName, port_name);
    50     fPlaybackLatency.
min = fPlaybackLatency.
max = 0;
    51     fCaptureLatency.
min = fCaptureLatency.
max = 0;
    64 void JackPort::Release()
    67     fFlags = JackPortIsInput;
    73     fPlaybackLatency.
min = fPlaybackLatency.
max = 0;
    74     fCaptureLatency.
min = fCaptureLatency.
max = 0;
    80 int JackPort::GetRefNum()
 const    85 jack_nframes_t JackPort::GetLatency()
 const    90 jack_nframes_t JackPort::GetTotalLatency()
 const    95 void JackPort::SetLatency(jack_nframes_t nframes)
   102         if (fFlags & JackPortIsOutput) {
   103                 fCaptureLatency.
min = nframes;
   104                 fCaptureLatency.
max = nframes;
   106         if (fFlags & JackPortIsInput) {
   107                 fPlaybackLatency.
min = nframes;
   108                 fPlaybackLatency.
max = nframes;
   114     if (mode == JackCaptureLatency) {
   115                 fCaptureLatency = *range;
   120                 if ((fFlags & JackPortIsOutput) && (fFlags & JackPortIsPhysical)) {
   121                         fLatency = (range->
min + range->
max) / 2;
   124         fPlaybackLatency = *range;
   129                 if ((fFlags & JackPortIsInput) && (fFlags & JackPortIsPhysical)) {
   130                         fLatency = (range->
min + range->
max) / 2;
   135 void JackPort::GetLatencyRange(jack_latency_callback_mode_t mode, 
jack_latency_range_t* range)
 const   137     if (mode == JackCaptureLatency) {
   138                 *range = fCaptureLatency;
   140                 *range = fPlaybackLatency;
   144 int JackPort::Tie(jack_port_id_t port_index)
   150 int JackPort::UnTie()
   169     } 
else if (fMonitorRequests) {
   188         if (fMonitorRequests == 0) {
   192         if (fMonitorRequests > 0) {
   193             fMonitorRequests = 0;
   200 const char* JackPort::GetName()
 const   205 const char* JackPort::GetShortName()
 const   210     return strchr(fName, 
':') + 1;
   213 int JackPort::GetFlags()
 const   218 const char* JackPort::GetType()
 const   220     const JackPortType* type = GetPortType(fTypeId);
   224 void JackPort::SetName(
const char* new_name)
   226     char* colon = strchr(fName, 
':');
   227     int len = 
sizeof(fName) - ((
int) (colon - fName)) - 2;
   228     snprintf(colon + 1, len, 
"%s", new_name);
   231 bool JackPort::NameEquals(
const char* target)
   233     char buf[REAL_JACK_PORT_NAME_SIZE+1];
   242     if (strncmp(target, 
"ALSA:capture", 12) == 0 || strncmp(target, 
"ALSA:playback", 13) == 0) {
   243         snprintf(buf, 
sizeof(buf), 
"alsa_pcm%s", target + 4);
   247     return (strcmp(fName, target) == 0
   248             || strcmp(fAlias1, target) == 0
   249             || strcmp(fAlias2, target) == 0);
   252 int JackPort::GetAliases(
char* 
const aliases[2])
   256     if (fAlias1[0] != 
'\0') {
   257         snprintf(aliases[0], REAL_JACK_PORT_NAME_SIZE, 
"%s", fAlias1);
   261     if (fAlias2[0] != 
'\0') {
   262         snprintf(aliases[1], REAL_JACK_PORT_NAME_SIZE, 
"%s", fAlias2);
   269 int JackPort::SetAlias(
const char* alias)
   271     if (fAlias1[0] == 
'\0') {
   272         snprintf(fAlias1, 
sizeof(fAlias1), 
"%s", alias);
   273     } 
else if (fAlias2[0] == 
'\0') {
   274         snprintf(fAlias2, 
sizeof(fAlias2), 
"%s", alias);
   282 int JackPort::UnsetAlias(
const char* alias)
   284     if (strcmp(fAlias1, alias) == 0) {
   286     } 
else if (strcmp(fAlias2, alias) == 0) {
   295 void JackPort::ClearBuffer(jack_nframes_t frames)
   297     const JackPortType* type = GetPortType(fTypeId);
   298     (type->init)(GetBuffer(), frames * 
sizeof(jack_default_audio_sample_t), frames);
   301 void JackPort::MixBuffers(
void** src_buffers, 
int src_count, jack_nframes_t buffer_size)
   303     const JackPortType* type = GetPortType(fTypeId);
   304     (type->mixdown)(GetBuffer(), src_buffers, src_count, buffer_size);
 
int RequestMonitor(bool onoff)
int EnsureMonitor(bool onoff)