mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	pod: add and use reserve_bytes helper
This commit is contained in:
		
							parent
							
								
									cc1ed84f9f
								
							
						
					
					
						commit
						11086f23ea
					
				
					 2 changed files with 13 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -298,6 +298,14 @@ spa_pod_builder_bytes(struct spa_pod_builder *builder, const void *bytes, uint32
 | 
			
		|||
		res = r;
 | 
			
		||||
	return res;
 | 
			
		||||
}
 | 
			
		||||
static inline void *
 | 
			
		||||
spa_pod_builder_reserve_bytes(struct spa_pod_builder *builder, uint32_t len)
 | 
			
		||||
{
 | 
			
		||||
	uint32_t offset = builder->state.offset;
 | 
			
		||||
	if (spa_pod_builder_bytes(builder, NULL, len) < 0)
 | 
			
		||||
		return NULL;
 | 
			
		||||
	return SPA_POD_BODY(spa_pod_builder_deref(builder, offset));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define SPA_POD_INIT_Pointer(type,value) (struct spa_pod_pointer){ { sizeof(struct spa_pod_pointer_body), SPA_TYPE_Pointer }, { type, 0, value } }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -973,7 +973,7 @@ static int midi_play(struct data *d, void *src, unsigned int n_frames)
 | 
			
		|||
	d->clock_time = last_frame;
 | 
			
		||||
 | 
			
		||||
	while (1) {
 | 
			
		||||
		uint32_t frame, offset;
 | 
			
		||||
		uint32_t frame;
 | 
			
		||||
		uint8_t *buf;
 | 
			
		||||
 | 
			
		||||
		res = midi_file_peek_event(&d->midi.mf, &ev);
 | 
			
		||||
| 
						 | 
				
			
			@ -993,11 +993,10 @@ static int midi_play(struct data *d, void *src, unsigned int n_frames)
 | 
			
		|||
			break;
 | 
			
		||||
 | 
			
		||||
		spa_pod_builder_control(&b, frame, SPA_CONTROL_Midi);
 | 
			
		||||
		offset = b.state.offset;
 | 
			
		||||
		spa_pod_builder_bytes(&b, NULL, ev.size + 1);
 | 
			
		||||
		buf = SPA_POD_BODY(spa_pod_builder_deref(&b, offset));
 | 
			
		||||
		buf[0] = ev.status;
 | 
			
		||||
		memcpy(&buf[1], ev.data, ev.size);
 | 
			
		||||
		if ((buf = spa_pod_builder_reserve_bytes(&b, ev.size + 1)) != NULL) {
 | 
			
		||||
			buf[0] = ev.status;
 | 
			
		||||
			memcpy(&buf[1], ev.data, ev.size);
 | 
			
		||||
		}
 | 
			
		||||
next:
 | 
			
		||||
		midi_file_consume_event(&d->midi.mf, &ev);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue