mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	pw-cat: fix raw read
raw read needs bytes, so use the stride to calculate it from frames. Move ulaw/alaw to packed formats.
This commit is contained in:
		
							parent
							
								
									f7c91491cb
								
							
						
					
					
						commit
						49c1c0386f
					
				
					 4 changed files with 10 additions and 10 deletions
				
			
		| 
						 | 
					@ -79,6 +79,9 @@ enum spa_audio_format {
 | 
				
			||||||
	SPA_AUDIO_FORMAT_F64_LE,
 | 
						SPA_AUDIO_FORMAT_F64_LE,
 | 
				
			||||||
	SPA_AUDIO_FORMAT_F64_BE,
 | 
						SPA_AUDIO_FORMAT_F64_BE,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SPA_AUDIO_FORMAT_ULAW,
 | 
				
			||||||
 | 
						SPA_AUDIO_FORMAT_ALAW,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* planar formats */
 | 
						/* planar formats */
 | 
				
			||||||
	SPA_AUDIO_FORMAT_START_Planar		= 0x200,
 | 
						SPA_AUDIO_FORMAT_START_Planar		= 0x200,
 | 
				
			||||||
	SPA_AUDIO_FORMAT_U8P,
 | 
						SPA_AUDIO_FORMAT_U8P,
 | 
				
			||||||
| 
						 | 
					@ -93,9 +96,6 @@ enum spa_audio_format {
 | 
				
			||||||
	/* other formats start here */
 | 
						/* other formats start here */
 | 
				
			||||||
	SPA_AUDIO_FORMAT_START_Other		= 0x400,
 | 
						SPA_AUDIO_FORMAT_START_Other		= 0x400,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SPA_AUDIO_FORMAT_ULAW,
 | 
					 | 
				
			||||||
	SPA_AUDIO_FORMAT_ALAW,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Aliases */
 | 
						/* Aliases */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* DSP formats */
 | 
						/* DSP formats */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,6 +73,9 @@ static const struct spa_type_info spa_type_audio_format[] = {
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64LE", NULL },
 | 
						{ SPA_AUDIO_FORMAT_F64_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64LE", NULL },
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64BE", NULL },
 | 
						{ SPA_AUDIO_FORMAT_F64_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64BE", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_ULAW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ULAW", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_ALAW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ALAW", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U8P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U8P", NULL },
 | 
						{ SPA_AUDIO_FORMAT_U8P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U8P", NULL },
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16P", NULL },
 | 
						{ SPA_AUDIO_FORMAT_S16P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16P", NULL },
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_32P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32P", NULL },
 | 
						{ SPA_AUDIO_FORMAT_S24_32P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32P", NULL },
 | 
				
			||||||
| 
						 | 
					@ -82,9 +85,6 @@ static const struct spa_type_info spa_type_audio_format[] = {
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64P", NULL },
 | 
						{ SPA_AUDIO_FORMAT_F64P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64P", NULL },
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S8P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S8P", NULL },
 | 
						{ SPA_AUDIO_FORMAT_S8P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S8P", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_ULAW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ULAW", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_ALAW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ALAW", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if __BYTE_ORDER == __BIG_ENDIAN
 | 
					#if __BYTE_ORDER == __BIG_ENDIAN
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16OE", NULL },
 | 
						{ SPA_AUDIO_FORMAT_S16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16OE", NULL },
 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16", NULL },
 | 
						{ SPA_AUDIO_FORMAT_S16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16", NULL },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -215,7 +215,7 @@ void
 | 
				
			||||||
conv_alaw_to_f32d_c(struct convert *conv, void * SPA_RESTRICT dst[], const void * SPA_RESTRICT src[],
 | 
					conv_alaw_to_f32d_c(struct convert *conv, void * SPA_RESTRICT dst[], const void * SPA_RESTRICT src[],
 | 
				
			||||||
		uint32_t n_samples)
 | 
							uint32_t n_samples)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const int8_t *s = src[0];
 | 
						const uint8_t *s = src[0];
 | 
				
			||||||
	float **d = (float **) dst;
 | 
						float **d = (float **) dst;
 | 
				
			||||||
	uint32_t i, j, n_channels = conv->n_channels;
 | 
						uint32_t i, j, n_channels = conv->n_channels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -229,7 +229,7 @@ void
 | 
				
			||||||
conv_ulaw_to_f32d_c(struct convert *conv, void * SPA_RESTRICT dst[], const void * SPA_RESTRICT src[],
 | 
					conv_ulaw_to_f32d_c(struct convert *conv, void * SPA_RESTRICT dst[], const void * SPA_RESTRICT src[],
 | 
				
			||||||
		uint32_t n_samples)
 | 
							uint32_t n_samples)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const int8_t *s = src[0];
 | 
						const uint8_t *s = src[0];
 | 
				
			||||||
	float **d = (float **) dst;
 | 
						float **d = (float **) dst;
 | 
				
			||||||
	uint32_t i, j, n_channels = conv->n_channels;
 | 
						uint32_t i, j, n_channels = conv->n_channels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -287,7 +287,7 @@ static int sf_playback_fill_x8(struct data *d, void *dest, unsigned int n_frames
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	sf_count_t rn;
 | 
						sf_count_t rn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rn = sf_read_raw(d->file, dest, n_frames);
 | 
						rn = sf_read_raw(d->file, dest, n_frames * d->stride);
 | 
				
			||||||
	return (int)rn;
 | 
						return (int)rn;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -371,7 +371,7 @@ static int sf_record_fill_x8(struct data *d, void *src, unsigned int n_frames)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	sf_count_t rn;
 | 
						sf_count_t rn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rn = sf_write_raw(d->file, src, n_frames);
 | 
						rn = sf_write_raw(d->file, src, n_frames * d->stride);
 | 
				
			||||||
	return (int)rn;
 | 
						return (int)rn;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue