mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	jack: use constant for type_id
This commit is contained in:
		
							parent
							
								
									4c2954b7a9
								
							
						
					
					
						commit
						37a1dc5265
					
				
					 1 changed files with 36 additions and 30 deletions
				
			
		| 
						 | 
					@ -80,6 +80,11 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NAME	"jack-client"
 | 
					#define NAME	"jack-client"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define TYPE_ID_AUDIO	0
 | 
				
			||||||
 | 
					#define TYPE_ID_MIDI	1
 | 
				
			||||||
 | 
					#define TYPE_ID_VIDEO	2
 | 
				
			||||||
 | 
					#define TYPE_ID_OTHER	3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct client;
 | 
					struct client;
 | 
				
			||||||
struct port;
 | 
					struct port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -793,12 +798,12 @@ static void process_tee(struct client *c, uint32_t frames)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		switch (p->object->port.type_id) {
 | 
							switch (p->object->port.type_id) {
 | 
				
			||||||
		case 0:
 | 
							case TYPE_ID_AUDIO:
 | 
				
			||||||
			ptr = get_buffer_output(c, p, frames, sizeof(float));
 | 
								ptr = get_buffer_output(c, p, frames, sizeof(float));
 | 
				
			||||||
			if (ptr != NULL)
 | 
								if (ptr != NULL)
 | 
				
			||||||
				memcpy(ptr, p->emptyptr, frames * sizeof(float));
 | 
									memcpy(ptr, p->emptyptr, frames * sizeof(float));
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 1:
 | 
							case TYPE_ID_VIDEO:
 | 
				
			||||||
			ptr = get_buffer_output(c, p, MAX_BUFFER_FRAMES, 1);
 | 
								ptr = get_buffer_output(c, p, MAX_BUFFER_FRAMES, 1);
 | 
				
			||||||
			if (ptr != NULL)
 | 
								if (ptr != NULL)
 | 
				
			||||||
				convert_from_midi(p->emptyptr, ptr, MAX_BUFFER_FRAMES * sizeof(float));
 | 
									convert_from_midi(p->emptyptr, ptr, MAX_BUFFER_FRAMES * sizeof(float));
 | 
				
			||||||
| 
						 | 
					@ -1358,20 +1363,20 @@ static int param_enum_format(struct client *c, struct port *p,
 | 
				
			||||||
		struct spa_pod **param, struct spa_pod_builder *b)
 | 
							struct spa_pod **param, struct spa_pod_builder *b)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	switch (p->object->port.type_id) {
 | 
						switch (p->object->port.type_id) {
 | 
				
			||||||
	case 0:
 | 
						case TYPE_ID_AUDIO:
 | 
				
			||||||
		*param = spa_pod_builder_add_object(b,
 | 
							*param = spa_pod_builder_add_object(b,
 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
 | 
								SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
 | 
				
			||||||
			SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
								SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsp),
 | 
								SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsp),
 | 
				
			||||||
	                SPA_FORMAT_AUDIO_format,   SPA_POD_Id(SPA_AUDIO_FORMAT_DSP_F32));
 | 
						                SPA_FORMAT_AUDIO_format,   SPA_POD_Id(SPA_AUDIO_FORMAT_DSP_F32));
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 1:
 | 
						case TYPE_ID_MIDI:
 | 
				
			||||||
		*param = spa_pod_builder_add_object(b,
 | 
							*param = spa_pod_builder_add_object(b,
 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
 | 
								SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
 | 
				
			||||||
			SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_application),
 | 
								SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_application),
 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_control));
 | 
								SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_control));
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 2:
 | 
						case TYPE_ID_VIDEO:
 | 
				
			||||||
		*param = spa_pod_builder_add_object(b,
 | 
							*param = spa_pod_builder_add_object(b,
 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
 | 
								SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
 | 
				
			||||||
			SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
								SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
				
			||||||
| 
						 | 
					@ -1388,20 +1393,20 @@ static int param_format(struct client *c, struct port *p,
 | 
				
			||||||
		struct spa_pod **param, struct spa_pod_builder *b)
 | 
							struct spa_pod **param, struct spa_pod_builder *b)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	switch (p->object->port.type_id) {
 | 
						switch (p->object->port.type_id) {
 | 
				
			||||||
	case 0:
 | 
						case TYPE_ID_AUDIO:
 | 
				
			||||||
		*param = spa_pod_builder_add_object(b,
 | 
							*param = spa_pod_builder_add_object(b,
 | 
				
			||||||
				SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
 | 
									SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
 | 
				
			||||||
				SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
									SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
				
			||||||
				SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsp),
 | 
									SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsp),
 | 
				
			||||||
		                SPA_FORMAT_AUDIO_format,   SPA_POD_Id(SPA_AUDIO_FORMAT_DSP_F32));
 | 
							                SPA_FORMAT_AUDIO_format,   SPA_POD_Id(SPA_AUDIO_FORMAT_DSP_F32));
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 1:
 | 
						case TYPE_ID_MIDI:
 | 
				
			||||||
		*param = spa_pod_builder_add_object(b,
 | 
							*param = spa_pod_builder_add_object(b,
 | 
				
			||||||
				SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
 | 
									SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
 | 
				
			||||||
				SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_application),
 | 
									SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_application),
 | 
				
			||||||
				SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_control));
 | 
									SPA_FORMAT_mediaSubtype,   SPA_POD_Id(SPA_MEDIA_SUBTYPE_control));
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 2:
 | 
						case TYPE_ID_VIDEO:
 | 
				
			||||||
		*param = spa_pod_builder_add_object(b,
 | 
							*param = spa_pod_builder_add_object(b,
 | 
				
			||||||
				SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
 | 
									SPA_TYPE_OBJECT_Format, SPA_PARAM_Format,
 | 
				
			||||||
				SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
									SPA_FORMAT_mediaType,      SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
				
			||||||
| 
						 | 
					@ -1418,8 +1423,8 @@ static int param_buffers(struct client *c, struct port *p,
 | 
				
			||||||
		struct spa_pod **param, struct spa_pod_builder *b)
 | 
							struct spa_pod **param, struct spa_pod_builder *b)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	switch (p->object->port.type_id) {
 | 
						switch (p->object->port.type_id) {
 | 
				
			||||||
	case 0:
 | 
						case TYPE_ID_AUDIO:
 | 
				
			||||||
	case 1:
 | 
						case TYPE_ID_MIDI:
 | 
				
			||||||
		*param = spa_pod_builder_add_object(b,
 | 
							*param = spa_pod_builder_add_object(b,
 | 
				
			||||||
			SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
 | 
								SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
 | 
				
			||||||
			SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(2, 1, MAX_BUFFERS),
 | 
								SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(2, 1, MAX_BUFFERS),
 | 
				
			||||||
| 
						 | 
					@ -1429,10 +1434,11 @@ static int param_buffers(struct client *c, struct port *p,
 | 
				
			||||||
								sizeof(float),
 | 
													sizeof(float),
 | 
				
			||||||
								MAX_BUFFER_FRAMES * sizeof(float),
 | 
													MAX_BUFFER_FRAMES * sizeof(float),
 | 
				
			||||||
								sizeof(float)),
 | 
													sizeof(float)),
 | 
				
			||||||
			SPA_PARAM_BUFFERS_stride,  SPA_POD_Int(p->object->port.type_id == 0 ? sizeof(float) : 1),
 | 
								SPA_PARAM_BUFFERS_stride,  SPA_POD_Int(p->object->port.type_id == TYPE_ID_AUDIO ?
 | 
				
			||||||
 | 
														sizeof(float) : 1),
 | 
				
			||||||
			SPA_PARAM_BUFFERS_align,   SPA_POD_Int(16));
 | 
								SPA_PARAM_BUFFERS_align,   SPA_POD_Int(16));
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 2:
 | 
						case TYPE_ID_VIDEO:
 | 
				
			||||||
		*param = spa_pod_builder_add_object(b,
 | 
							*param = spa_pod_builder_add_object(b,
 | 
				
			||||||
			SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
 | 
								SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
 | 
				
			||||||
			SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(2, 1, MAX_BUFFERS),
 | 
								SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(2, 1, MAX_BUFFERS),
 | 
				
			||||||
| 
						 | 
					@ -1544,7 +1550,7 @@ static int client_node_port_set_param(void *object,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void init_buffer(struct port *p, void *data, size_t maxframes)
 | 
					static void init_buffer(struct port *p, void *data, size_t maxframes)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (p->object->port.type_id == 1) {
 | 
						if (p->object->port.type_id == TYPE_ID_MIDI) {
 | 
				
			||||||
		struct midi_buffer *mb = data;
 | 
							struct midi_buffer *mb = data;
 | 
				
			||||||
		mb->magic = MIDI_BUFFER_MAGIC;
 | 
							mb->magic = MIDI_BUFFER_MAGIC;
 | 
				
			||||||
		mb->buffer_size = MAX_BUFFER_FRAMES * sizeof(float);
 | 
							mb->buffer_size = MAX_BUFFER_FRAMES * sizeof(float);
 | 
				
			||||||
| 
						 | 
					@ -1590,7 +1596,7 @@ static int client_node_port_use_buffers(void *object,
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (p->object->port.type_id == 2 && direction == SPA_DIRECTION_INPUT) {
 | 
						if (p->object->port.type_id == TYPE_ID_VIDEO && direction == SPA_DIRECTION_INPUT) {
 | 
				
			||||||
		fl = PW_MEMMAP_FLAG_READ;
 | 
							fl = PW_MEMMAP_FLAG_READ;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		/* some apps write to the input buffer so we want everything readwrite */
 | 
							/* some apps write to the input buffer so we want everything readwrite */
 | 
				
			||||||
| 
						 | 
					@ -1863,13 +1869,13 @@ static const struct pw_client_node_events client_node_events = {
 | 
				
			||||||
static jack_port_type_id_t string_to_type(const char *port_type)
 | 
					static jack_port_type_id_t string_to_type(const char *port_type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!strcmp(JACK_DEFAULT_AUDIO_TYPE, port_type))
 | 
						if (!strcmp(JACK_DEFAULT_AUDIO_TYPE, port_type))
 | 
				
			||||||
		return 0;
 | 
							return TYPE_ID_AUDIO;
 | 
				
			||||||
	else if (!strcmp(JACK_DEFAULT_MIDI_TYPE, port_type))
 | 
						else if (!strcmp(JACK_DEFAULT_MIDI_TYPE, port_type))
 | 
				
			||||||
		return 1;
 | 
							return TYPE_ID_MIDI;
 | 
				
			||||||
	else if (!strcmp(JACK_DEFAULT_VIDEO_TYPE, port_type))
 | 
						else if (!strcmp(JACK_DEFAULT_VIDEO_TYPE, port_type))
 | 
				
			||||||
		return 2;
 | 
							return TYPE_ID_VIDEO;
 | 
				
			||||||
	else if (!strcmp("other", port_type))
 | 
						else if (!strcmp("other", port_type))
 | 
				
			||||||
		return 3;
 | 
							return TYPE_ID_OTHER;
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		return SPA_ID_INVALID;
 | 
							return SPA_ID_INVALID;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1877,13 +1883,13 @@ static jack_port_type_id_t string_to_type(const char *port_type)
 | 
				
			||||||
static const char* type_to_string(jack_port_type_id_t type_id)
 | 
					static const char* type_to_string(jack_port_type_id_t type_id)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	switch(type_id) {
 | 
						switch(type_id) {
 | 
				
			||||||
	case 0:
 | 
						case TYPE_ID_AUDIO:
 | 
				
			||||||
		return JACK_DEFAULT_AUDIO_TYPE;
 | 
							return JACK_DEFAULT_AUDIO_TYPE;
 | 
				
			||||||
	case 1:
 | 
						case TYPE_ID_MIDI:
 | 
				
			||||||
		return JACK_DEFAULT_MIDI_TYPE;
 | 
							return JACK_DEFAULT_MIDI_TYPE;
 | 
				
			||||||
	case 2:
 | 
						case TYPE_ID_VIDEO:
 | 
				
			||||||
		return JACK_DEFAULT_VIDEO_TYPE;
 | 
							return JACK_DEFAULT_VIDEO_TYPE;
 | 
				
			||||||
	case 3:
 | 
						case TYPE_ID_OTHER:
 | 
				
			||||||
		return "other";
 | 
							return "other";
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
| 
						 | 
					@ -2002,7 +2008,7 @@ static void registry_event_global(void *data, uint32_t id,
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if (!strcmp(item->key, PW_KEY_PORT_CONTROL)) {
 | 
								else if (!strcmp(item->key, PW_KEY_PORT_CONTROL)) {
 | 
				
			||||||
				if (pw_properties_parse_bool(item->value))
 | 
									if (pw_properties_parse_bool(item->value))
 | 
				
			||||||
					type_id = 1;
 | 
										type_id = TYPE_ID_MIDI;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3165,13 +3171,13 @@ void * jack_port_get_buffer (jack_port_t *port, jack_nframes_t frames)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (p->direction == SPA_DIRECTION_INPUT) {
 | 
						if (p->direction == SPA_DIRECTION_INPUT) {
 | 
				
			||||||
		switch (p->object->port.type_id) {
 | 
							switch (p->object->port.type_id) {
 | 
				
			||||||
		case 0:
 | 
							case TYPE_ID_AUDIO:
 | 
				
			||||||
			ptr = get_buffer_input_float(c, p, frames);
 | 
								ptr = get_buffer_input_float(c, p, frames);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 1:
 | 
							case TYPE_ID_MIDI:
 | 
				
			||||||
			ptr = get_buffer_input_midi(c, p, frames);
 | 
								ptr = get_buffer_input_midi(c, p, frames);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 2:
 | 
							case TYPE_ID_VIDEO:
 | 
				
			||||||
			ptr = get_buffer_input_float(c, p, frames);
 | 
								ptr = get_buffer_input_float(c, p, frames);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -3184,13 +3190,13 @@ void * jack_port_get_buffer (jack_port_t *port, jack_nframes_t frames)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		switch (p->object->port.type_id) {
 | 
							switch (p->object->port.type_id) {
 | 
				
			||||||
		case 0:
 | 
							case TYPE_ID_AUDIO:
 | 
				
			||||||
			ptr = get_buffer_output_float(c, p, frames);
 | 
								ptr = get_buffer_output_float(c, p, frames);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 1:
 | 
							case TYPE_ID_MIDI:
 | 
				
			||||||
			ptr = get_buffer_output_midi(c, p, frames);
 | 
								ptr = get_buffer_output_midi(c, p, frames);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case 2:
 | 
							case TYPE_ID_VIDEO:
 | 
				
			||||||
			ptr = get_buffer_output_float(c, p, frames);
 | 
								ptr = get_buffer_output_float(c, p, frames);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -3914,7 +3920,7 @@ const char ** jack_get_ports (jack_client_t *client,
 | 
				
			||||||
				o->port.type_id, o->port.flags, o->port.name);
 | 
									o->port.type_id, o->port.flags, o->port.name);
 | 
				
			||||||
		if (count == JACK_PORT_MAX)
 | 
							if (count == JACK_PORT_MAX)
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		if (o->port.type_id > 2)
 | 
							if (o->port.type_id > TYPE_ID_VIDEO)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		if (!SPA_FLAG_IS_SET(o->port.flags, flags))
 | 
							if (!SPA_FLAG_IS_SET(o->port.flags, flags))
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue