git-svn-id: svn+ssh://jackaudio.org/trunk/jack@3198 0c269be4-1314-0410-8aa9-9f06e86f4224tags/0.116.2
| @@ -393,7 +393,7 @@ net_driver_read (net_driver_t* driver, jack_nframes_t nframes) | |||
| unsigned int *packet_buf, *packet_bufX; | |||
| if( ! driver->packet_data_valid ) { | |||
| render_payload_to_jack_ports (driver->bitdepth, NULL, driver->net_period_down, driver->capture_ports, driver->capture_srcs, nframes); | |||
| render_payload_to_jack_ports (driver->bitdepth, NULL, driver->net_period_down, driver->capture_ports, driver->capture_srcs, nframes, driver->dont_htonl_floats ); | |||
| return 0; | |||
| } | |||
| packet_buf = driver->rx_buf; | |||
| @@ -461,7 +461,7 @@ net_driver_read (net_driver_t* driver, jack_nframes_t nframes) | |||
| } | |||
| } | |||
| render_payload_to_jack_ports (driver->bitdepth, packet_bufX, driver->net_period_down, driver->capture_ports, driver->capture_srcs, nframes); | |||
| render_payload_to_jack_ports (driver->bitdepth, packet_bufX, driver->net_period_down, driver->capture_ports, driver->capture_srcs, nframes, driver->dont_htonl_floats ); | |||
| return 0; | |||
| } | |||
| @@ -490,7 +490,7 @@ net_driver_write (net_driver_t* driver, jack_nframes_t nframes) | |||
| pkthdr->framecnt = driver->expected_framecnt; | |||
| render_jack_ports_to_payload(driver->bitdepth, driver->playback_ports, driver->playback_srcs, nframes, packet_bufX, driver->net_period_up); | |||
| render_jack_ports_to_payload(driver->bitdepth, driver->playback_ports, driver->playback_srcs, nframes, packet_bufX, driver->net_period_up, driver->dont_htonl_floats ); | |||
| packet_header_hton(pkthdr); | |||
| if (driver->srcaddress_valid) | |||
| @@ -674,7 +674,8 @@ net_driver_new (jack_client_t * client, | |||
| unsigned int bitdepth, | |||
| unsigned int use_autoconfig, | |||
| unsigned int latency, | |||
| unsigned int redundancy) | |||
| unsigned int redundancy, | |||
| int dont_htonl_floats) | |||
| { | |||
| net_driver_t * driver; | |||
| int first_pack_len; | |||
| @@ -702,6 +703,7 @@ net_driver_new (jack_client_t * client, | |||
| driver->sample_rate = sample_rate; | |||
| driver->period_size = period_size; | |||
| driver->dont_htonl_floats = dont_htonl_floats; | |||
| driver->listen_port = listen_port; | |||
| driver->last_wait_ust = 0; | |||
| @@ -876,7 +878,7 @@ driver_get_descriptor () | |||
| desc = calloc (1, sizeof (jack_driver_desc_t)); | |||
| strcpy (desc->name, "net"); | |||
| desc->nparams = 15; | |||
| desc->nparams = 16; | |||
| params = calloc (desc->nparams, sizeof (jack_driver_param_desc_t)); | |||
| @@ -1009,6 +1011,15 @@ driver_get_descriptor () | |||
| "Send packets N times"); | |||
| strcpy (params[i].long_desc, params[i].short_desc); | |||
| i++; | |||
| strcpy (params[i].name, "no-htonl"); | |||
| params[i].character = 'H'; | |||
| params[i].type = JackDriverParamUInt; | |||
| params[i].value.ui = 0U; | |||
| strcpy (params[i].short_desc, | |||
| "Dont convert samples to network byte order."); | |||
| strcpy (params[i].long_desc, params[i].short_desc); | |||
| desc->params = params; | |||
| return desc; | |||
| @@ -1033,6 +1044,7 @@ driver_initialize (jack_client_t *client, const JSList * params) | |||
| unsigned int use_autoconfig = 1; | |||
| unsigned int latency = 5; | |||
| unsigned int redundancy = 1; | |||
| int dont_htonl_floats = 0; | |||
| const JSList * node; | |||
| const jack_driver_param_t * param; | |||
| @@ -1116,6 +1128,10 @@ driver_initialize (jack_client_t *client, const JSList * params) | |||
| case 'R': | |||
| redundancy = param->value.ui; | |||
| break; | |||
| case 'H': | |||
| dont_htonl_floats = param->value.ui; | |||
| break; | |||
| } | |||
| } | |||
| @@ -1124,7 +1140,8 @@ driver_initialize (jack_client_t *client, const JSList * params) | |||
| sample_rate, period_size, | |||
| listen_port, handle_transport_sync, | |||
| resample_factor, resample_factor_up, bitdepth, | |||
| use_autoconfig, latency, redundancy); | |||
| use_autoconfig, latency, redundancy, | |||
| dont_htonl_floats); | |||
| } | |||
| void | |||
| @@ -41,6 +41,7 @@ struct _net_driver | |||
| jack_nframes_t sample_rate; | |||
| jack_nframes_t bitdepth; | |||
| jack_nframes_t period_size; | |||
| int dont_htonl_floats; | |||
| jack_nframes_t codec_latency; | |||
| @@ -843,7 +843,7 @@ encode_midi_buffer (uint32_t *buffer_uint32, unsigned int buffer_size_uint32, ja | |||
| // render functions for float | |||
| void | |||
| render_payload_to_jack_ports_float ( void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes) | |||
| render_payload_to_jack_ports_float ( void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes, int dont_htonl_floats) | |||
| { | |||
| channel_t chn = 0; | |||
| JSList *node = capture_ports; | |||
| @@ -895,12 +895,19 @@ render_payload_to_jack_ports_float ( void *packet_payload, jack_nframes_t net_pe | |||
| else | |||
| #endif | |||
| { | |||
| for (i = 0; i < net_period_down; i++) | |||
| { | |||
| val.i = packet_bufX[i]; | |||
| val.i = ntohl (val.i); | |||
| buf[i] = val.f; | |||
| } | |||
| if( dont_htonl_floats ) | |||
| { | |||
| memcpy( buf, packet_bufX, net_period_down*sizeof(jack_default_audio_sample_t)); | |||
| } | |||
| else | |||
| { | |||
| for (i = 0; i < net_period_down; i++) | |||
| { | |||
| val.i = packet_bufX[i]; | |||
| val.i = ntohl (val.i); | |||
| buf[i] = val.f; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| else if (strncmp (porttype, JACK_DEFAULT_MIDI_TYPE, jack_port_type_size()) == 0) | |||
| @@ -918,7 +925,7 @@ render_payload_to_jack_ports_float ( void *packet_payload, jack_nframes_t net_pe | |||
| } | |||
| void | |||
| render_jack_ports_to_payload_float (JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up) | |||
| render_jack_ports_to_payload_float (JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up, int dont_htonl_floats ) | |||
| { | |||
| channel_t chn = 0; | |||
| JSList *node = playback_ports; | |||
| @@ -966,12 +973,19 @@ render_jack_ports_to_payload_float (JSList *playback_ports, JSList *playback_src | |||
| else | |||
| #endif | |||
| { | |||
| for (i = 0; i < net_period_up; i++) | |||
| { | |||
| val.f = buf[i]; | |||
| val.i = htonl (val.i); | |||
| packet_bufX[i] = val.i; | |||
| } | |||
| if( dont_htonl_floats ) | |||
| { | |||
| memcpy( packet_bufX, buf, net_period_up*sizeof(jack_default_audio_sample_t) ); | |||
| } | |||
| else | |||
| { | |||
| for (i = 0; i < net_period_up; i++) | |||
| { | |||
| val.f = buf[i]; | |||
| val.i = htonl (val.i); | |||
| packet_bufX[i] = val.i; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| else if (strncmp(porttype, JACK_DEFAULT_MIDI_TYPE, jack_port_type_size()) == 0) | |||
| @@ -1352,7 +1366,7 @@ render_jack_ports_to_payload_celt (JSList *playback_ports, JSList *playback_srcs | |||
| #endif | |||
| /* Wrapper functions with bitdepth argument... */ | |||
| void | |||
| render_payload_to_jack_ports (int bitdepth, void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes) | |||
| render_payload_to_jack_ports (int bitdepth, void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes, int dont_htonl_floats) | |||
| { | |||
| if (bitdepth == 8) | |||
| render_payload_to_jack_ports_8bit (packet_payload, net_period_down, capture_ports, capture_srcs, nframes); | |||
| @@ -1363,11 +1377,11 @@ render_payload_to_jack_ports (int bitdepth, void *packet_payload, jack_nframes_t | |||
| render_payload_to_jack_ports_celt (packet_payload, net_period_down, capture_ports, capture_srcs, nframes); | |||
| #endif | |||
| else | |||
| render_payload_to_jack_ports_float (packet_payload, net_period_down, capture_ports, capture_srcs, nframes); | |||
| render_payload_to_jack_ports_float (packet_payload, net_period_down, capture_ports, capture_srcs, nframes, dont_htonl_floats); | |||
| } | |||
| void | |||
| render_jack_ports_to_payload (int bitdepth, JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up) | |||
| render_jack_ports_to_payload (int bitdepth, JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up, int dont_htonl_floats) | |||
| { | |||
| if (bitdepth == 8) | |||
| render_jack_ports_to_payload_8bit (playback_ports, playback_srcs, nframes, packet_payload, net_period_up); | |||
| @@ -1378,5 +1392,5 @@ render_jack_ports_to_payload (int bitdepth, JSList *playback_ports, JSList *play | |||
| render_jack_ports_to_payload_celt (playback_ports, playback_srcs, nframes, packet_payload, net_period_up); | |||
| #endif | |||
| else | |||
| render_jack_ports_to_payload_float (playback_ports, playback_srcs, nframes, packet_payload, net_period_up); | |||
| render_jack_ports_to_payload_float (playback_ports, playback_srcs, nframes, packet_payload, net_period_up, dont_htonl_floats); | |||
| } | |||
| @@ -131,9 +131,9 @@ void packet_header_hton(jacknet_packet_header *pkthdr); | |||
| void packet_header_ntoh(jacknet_packet_header *pkthdr); | |||
| void render_payload_to_jack_ports(int bitdepth, void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes); | |||
| void render_payload_to_jack_ports(int bitdepth, void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes, int dont_htonl_floats ); | |||
| void render_jack_ports_to_payload(int bitdepth, JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up); | |||
| void render_jack_ports_to_payload(int bitdepth, JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up, int dont_htonl_floats ); | |||
| // XXX: This is sort of deprecated: | |||
| @@ -69,6 +69,7 @@ JSList *playback_srcs = NULL; | |||
| int playback_channels = 0; | |||
| int playback_channels_audio = 2; | |||
| int playback_channels_midi = 1; | |||
| int dont_htonl_floats = 0; | |||
| int latency = 5; | |||
| jack_nframes_t factor = 1; | |||
| @@ -262,7 +263,8 @@ process (jack_nframes_t nframes, void *arg) | |||
| packet_bufX = packet_buf + sizeof (jacknet_packet_header) / sizeof (jack_default_audio_sample_t); | |||
| /* ---------- Send ---------- */ | |||
| render_jack_ports_to_payload (bitdepth, playback_ports, playback_srcs, nframes, packet_bufX, net_period); | |||
| render_jack_ports_to_payload (bitdepth, playback_ports, playback_srcs, nframes, | |||
| packet_bufX, net_period, dont_htonl_floats); | |||
| /* fill in packet hdr */ | |||
| pkthdr->transport_state = jack_transport_query (client, &local_trans_pos); | |||
| @@ -345,7 +347,8 @@ process (jack_nframes_t nframes, void *arg) | |||
| //printf("Frame %d \tRecovered from dropouts\n", framecnt); | |||
| cont_miss = 0; | |||
| } | |||
| render_payload_to_jack_ports (bitdepth, packet_bufX, net_period, capture_ports, capture_srcs, nframes); | |||
| render_payload_to_jack_ports (bitdepth, packet_bufX, net_period, | |||
| capture_ports, capture_srcs, nframes, dont_htonl_floats); | |||
| state_currentframe = framecnt; | |||
| state_recv_packet_queue_time = recv_time_offset; | |||
| @@ -471,7 +474,7 @@ main (int argc, char *argv[]) | |||
| sprintf(client_name, "netsource"); | |||
| sprintf(peer_ip, "localhost"); | |||
| while ((c = getopt (argc, argv, ":R:n:s:h:p:C:P:i:o:l:r:f:b:m:c:")) != -1) | |||
| while ((c = getopt (argc, argv, ":H:R:n:s:h:p:C:P:i:o:l:r:f:b:m:c:")) != -1) | |||
| { | |||
| switch (c) | |||
| { | |||
| @@ -532,6 +535,9 @@ main (int argc, char *argv[]) | |||
| case 'R': | |||
| redundancy = atoi (optarg); | |||
| break; | |||
| case 'H': | |||
| dont_htonl_floats = atoi (optarg); | |||
| break; | |||
| case ':': | |||
| fprintf (stderr, "Option -%c requires an operand\n", optopt); | |||
| errflg++; | |||