2 #ifndef __GSL_DATA_UTILS_H__
3 #define __GSL_DATA_UTILS_H__
11 #define GSL_DATA_HANDLE_PEEK_BUFFER (2048)
17 gfloat data[GSL_DATA_HANDLE_PEEK_BUFFER];
29 gboolean gsl_data_detect_signal (GslDataHandle *handle,
32 GslLong gsl_data_find_sample (GslDataHandle *dhandle,
37 gboolean gsl_data_find_tailmatch (GslDataHandle *dhandle,
39 GslLong *loop_start_p,
49 double gsl_data_find_min_max (GslDataHandle *handle,
55 static inline gfloat gsl_data_handle_peek_value (GslDataHandle *dhandle,
58 gint gsl_data_handle_dump (GslDataHandle *dhandle,
60 GslWaveFormatType format,
62 gint gsl_data_handle_dump_wav (GslDataHandle *dhandle,
67 void gsl_data_handle_dump_wstore(GslDataHandle *dhandle,
69 GslWaveFormatType format,
71 gint bse_wave_file_dump_header (gint fd,
76 gint bse_wave_file_patch_length (gint fd,
78 gint bse_wave_file_dump_data (gint fd,
81 const gfloat *values);
82 gint bse_wave_file_from_fbuffer (
const char *file_name,
87 const gfloat *values);
88 gint bse_wave_file_from_dbuffer (
const char *file_name,
93 const gdouble *values);
96 static inline guint gsl_conv_from_float (GslWaveFormatType format,
101 static inline guint gsl_conv_from_float_clip (GslWaveFormatType format,
106 static inline void gsl_conv_to_float (GslWaveFormatType format,
111 static inline guint gsl_conv_from_double (GslWaveFormatType format,
116 static inline guint gsl_conv_from_double_clip (GslWaveFormatType format,
121 static inline void gsl_conv_to_double (GslWaveFormatType format,
126 static inline gint16 gsl_alaw_to_pcm (gint8 alawv);
127 static inline gint16 gsl_ulaw_to_pcm (gint8 ulawv);
133 guint produce_info : 1;
143 GslDataHandle *dhandle;
144 guint clipped_to_0length : 1;
145 guint head_detected : 1;
146 guint tail_detected : 1;
147 guint clipped_head : 1;
148 guint clipped_tail : 1;
158 gfloat gsl_data_peek_value_f (GslDataHandle *dhandle,
163 gsl_data_handle_peek_value (GslDataHandle *dhandle,
167 return (position >= peekbuf->start && position < peekbuf->end ?
168 peekbuf->data[position - peekbuf->start] :
169 gsl_data_peek_value_f (dhandle, position, peekbuf));
172 #define GSL_CONV_FORMAT(format, endian_flag) (((endian_flag) << 16) | ((format) & 0xffff))
175 gsl_conv_from_float (GslWaveFormatType format,
181 gint8 *i8 = (gint8*) dest;
182 guint8 *u8 = (guint8*) dest;
183 gint16 *i16 = (gint16*) dest;
184 guint16 *u16 = (guint16*) dest;
185 gint32 *i32 = (gint32*) dest;
186 guint32 *u32dest = (guint32*) dest;
187 const gfloat *bound = src + n_values;
188 const guint32 *u32src = (guint32*) src, *u32bound = (
const guint32*) bound;
193 switch (GSL_CONV_FORMAT (format, byte_order == G_BYTE_ORDER))
200 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
201 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
203 *u8++ = bse_dtoi (*src++ * 128. + 128);
206 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
207 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
208 bse_fpu_setround (&fpu);
213 *i8++ = bse_dtoi (v);
216 bse_fpu_restore (fpu);
218 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
220 *u16++ = bse_dtoi (*src++ * 2048. + 2048);
222 return n_values << 1;
223 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
226 vu16 = bse_dtoi (*src++ * 2048. + 2048);
227 *u16++ = GUINT16_SWAP_LE_BE (vu16);
230 return n_values << 1;
231 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
232 bse_fpu_setround (&fpu);
237 *i16++ = bse_dtoi (v);
240 bse_fpu_restore (fpu);
241 return n_values << 1;
242 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
243 bse_fpu_setround (&fpu);
249 *i16++ = GUINT16_SWAP_LE_BE (vi16);
252 bse_fpu_restore (fpu);
253 return n_values << 1;
254 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
256 *u16++ = bse_dtoi (*src++ * 32768. + 32768);
258 return n_values << 1;
259 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
262 vu16 = bse_dtoi (*src++ * 32768. + 32768);
263 *u16++ = GUINT16_SWAP_LE_BE (vu16);
266 return n_values << 1;
267 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
268 bse_fpu_setround (&fpu);
273 *i16++ = bse_dtoi (v);
276 bse_fpu_restore (fpu);
277 return n_values << 1;
278 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
279 bse_fpu_setround (&fpu);
285 *i16++ = GUINT16_SWAP_LE_BE (vi16);
288 bse_fpu_restore (fpu);
289 return n_values << 1;
290 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER == G_BYTE_ORDER):
291 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER != G_BYTE_ORDER):
292 bse_fpu_setround (&fpu);
293 if (byte_order == G_LITTLE_ENDIAN)
298 gint32 vi32 = bse_dtoi (v);
301 *((gint8*) u8) = vi32 >> 16;
310 gint32 vi32 = bse_dtoi (v);
311 *((gint8*) u8) = vi32 >> 16;
317 bse_fpu_restore (fpu);
319 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER == G_BYTE_ORDER):
320 bse_fpu_setround (&fpu);
325 *i32++ = bse_dtoi (v);
328 bse_fpu_restore (fpu);
330 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER != G_BYTE_ORDER):
331 bse_fpu_setround (&fpu);
336 gint32 vi32 = bse_dtoi (v);
337 *i32++ = GUINT32_SWAP_LE_BE (vi32);
340 bse_fpu_restore (fpu);
342 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER == G_BYTE_ORDER):
343 bse_fpu_setround (&fpu);
348 *i32++ = bse_dtoi (v);
351 bse_fpu_restore (fpu);
353 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER != G_BYTE_ORDER):
354 bse_fpu_setround (&fpu);
359 gint32 vi32 = bse_dtoi (v);
360 *i32++ = GUINT32_SWAP_LE_BE (vi32);
363 bse_fpu_restore (fpu);
365 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER == G_BYTE_ORDER):
367 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER != G_BYTE_ORDER):
371 *u32dest++ = GUINT32_SWAP_LE_BE (vu32);
373 while (u32src < u32bound);
376 g_assert_not_reached ();
382 gsl_conv_from_float_clip (GslWaveFormatType format,
388 gint8 *i8 = (gint8*) dest;
389 guint8 *u8 = (guint8*) dest;
390 gint16 *i16 = (gint16*) dest;
391 guint16 *u16 = (guint16*) dest;
392 gint32 *i32 = (gint32*) dest;
393 guint32 *u32dest = (guint32*) dest;
394 const gfloat *bound = src + n_values;
395 const guint32 *u32src = (
const guint32*) src, *u32bound = (
const guint32*) bound;
400 switch (GSL_CONV_FORMAT (format, byte_order == G_BYTE_ORDER))
406 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
407 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
410 vi32 = bse_dtoi (*src++ * 128. + 128);
411 *u8++ = CLAMP (vi32, 0, 255);
415 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
416 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
417 bse_fpu_setround (&fpu);
423 *i8++ = CLAMP (vi32, -128, 127);
426 bse_fpu_restore (fpu);
428 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
431 vi32 = bse_dtoi (*src++ * 2048. + 2048);
432 *u16++ = CLAMP (vi32, 0, 4095);
435 return n_values << 1;
436 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
439 vi32 = bse_dtoi (*src++ * 2048. + 2048);
440 vi32 = CLAMP (vi32, 0, 4095);
441 *u16++ = GUINT16_SWAP_LE_BE (vi32);
444 return n_values << 1;
445 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
446 bse_fpu_setround (&fpu);
452 *i16++ = CLAMP (vi32, -2048, 2047);
455 bse_fpu_restore (fpu);
456 return n_values << 1;
457 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
458 bse_fpu_setround (&fpu);
464 vi32 = CLAMP (vi32, -2048, 2047);
465 *i16++ = GUINT16_SWAP_LE_BE (vi32);
468 bse_fpu_restore (fpu);
469 return n_values << 1;
470 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
473 vi32 = bse_dtoi (*src++ * 32768. + 32768);
474 *u16++ = CLAMP (vi32, 0, 65535);
477 return n_values << 1;
478 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
481 vi32 = bse_dtoi (*src++ * 32768. + 32768);
482 vi32 = CLAMP (vi32, 0, 65535);
483 *u16++ = GUINT16_SWAP_LE_BE (vi32);
486 return n_values << 1;
487 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
488 bse_fpu_setround (&fpu);
494 vi32 = CLAMP (vi32, -32768, 32767);
498 bse_fpu_restore (fpu);
499 return n_values << 1;
500 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
501 bse_fpu_setround (&fpu);
507 vi32 = CLAMP (vi32, -32768, 32767);
508 *i16++ = GUINT16_SWAP_LE_BE (vi32);
511 bse_fpu_restore (fpu);
512 return n_values << 1;
513 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER == G_BYTE_ORDER):
514 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER != G_BYTE_ORDER):
515 bse_fpu_setround (&fpu);
516 if (byte_order == G_LITTLE_ENDIAN)
521 gint32 vi32 = bse_dtoi (v);
522 vi32 = CLAMP (vi32, -8388608, 8388607);
525 *((gint8*) u8) = vi32 >> 16;
534 gint32 vi32 = bse_dtoi (v);
535 vi32 = CLAMP (vi32, -8388608, 8388607);
536 *((gint8*) u8) = vi32 >> 16;
542 bse_fpu_restore (fpu);
544 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER == G_BYTE_ORDER):
545 bse_fpu_setround (&fpu);
551 vi32 = CLAMP (vi32, -8388608, 8388607);
555 bse_fpu_restore (fpu);
557 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER != G_BYTE_ORDER):
558 bse_fpu_setround (&fpu);
564 vi32 = CLAMP (vi32, -8388608, 8388607);
565 *i32++ = GUINT32_SWAP_LE_BE (vi32);
568 bse_fpu_restore (fpu);
570 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER == G_BYTE_ORDER):
571 bse_fpu_setround (&fpu);
581 bse_fpu_restore (fpu);
583 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER != G_BYTE_ORDER):
584 bse_fpu_setround (&fpu);
591 *i32++ = GUINT32_SWAP_LE_BE (vi32);
594 bse_fpu_restore (fpu);
596 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER == G_BYTE_ORDER):
597 return n_values << 2;
598 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER != G_BYTE_ORDER):
602 *u32dest++ = GUINT32_SWAP_LE_BE (vu32);
604 while (u32src < u32bound);
605 return n_values << 2;
607 g_assert_not_reached ();
612 #define GSL_ALAW_MAX (0x7e00)
614 gsl_alaw_to_pcm (gint8 alawv)
616 static const short alaw2pcm_table[128] = {
617 0x1580, 0x1480, 0x1780, 0x1680, 0x1180, 0x1080, 0x1380, 0x1280,
618 0x1d80, 0x1c80, 0x1f80, 0x1e80, 0x1980, 0x1880, 0x1b80, 0x1a80,
619 0x0ac0, 0x0a40, 0x0bc0, 0x0b40, 0x08c0, 0x0840, 0x09c0, 0x0940,
620 0x0ec0, 0x0e40, 0x0fc0, 0x0f40, 0x0cc0, 0x0c40, 0x0dc0, 0x0d40,
621 0x5600, 0x5200, 0x5e00, 0x5a00, 0x4600, 0x4200, 0x4e00, 0x4a00,
622 0x7600, 0x7200, 0x7e00, 0x7a00, 0x6600, 0x6200, 0x6e00, 0x6a00,
623 0x2b00, 0x2900, 0x2f00, 0x2d00, 0x2300, 0x2100, 0x2700, 0x2500,
624 0x3b00, 0x3900, 0x3f00, 0x3d00, 0x3300, 0x3100, 0x3700, 0x3500,
625 0x0158, 0x0148, 0x0178, 0x0168, 0x0118, 0x0108, 0x0138, 0x0128,
626 0x01d8, 0x01c8, 0x01f8, 0x01e8, 0x0198, 0x0188, 0x01b8, 0x01a8,
627 0x0058, 0x0048, 0x0078, 0x0068, 0x0018, 0x0008, 0x0038, 0x0028,
628 0x00d8, 0x00c8, 0x00f8, 0x00e8, 0x0098, 0x0088, 0x00b8, 0x00a8,
629 0x0560, 0x0520, 0x05e0, 0x05a0, 0x0460, 0x0420, 0x04e0, 0x04a0,
630 0x0760, 0x0720, 0x07e0, 0x07a0, 0x0660, 0x0620, 0x06e0, 0x06a0,
631 0x02b0, 0x0290, 0x02f0, 0x02d0, 0x0230, 0x0210, 0x0270, 0x0250,
632 0x03b0, 0x0390, 0x03f0, 0x03d0, 0x0330, 0x0310, 0x0370, 0x0350,
634 return alawv < 0 ? alaw2pcm_table[128 + alawv] : -alaw2pcm_table[alawv];
637 #define GSL_ULAW_MAX (0x7d7c)
639 gsl_ulaw_to_pcm (gint8 ulawv)
641 static const short ulaw2pcm_table[128] = {
642 0x7d7c, 0x797c, 0x757c, 0x717c, 0x6d7c, 0x697c, 0x657c, 0x617c,
643 0x5d7c, 0x597c, 0x557c, 0x517c, 0x4d7c, 0x497c, 0x457c, 0x417c,
644 0x3e7c, 0x3c7c, 0x3a7c, 0x387c, 0x367c, 0x347c, 0x327c, 0x307c,
645 0x2e7c, 0x2c7c, 0x2a7c, 0x287c, 0x267c, 0x247c, 0x227c, 0x207c,
646 0x1efc, 0x1dfc, 0x1cfc, 0x1bfc, 0x1afc, 0x19fc, 0x18fc, 0x17fc,
647 0x16fc, 0x15fc, 0x14fc, 0x13fc, 0x12fc, 0x11fc, 0x10fc, 0x0ffc,
648 0x0f3c, 0x0ebc, 0x0e3c, 0x0dbc, 0x0d3c, 0x0cbc, 0x0c3c, 0x0bbc,
649 0x0b3c, 0x0abc, 0x0a3c, 0x09bc, 0x093c, 0x08bc, 0x083c, 0x07bc,
650 0x075c, 0x071c, 0x06dc, 0x069c, 0x065c, 0x061c, 0x05dc, 0x059c,
651 0x055c, 0x051c, 0x04dc, 0x049c, 0x045c, 0x041c, 0x03dc, 0x039c,
652 0x036c, 0x034c, 0x032c, 0x030c, 0x02ec, 0x02cc, 0x02ac, 0x028c,
653 0x026c, 0x024c, 0x022c, 0x020c, 0x01ec, 0x01cc, 0x01ac, 0x018c,
654 0x0174, 0x0164, 0x0154, 0x0144, 0x0134, 0x0124, 0x0114, 0x0104,
655 0x00f4, 0x00e4, 0x00d4, 0x00c4, 0x00b4, 0x00a4, 0x0094, 0x0084,
656 0x0078, 0x0070, 0x0068, 0x0060, 0x0058, 0x0050, 0x0048, 0x0040,
657 0x0038, 0x0030, 0x0028, 0x0020, 0x0018, 0x0010, 0x0008, 0x0000,
659 return ulawv < 0 ? ulaw2pcm_table[128 + ulawv] : -ulaw2pcm_table[ulawv];
663 gsl_conv_to_float (GslWaveFormatType format,
669 const guint8 *u8 = (guint8*) src;
670 const gint8 *i8 = (gint8*) src;
671 const guint16 *u16 = (guint16*) src;
672 const gint16 *i16 = (gint16*) src;
673 const gint32 *i32 = (gint32*) src;
674 const guint32 *u32src = (guint32*) src;
675 gfloat *bound = dest + n_values;
676 guint32 *u32dest = (guint32*) dest, *u32bound = (guint32*) bound;
681 switch (GSL_CONV_FORMAT (format, byte_order == G_BYTE_ORDER))
686 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
687 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
689 *dest++ = (*u8++ - 128) * (1. / 128.);
690 while (dest < bound);
692 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
693 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
695 *dest++ = *i8++ * (1. / 128.);
696 while (dest < bound);
698 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_ALAW, G_BYTE_ORDER == G_BYTE_ORDER):
699 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_ALAW, G_BYTE_ORDER != G_BYTE_ORDER):
701 *dest++ = gsl_alaw_to_pcm (*i8++) * (1.0 / GSL_ALAW_MAX);
702 while (dest < bound);
704 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_ULAW, G_BYTE_ORDER == G_BYTE_ORDER):
705 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_ULAW, G_BYTE_ORDER != G_BYTE_ORDER):
707 *dest++ = gsl_ulaw_to_pcm (*i8++) * (1.0 / GSL_ULAW_MAX);
708 while (dest < bound);
710 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
712 *dest++ = ((*u16++ & 0x0fff) - 2048) * (1. / 2048.);
713 while (dest < bound);
715 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
719 *dest++ = ((GUINT16_SWAP_LE_BE (vu16) & 0x0fff) - 2048) * (1. / 2048.);
721 while (dest < bound);
723 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
727 *dest++ = CLAMP (vi16, -2048, 2048) * (1. / 2048.);
729 while (dest < bound);
731 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
735 vi16 = GUINT16_SWAP_LE_BE (vi16);
736 *dest++ = CLAMP (vi16, -2048, 2048) * (1. / 2048.);
738 while (dest < bound);
740 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
742 *dest++ = (*u16++ - 32768) * (1. / 32768.);
743 while (dest < bound);
745 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
749 *dest++ = (GUINT16_SWAP_LE_BE (vu16) - 32768) * (1. / 32768.);
751 while (dest < bound);
753 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
755 *dest++ = *i16++ * (1. / 32768.);
756 while (dest < bound);
758 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
762 *dest++ = GUINT16_SWAP_LE_BE (vi16) * (1. / 32768.);
764 while (dest < bound);
766 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER == G_BYTE_ORDER):
767 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER != G_BYTE_ORDER):
768 if (byte_order == G_LITTLE_ENDIAN)
773 v32 |= *((gint8*) u8) << 16;
775 *dest++ = v32 * (1. / 8388608.);
777 while (dest < bound);
781 gint32 v32 = *((gint8*) u8) << 16;
785 *dest++ = v32 * (1. / 8388608.);
787 while (dest < bound);
789 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER == G_BYTE_ORDER):
791 *dest++ = *i32++ * (1. / 8388608.);
792 while (dest < bound);
794 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER != G_BYTE_ORDER):
797 gint32 vi32 = *i32++;
798 *dest++ = GUINT32_SWAP_LE_BE (vi32) * (1. / 8388608.);
800 while (dest < bound);
802 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER == G_BYTE_ORDER):
804 *dest++ = *i32++ * (1. / 2147483648.);
805 while (dest < bound);
807 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER != G_BYTE_ORDER):
810 gint32 vi32 = *i32++;
811 *dest++ = GUINT32_SWAP_LE_BE (vi32) * (1. / 2147483648.);
813 while (dest < bound);
815 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER == G_BYTE_ORDER):
817 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER != G_BYTE_ORDER):
821 *u32dest++ = GUINT32_SWAP_LE_BE (vu32);
823 while (u32dest < u32bound);
826 g_assert_not_reached ();
832 gsl_conv_from_double (GslWaveFormatType format,
838 gint8 *i8 = (gint8*) dest;
839 guint8 *u8 = (guint8*) dest;
840 gint16 *i16 = (gint16*) dest;
841 guint16 *u16 = (guint16*) dest;
842 guint32 *u32dest = (guint32*) dest;
843 gint32 *i32 = (gint32*) dest;
844 const gdouble *bound = src + n_values;
845 const guint32 *u32src = (
const guint32*) src, *u32bound = (
const guint32*) bound;
850 switch (GSL_CONV_FORMAT (format, byte_order == G_BYTE_ORDER))
857 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
858 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
860 *u8++ = bse_dtoi (*src++ * 128. + 128);
863 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
864 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
865 bse_fpu_setround (&fpu);
870 *i8++ = bse_dtoi (v);
873 bse_fpu_restore (fpu);
875 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
877 *u16++ = bse_dtoi (*src++ * 2048. + 2048);
879 return n_values << 1;
880 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
883 vu16 = bse_dtoi (*src++ * 2048. + 2048);
884 *u16++ = GUINT16_SWAP_LE_BE (vu16);
887 return n_values << 1;
888 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
889 bse_fpu_setround (&fpu);
894 *i16++ = bse_dtoi (v);
897 bse_fpu_restore (fpu);
898 return n_values << 1;
899 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
900 bse_fpu_setround (&fpu);
906 *i16++ = GUINT16_SWAP_LE_BE (vi16);
909 bse_fpu_restore (fpu);
910 return n_values << 1;
911 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
913 *u16++ = bse_dtoi (*src++ * 32768. + 32768);
915 return n_values << 1;
916 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
919 vu16 = bse_dtoi (*src++ * 32768. + 32768);
920 *u16++ = GUINT16_SWAP_LE_BE (vu16);
923 return n_values << 1;
924 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
925 bse_fpu_setround (&fpu);
930 *i16++ = bse_dtoi (v);
933 bse_fpu_restore (fpu);
934 return n_values << 1;
935 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
936 bse_fpu_setround (&fpu);
942 *i16++ = GUINT16_SWAP_LE_BE (vi16);
945 bse_fpu_restore (fpu);
946 return n_values << 1;
947 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER == G_BYTE_ORDER):
948 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER != G_BYTE_ORDER):
949 bse_fpu_setround (&fpu);
950 if (byte_order == G_LITTLE_ENDIAN)
955 gint32 vi32 = bse_dtoi (v);
958 *((gint8*) u8) = vi32 >> 16;
967 gint32 vi32 = bse_dtoi (v);
968 *((gint8*) u8) = vi32 >> 16;
974 bse_fpu_restore (fpu);
976 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER == G_BYTE_ORDER):
977 bse_fpu_setround (&fpu);
982 *i32++ = bse_dtoi (v);
985 bse_fpu_restore (fpu);
987 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER != G_BYTE_ORDER):
988 bse_fpu_setround (&fpu);
993 gint32 vi32 = bse_dtoi (v);
994 *i32++ = GUINT32_SWAP_LE_BE (vi32);
997 bse_fpu_restore (fpu);
999 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER == G_BYTE_ORDER):
1000 bse_fpu_setround (&fpu);
1005 *i32++ = bse_dtoi (v);
1007 while (src < bound);
1008 bse_fpu_restore (fpu);
1009 return n_values * 4;
1010 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER != G_BYTE_ORDER):
1011 bse_fpu_setround (&fpu);
1016 gint32 vi32 = bse_dtoi (v);
1017 *i32++ = GUINT32_SWAP_LE_BE (vi32);
1019 while (src < bound);
1020 bse_fpu_restore (fpu);
1021 return n_values * 4;
1022 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER == G_BYTE_ORDER):
1023 return n_values << 2;
1024 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER != G_BYTE_ORDER):
1028 *u32dest++ = GUINT32_SWAP_LE_BE (vu32);
1030 while (u32src < u32bound);
1031 return n_values << 2;
1033 g_assert_not_reached ();
1039 gsl_conv_from_double_clip (GslWaveFormatType format,
1045 gint8 *i8 = (gint8*) dest;
1046 guint8 *u8 = (guint8*) dest;
1047 gint16 *i16 = (gint16*) dest;
1048 guint16 *u16 = (guint16*) dest;
1049 guint32 *u32dest = (guint32*) dest;
1050 gint32 *i32 = (gint32*) dest;
1051 const gdouble *bound = src + n_values;
1052 const guint32 *u32src = (
const guint32*) src, *u32bound = (
const guint32*) bound;
1057 switch (GSL_CONV_FORMAT (format, byte_order == G_BYTE_ORDER))
1063 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
1064 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
1067 vi32 = bse_dtoi (*src++ * 128. + 128);
1068 *u8++ = CLAMP (vi32, 0, 255);
1070 while (src < bound);
1072 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
1073 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
1074 bse_fpu_setround (&fpu);
1079 vi32 = bse_dtoi (v);
1080 *i8++ = CLAMP (vi32, -128, 127);
1082 while (src < bound);
1083 bse_fpu_restore (fpu);
1085 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
1088 vi32 = bse_dtoi (*src++ * 2048. + 2048);
1089 *u16++ = CLAMP (vi32, 0, 4095);
1091 while (src < bound);
1092 return n_values << 1;
1093 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
1096 vi32 = bse_dtoi (*src++ * 2048. + 2048);
1097 vi32 = CLAMP (vi32, 0, 4095);
1098 *u16++ = GUINT16_SWAP_LE_BE (vi32);
1100 while (src < bound);
1101 return n_values << 1;
1102 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
1103 bse_fpu_setround (&fpu);
1108 vi32 = bse_dtoi (v);
1109 *i16++ = CLAMP (vi32, -2048, 2047);
1111 while (src < bound);
1112 bse_fpu_restore (fpu);
1113 return n_values << 1;
1114 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
1115 bse_fpu_setround (&fpu);
1120 vi32 = bse_dtoi (v);
1121 vi32 = CLAMP (vi32, -2048, 2047);
1122 *i16++ = GUINT16_SWAP_LE_BE (vi32);
1124 while (src < bound);
1125 bse_fpu_restore (fpu);
1126 return n_values << 1;
1127 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
1130 vi32 = bse_dtoi (*src++ * 32768. + 32768);
1131 *u16++ = CLAMP (vi32, 0, 65535);
1133 while (src < bound);
1134 return n_values << 1;
1135 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
1138 vi32 = bse_dtoi (*src++ * 32768. + 32768);
1139 vi32 = CLAMP (vi32, 0, 65535);
1140 *u16++ = GUINT16_SWAP_LE_BE (vi32);
1142 while (src < bound);
1143 return n_values << 1;
1144 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
1145 bse_fpu_setround (&fpu);
1150 vi32 = bse_dtoi (v);
1151 vi32 = CLAMP (vi32, -32768, 32767);
1154 while (src < bound);
1155 bse_fpu_restore (fpu);
1156 return n_values << 1;
1157 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
1158 bse_fpu_setround (&fpu);
1163 vi32 = bse_dtoi (v);
1164 vi32 = CLAMP (vi32, -32768, 32767);
1165 *i16++ = GUINT16_SWAP_LE_BE (vi32);
1167 while (src < bound);
1168 bse_fpu_restore (fpu);
1169 return n_values << 1;
1170 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER == G_BYTE_ORDER):
1171 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER != G_BYTE_ORDER):
1172 bse_fpu_setround (&fpu);
1173 if (byte_order == G_LITTLE_ENDIAN)
1178 gint32 vi32 = bse_dtoi (v);
1179 vi32 = CLAMP (vi32, -8388608, 8388607);
1182 *((gint8*) u8) = vi32 >> 16;
1185 while (src < bound);
1191 gint32 vi32 = bse_dtoi (v);
1192 vi32 = CLAMP (vi32, -8388608, 8388607);
1193 *((gint8*) u8) = vi32 >> 16;
1198 while (src < bound);
1199 bse_fpu_restore (fpu);
1200 return n_values * 3;
1201 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER == G_BYTE_ORDER):
1202 bse_fpu_setround (&fpu);
1207 vi32 = bse_dtoi (v);
1208 vi32 = CLAMP (vi32, -8388608, 8388607);
1211 while (src < bound);
1212 bse_fpu_restore (fpu);
1213 return n_values * 4;
1214 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER != G_BYTE_ORDER):
1215 bse_fpu_setround (&fpu);
1220 vi32 = bse_dtoi (v);
1221 vi32 = CLAMP (vi32, -8388608, 8388607);
1222 *i32++ = GUINT32_SWAP_LE_BE (vi32);
1224 while (src < bound);
1225 bse_fpu_restore (fpu);
1226 return n_values * 4;
1227 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER == G_BYTE_ORDER):
1228 bse_fpu_setround (&fpu);
1233 vi32 = bse_dtoi (v);
1237 while (src < bound);
1238 bse_fpu_restore (fpu);
1239 return n_values * 4;
1240 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER != G_BYTE_ORDER):
1241 bse_fpu_setround (&fpu);
1246 vi32 = bse_dtoi (v);
1248 *i32++ = GUINT32_SWAP_LE_BE (vi32);
1250 while (src < bound);
1251 bse_fpu_restore (fpu);
1252 return n_values * 4;
1253 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER == G_BYTE_ORDER):
1254 return n_values << 2;
1255 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER != G_BYTE_ORDER):
1259 *u32dest++ = GUINT32_SWAP_LE_BE (vu32);
1261 while (u32src < u32bound);
1262 return n_values << 2;
1264 g_assert_not_reached ();
1270 gsl_conv_to_double (GslWaveFormatType format,
1276 const guint8 *u8 = (guint8*) src;
1277 const gint8 *i8 = (gint8*) src;
1278 const guint16 *u16 = (guint16*) src;
1279 const gint16 *i16 = (gint16*) src;
1280 const guint32 *u32src = (guint32*) src;
1281 const gint32 *i32 = (gint32*) src;
1282 gdouble *bound = dest + n_values;
1283 guint32 *u32dest = (guint32*) dest, *u32bound = (guint32*) bound;
1288 switch (GSL_CONV_FORMAT (format, byte_order == G_BYTE_ORDER))
1293 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
1294 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
1296 *dest++ = (*u8++ - 128) * (1. / 128.);
1297 while (dest < bound);
1299 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER == G_BYTE_ORDER):
1300 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_8, G_BYTE_ORDER != G_BYTE_ORDER):
1302 *dest++ = *i8++ * (1. / 128.);
1303 while (dest < bound);
1305 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_ALAW, G_BYTE_ORDER == G_BYTE_ORDER):
1306 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_ALAW, G_BYTE_ORDER != G_BYTE_ORDER):
1308 *dest++ = gsl_alaw_to_pcm (*i8++) * (1.0 / GSL_ALAW_MAX);
1309 while (dest < bound);
1311 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_ULAW, G_BYTE_ORDER == G_BYTE_ORDER):
1312 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_ULAW, G_BYTE_ORDER != G_BYTE_ORDER):
1314 *dest++ = gsl_ulaw_to_pcm (*i8++) * (1.0 / GSL_ULAW_MAX);
1315 while (dest < bound);
1317 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
1319 *dest++ = ((*u16++ & 0x0fff) - 2048) * (1. / 2048.);
1320 while (dest < bound);
1322 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
1326 *dest++ = ((GUINT16_SWAP_LE_BE (vu16) & 0x0fff) - 2048) * (1. / 2048.);
1328 while (dest < bound);
1330 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER == G_BYTE_ORDER):
1334 *dest++ = CLAMP (vi16, -2048, 2048) * (1. / 2048.);
1336 while (dest < bound);
1338 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_12, G_BYTE_ORDER != G_BYTE_ORDER):
1342 vi16 = GUINT16_SWAP_LE_BE (vi16);
1343 *dest++ = CLAMP (vi16, -2048, 2048) * (1. / 2048.);
1345 while (dest < bound);
1347 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
1349 *dest++ = (*u16++ - 32768) * (1. / 32768.);
1350 while (dest < bound);
1352 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_UNSIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
1356 *dest++ = (GUINT16_SWAP_LE_BE (vu16) - 32768) * (1. / 32768.);
1358 while (dest < bound);
1360 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER == G_BYTE_ORDER):
1362 *dest++ = *i16++ * (1. / 32768.);
1363 while (dest < bound);
1365 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_16, G_BYTE_ORDER != G_BYTE_ORDER):
1369 *dest++ = GUINT16_SWAP_LE_BE (vi16) * (1. / 32768.);
1371 while (dest < bound);
1373 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER == G_BYTE_ORDER):
1374 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24, G_BYTE_ORDER != G_BYTE_ORDER):
1375 if (byte_order == G_LITTLE_ENDIAN)
1380 v32 |= *((gint8*) u8) << 16;
1382 *dest++ = v32 * (1. / 8388608.);
1384 while (dest < bound);
1388 gint32 v32 = *((gint8*) u8) << 16;
1392 *dest++ = v32 * (1. / 8388608.);
1394 while (dest < bound);
1396 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER == G_BYTE_ORDER):
1398 *dest++ = *i32++ * (1. / 8388608.);
1399 while (dest < bound);
1401 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_24_PAD4, G_BYTE_ORDER != G_BYTE_ORDER):
1404 gint32 vi32 = *i32++;
1405 *dest++ = GUINT32_SWAP_LE_BE (vi32) * (1. / 8388608.);
1407 while (dest < bound);
1409 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER == G_BYTE_ORDER):
1411 *dest++ = *i32++ * (1. / 2147483648.);
1412 while (dest < bound);
1414 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_SIGNED_32, G_BYTE_ORDER != G_BYTE_ORDER):
1417 gint32 vi32 = *i32++;
1418 *dest++ = GUINT32_SWAP_LE_BE (vi32) * (1. / 2147483648.);
1420 while (dest < bound);
1422 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER == G_BYTE_ORDER):
1424 case GSL_CONV_FORMAT (GSL_WAVE_FORMAT_FLOAT, G_BYTE_ORDER != G_BYTE_ORDER):
1428 *u32dest++ = GUINT32_SWAP_LE_BE (vu32);
1430 while (u32dest < u32bound);
1433 g_assert_not_reached ();
gfloat * gsl_data_make_fade_ramp(GslDataHandle *handle, GslLong min_pos, GslLong max_pos, GslLong *length_p)
Definition: gsldatautils.cc:700
Definition: gsldatautils.hh:141
Definition: gsldatautils.hh:12
Definition: gsldatautils.hh:19
BseErrorType gsl_data_clip_sample(GslDataHandle *dhandle, GslDataClipConfig *cconfig, GslDataClipResult *result)
Definition: gsldatautils.cc:755
Definition: sfistore.hh:14
GslLong gsl_data_find_block(GslDataHandle *handle, guint n_values, const gfloat *values, gfloat epsilon)
Definition: gsldatautils.cc:654
Definition: gsldatautils.hh:131