libmixed
Loading...
Searching...
No Matches
mixed.h
Go to the documentation of this file.
1#ifndef __LIBMIXED_H__
2#define __LIBMIXED_H__
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#if defined MIXED_STATIC
8# define MIXED_EXPORT
9#elif defined _MSC_VER
10# if defined MIXED_BUILD
11# define MIXED_EXPORT __declspec(dllexport)
12# else
13# define MIXED_EXPORT __declspec(dllimport)
14# endif
15#elif defined __GNUC__
16# if defined MIXED_BUILD
17# define MIXED_EXPORT __attribute__((visibility("default")))
18# else
19# define MIXED_EXPORT
20# endif
21#else
22# define MIXED_EXPORT
23#endif
24#include <stdint.h>
25#include <stdlib.h>
26#include <math.h>
27#include "mixed_encoding.h"
28
35
40
45
52
138
164
399 };
400
428
449
471
484
495
506
542
574
643
711
714 typedef uint8_t mixed_channel_t;
715
718 typedef float mixed_decibel_t;
719
722 typedef float mixed_duration_t;
723
732 float *_data;
733 uint32_t size;
734 uint32_t read;
735 uint32_t write;
736 uint32_t reserved;
740 };
741
754 unsigned char *_data;
755 uint32_t size;
756 uint32_t read;
757 uint32_t write;
758 uint32_t reserved;
767 uint32_t samplerate;
768 };
769
799
833
854 int (*free)(struct mixed_segment *segment);
855 int (*info)(struct mixed_segment_info *info, struct mixed_segment *segment);
856 int (*start)(struct mixed_segment *segment);
857 int (*mix)(struct mixed_segment *segment);
858 int (*end)(struct mixed_segment *segment);
859 int (*set_in)(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment);
860 int (*set_out)(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment);
861 int (*get_in)(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment);
862 int (*get_out)(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment);
863 int (*set)(uint32_t field, void *value, struct mixed_segment *segment);
864 int (*get)(uint32_t field, void *value, struct mixed_segment *segment);
867 void *data;
868 };
869
879 MIXED_EXPORT int mixed_make_pack(uint32_t frames, struct mixed_pack *pack);
880
884
888
892
896
899 MIXED_EXPORT int mixed_pack_request_write(void **area, uint32_t *size, struct mixed_pack *pack);
900
903 MIXED_EXPORT int mixed_pack_finish_write(uint32_t size, struct mixed_pack *pack);
904
907 MIXED_EXPORT int mixed_pack_request_read(void **area, uint32_t *size, struct mixed_pack *pack);
908
911 MIXED_EXPORT int mixed_pack_finish_read(uint32_t size, struct mixed_pack *pack);
912
915 MIXED_EXPORT int mixed_make_buffer(uint32_t size, struct mixed_buffer *buffer);
916
920
932 MIXED_EXPORT int mixed_buffer_from_pack(struct mixed_pack *in, struct mixed_buffer **outs, float *volume, float target_volume);
933
945 MIXED_EXPORT int mixed_buffer_to_pack(struct mixed_buffer **ins, struct mixed_pack *out, float *volume, float target_volume);
946
955
965
970
974
978
996 MIXED_EXPORT int mixed_buffer_request_write(float **area, uint32_t *size, struct mixed_buffer *buffer);
997
1005 MIXED_EXPORT int mixed_buffer_finish_write(uint32_t size, struct mixed_buffer *buffer);
1006
1017 MIXED_EXPORT int mixed_buffer_request_read(float **area, uint32_t *size, struct mixed_buffer *buffer);
1018
1025 MIXED_EXPORT int mixed_buffer_finish_read(uint32_t size, struct mixed_buffer *buffer);
1026
1031 MIXED_EXPORT int mixed_buffer_resize(uint32_t size, struct mixed_buffer *buffer);
1032
1041#define with_mixed_buffer_transfer(i, samples, inv, in, outv, out, body){ \
1042 uint32_t samples = UINT32_MAX; \
1043 struct mixed_buffer *__in = in; \
1044 struct mixed_buffer *__out = out; \
1045 float *inv, *outv; \
1046 if(__in == __out){ \
1047 mixed_buffer_request_read(&inv, &samples, __in); \
1048 outv = inv; \
1049 for(uint32_t i=0; i<samples; ++i) \
1050 body; \
1051 }else{ \
1052 mixed_buffer_request_read(&inv, &samples, __in); \
1053 mixed_buffer_request_write(&outv, &samples, __out); \
1054 for(uint32_t i=0; i<samples; ++i) \
1055 body; \
1056 mixed_buffer_finish_read(samples, __in); \
1057 mixed_buffer_finish_write(samples, __out); \
1058 } \
1059 }
1060
1071
1077
1086
1092
1103 MIXED_EXPORT int mixed_segment_set_in(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment);
1104
1115 MIXED_EXPORT int mixed_segment_set_out(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment);
1116
1125 MIXED_EXPORT int mixed_segment_get_in(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment);
1126
1135 MIXED_EXPORT int mixed_segment_get_out(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment);
1136
1145
1158 MIXED_EXPORT int mixed_segment_set(uint32_t field, void *value, struct mixed_segment *segment);
1159
1172 MIXED_EXPORT int mixed_segment_get(uint32_t field, void *value, struct mixed_segment *segment);
1173
1184 MIXED_EXPORT int mixed_make_segment_unpacker(struct mixed_pack *packed, uint32_t samplerate, struct mixed_segment *segment);
1185
1196 MIXED_EXPORT int mixed_make_segment_packer(struct mixed_pack *packed, uint32_t samplerate, struct mixed_segment *segment);
1197
1216
1219 MIXED_EXPORT int mixed_make_segment_compressor(uint32_t samplerate, struct mixed_segment *segment);
1220
1230 MIXED_EXPORT int mixed_make_segment_volume_control(float volume, float pan, struct mixed_segment *segment);
1231
1247 MIXED_EXPORT int mixed_make_segment_fade(float from, float to, float time, enum mixed_fade_type type, uint32_t samplerate, struct mixed_segment *segment);
1248
1255 MIXED_EXPORT int mixed_make_segment_generator(enum mixed_generator_type type, uint32_t frequency, uint32_t samplerate, struct mixed_segment *segment);
1256
1303 MIXED_EXPORT int mixed_make_segment_ladspa(char *file, uint32_t index, uint32_t samplerate, struct mixed_segment *segment);
1304
1334 MIXED_EXPORT int mixed_make_segment_space_mixer(uint32_t samplerate, struct mixed_segment *segment);
1335
1363 MIXED_EXPORT int mixed_make_segment_plane_mixer(uint32_t samplerate, struct mixed_segment *segment);
1364
1374 MIXED_EXPORT int mixed_make_segment_delay(float time, uint32_t samplerate, struct mixed_segment *segment);
1375
1384 MIXED_EXPORT int mixed_make_segment_repeat(float time, uint32_t samplerate, struct mixed_segment *segment);
1385
1392 MIXED_EXPORT int mixed_make_segment_pitch(float pitch, uint32_t samplerate, struct mixed_segment *segment);
1393
1402 MIXED_EXPORT int mixed_make_segment_gate(uint32_t samplerate, struct mixed_segment *segment);
1403
1408
1418 MIXED_EXPORT int mixed_make_segment_biquad_filter(enum mixed_biquad_filter type, float frequency, uint32_t samplerate, struct mixed_segment *segment);
1419
1426
1434
1447 MIXED_EXPORT int mixed_make_segment_fwd_fft(uint32_t samplerate, struct mixed_segment *segment);
1448
1459 MIXED_EXPORT int mixed_make_segment_inv_fft(uint32_t samplerate, struct mixed_segment *segment);
1460
1479
1485
1490
1495 MIXED_EXPORT int mixed_queue_remove_at(uint32_t pos, struct mixed_segment *queue);
1496
1499
1503
1507
1512 MIXED_EXPORT int mixed_make_segment_channel_convert(uint8_t in, uint8_t out, uint32_t samplerate, struct mixed_segment *segment);
1513
1518
1522 MIXED_EXPORT int mixed_make_segment_quantize(uint32_t steps, struct mixed_segment *segment);
1523
1528 MIXED_EXPORT int mixed_chain_add(struct mixed_segment *segment, struct mixed_segment *chain);
1529
1534 MIXED_EXPORT int mixed_chain_add_at(uint32_t i, struct mixed_segment *segment, struct mixed_segment *chain);
1535
1542 MIXED_EXPORT int mixed_chain_remove(struct mixed_segment *segment, struct mixed_segment *chain);
1543
1550 MIXED_EXPORT int mixed_chain_remove_at(uint32_t i, struct mixed_segment *chain);
1551
1556 typedef int (*mixed_make_segment_function)(void *args, struct mixed_segment *segment);
1557
1562 typedef int (*mixed_register_segment_function)(char *name, uint32_t argc, struct mixed_segment_field_info *args, mixed_make_segment_function function);
1563
1567 typedef int (*mixed_deregister_segment_function)(char *name);
1568
1574
1580
1589
1596
1598#define MIXED_MAX_MAKE_ARG_COUNT 32
1600#define MIXED_MAX_SEGMENT_COUNT 1024
1602#define MIXED_MAX_SEGMENT_NAME_LENGTH 64
1603
1617 MIXED_EXPORT int mixed_register_segment(char *name, uint32_t argc, struct mixed_segment_field_info *args, mixed_make_segment_function function);
1618
1623
1628 MIXED_EXPORT int mixed_list_segments(uint32_t *count, char **names);
1629
1635 MIXED_EXPORT int mixed_make_segment_info(char *name, uint32_t *argc, const struct mixed_segment_field_info **args);
1636
1642 MIXED_EXPORT int mixed_make_segment(char *name, void *args, struct mixed_segment *segment);
1643
1647
1651
1661 typedef float (*mixed_transfer_function_from)(void *in, float *out, uint8_t stride, uint32_t samples, float volume, float target_volume);
1662
1672 typedef float (*mixed_transfer_function_to)(float *in, void *out, uint8_t stride, uint32_t samples, float volume, float target_volume);
1673
1678
1683
1690 MIXED_EXPORT int mixed_fwd_fft(uint16_t framesize, float *in, float *out);
1691
1698 MIXED_EXPORT int mixed_inv_fft(uint16_t framesize, float *in, float *out);
1699
1701 __attribute__((always_inline)) MIXED_EXPORT inline float mixed_from_db(mixed_decibel_t volume){
1702 return powf(10.0f, 0.05f * volume);
1703 }
1704
1706 __attribute__((always_inline)) MIXED_EXPORT inline mixed_decibel_t mixed_to_db(float volume){
1707 return 20.0f * log10f(volume);
1708 }
1709
1714 MIXED_EXPORT int mixed_error(void);
1715
1720 MIXED_EXPORT char *mixed_error_string(int error_code);
1721
1725
1729
1731#ifdef MIXED_NO_CUSTOM_ALLOCATOR
1732#define mixed_calloc calloc
1733#define mixed_free free
1734#define mixed_realloc realloc
1735#else
1744 MIXED_EXPORT extern void *(*mixed_calloc)(size_t num, size_t size);
1745
1752 MIXED_EXPORT extern void (*mixed_free)(void *ptr);
1753
1767 MIXED_EXPORT extern void *(*mixed_realloc)(void *ptr, size_t size);
1768#endif
1769
1770#ifdef __cplusplus
1771}
1772#endif
1773#endif
MIXED_EXPORT int mixed_pack_finish_read(uint32_t size, struct mixed_pack *pack)
MIXED_EXPORT int mixed_segment_set_in(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment)
MIXED_EXPORT int mixed_buffer_finish_read(uint32_t size, struct mixed_buffer *buffer)
MIXED_EXPORT int mixed_make_segment_inv_fft(uint32_t samplerate, struct mixed_segment *segment)
mixed_generator_type
Definition mixed.h:474
@ MIXED_SAWTOOTH
Generate a linear triangle wave with instant drop.
Definition mixed.h:482
@ MIXED_TRIANGLE
Generate a linear alternating triangle wave.
Definition mixed.h:480
@ MIXED_SINE
Generate an exact sine wave.
Definition mixed.h:476
@ MIXED_SQUARE
Generate a square wave with instant switches.
Definition mixed.h:478
__attribute__((always_inline)) MIXED_EXPORT inline float mixed_from_db(mixed_decibel_t volume)
Converts decibel to a linear volume multiplier.
Definition mixed.h:1701
MIXED_EXPORT int mixed_make_segment_compressor(uint32_t samplerate, struct mixed_segment *segment)
mixed_segment_info_flags
Definition mixed.h:545
@ MIXED_CLEARS_OUTPUT
Definition mixed.h:572
@ MIXED_SET
Definition mixed.h:565
@ MIXED_INPLACE
Definition mixed.h:549
@ MIXED_SEGMENT
Definition mixed.h:562
@ MIXED_OUT
Definition mixed.h:559
@ MIXED_GET
Definition mixed.h:568
@ MIXED_MODIFIES_INPUT
Definition mixed.h:553
@ MIXED_IN
Definition mixed.h:556
mixed_biquad_filter
Definition mixed.h:509
@ MIXED_LOWPASS
Definition mixed.h:513
@ MIXED_BANDPASS
Definition mixed.h:521
@ MIXED_LOWSHELF
Definition mixed.h:536
@ MIXED_PEAKING
Definition mixed.h:529
@ MIXED_NOTCH
Definition mixed.h:525
@ MIXED_ALLPASS
Definition mixed.h:532
@ MIXED_HIGHSHELF
Definition mixed.h:540
@ MIXED_HIGHPASS
Definition mixed.h:517
MIXED_EXPORT int mixed_make_segment_zero(struct mixed_segment *segment)
mixed_repeat_mode
Definition mixed.h:498
@ MIXED_RECORD
Record the incoming audio stream into the buffer.
Definition mixed.h:500
@ MIXED_RECORD_ONCE
Record exactly once until the buffer is full then switch to play mode.
Definition mixed.h:504
@ MIXED_PLAY
Play the recorded buffer back to the output stream.
Definition mixed.h:502
MIXED_EXPORT int mixed_make_segment_volume_control(float volume, float pan, struct mixed_segment *segment)
MIXED_EXPORT int mixed_make_segment_distribute(struct mixed_segment *segment)
float(* mixed_transfer_function_from)(void *in, float *out, uint8_t stride, uint32_t samples, float volume, float target_volume)
Definition mixed.h:1661
MIXED_EXPORT int mixed_fwd_fft(uint16_t framesize, float *in, float *out)
MIXED_EXPORT int mixed_make_segment_space_mixer(uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT int mixed_buffer_from_pack(struct mixed_pack *in, struct mixed_buffer **outs, float *volume, float target_volume)
mixed_segment_field_type
Definition mixed.h:646
@ MIXED_FUNCTION
Definition mixed.h:669
@ MIXED_BOOL
Definition mixed.h:660
@ MIXED_SIZE_T
Definition mixed.h:663
@ MIXED_RESAMPLE_TYPE_ENUM
An enum mixed_resample_type.
Definition mixed.h:700
@ MIXED_GENERATOR_TYPE_ENUM
An enum mixed_generator_type.
Definition mixed.h:690
@ MIXED_NOISE_TYPE_ENUM
An enum mixed_noise_type.
Definition mixed.h:688
@ MIXED_STRING
Definition mixed.h:666
@ MIXED_SEGMENT_SEQUENCE_POINTER
A pointer to a mixed_segment_sequence.
Definition mixed.h:680
@ MIXED_ERROR_ENUM
An enum mixed_error.
Definition mixed.h:698
@ MIXED_REPEAT_MODE_ENUM
An enum mixed_repeat_mode.
Definition mixed.h:686
@ MIXED_POINTER
Definition mixed.h:672
@ MIXED_CHANNEL_T
Definition mixed.h:703
@ MIXED_LOCATION_ENUM
An enum mixed_location.
Definition mixed.h:682
@ MIXED_PACK_POINTER
A pointer to a mixed_pack.
Definition mixed.h:678
@ MIXED_DECIBEL_T
Definition mixed.h:706
@ MIXED_SEGMENT_POINTER
A pointer to a mixed_segment.
Definition mixed.h:674
@ MIXED_FADE_TYPE_ENUM
An enum mixed_fade_type.
Definition mixed.h:692
@ MIXED_ATTENUATION_ENUM
An enum mixed_attenuation.
Definition mixed.h:694
@ MIXED_BUFFER_POINTER
A pointer to a mixed_buffer.
Definition mixed.h:676
@ MIXED_UNKNOWN
Definition mixed.h:647
@ MIXED_ENCODING_ENUM
An enum mixed_encoding.
Definition mixed.h:696
@ MIXED_BIQUAD_FILTER_ENUM
An enum mixed_biquad_filter.
Definition mixed.h:684
@ MIXED_DURATION_T
Definition mixed.h:709
float(* mixed_transfer_function_to)(float *in, void *out, uint8_t stride, uint32_t samples, float volume, float target_volume)
Definition mixed.h:1672
MIXED_EXPORT int mixed_make_segment_void(struct mixed_segment *segment)
MIXED_EXPORT int mixed_make_segment_packer(struct mixed_pack *packed, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT char * mixed_error_string(int error_code)
float mixed_decibel_t
Definition mixed.h:718
MIXED_EXPORT int mixed_make_segment_basic_mixer(mixed_channel_t channels, struct mixed_segment *segment)
mixed_resample_type
Definition mixed.h:405
@ MIXED_SINC_BEST_QUALITY
Definition mixed.h:411
@ MIXED_SINC_MEDIUM_QUALITY
Definition mixed.h:416
@ MIXED_SINC_FASTEST
Definition mixed.h:419
@ MIXED_ZERO_ORDER_HOLD
Definition mixed.h:423
@ MIXED_LINEAR_INTERPOLATION
Definition mixed.h:426
MIXED_EXPORT int mixed_pack_request_read(void **area, uint32_t *size, struct mixed_pack *pack)
MIXED_EXPORT int mixed_pack_finish_write(uint32_t size, struct mixed_pack *pack)
int(* mixed_register_segment_function)(char *name, uint32_t argc, struct mixed_segment_field_info *args, mixed_make_segment_function function)
Definition mixed.h:1562
MIXED_EXPORT int mixed_buffer_transfer(struct mixed_buffer *from, struct mixed_buffer *to)
MIXED_EXPORT int mixed_make_segment_repeat(float time, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT int mixed_queue_add(struct mixed_segment *news, struct mixed_segment *queue)
MIXED_EXPORT int mixed_make_segment_chain(struct mixed_segment *segment)
MIXED_EXPORT int mixed_make_segment_gate(uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT uint32_t mixed_pack_available_write(struct mixed_pack *pack)
MIXED_EXPORT int mixed_chain_add(struct mixed_segment *segment, struct mixed_segment *chain)
MIXED_EXPORT uint8_t mixed_samplesize(enum mixed_encoding encoding)
MIXED_EXPORT int mixed_chain_remove(struct mixed_segment *segment, struct mixed_segment *chain)
MIXED_EXPORT int mixed_buffer_to_pack(struct mixed_buffer **ins, struct mixed_pack *out, float *volume, float target_volume)
mixed_encoding
Definition mixed.h:142
@ MIXED_DOUBLE
Corresponds to double (IEEE 754 double precision floating point)
Definition mixed.h:162
@ MIXED_INT24
Corresponds to int24_t (signed 24-bit integer)
Definition mixed.h:152
@ MIXED_UINT32
Corresponds to uint32_t (unsigned 32-bit integer)
Definition mixed.h:158
@ MIXED_UINT8
Corresponds to uint8_t (unsigned 8-bit integer)
Definition mixed.h:146
@ MIXED_INT16
Corresponds to int16_t (signed 16-bit integer)
Definition mixed.h:148
@ MIXED_UINT16
Corresponds to uint16_t (unsigned 16-bit integer)
Definition mixed.h:150
@ MIXED_UINT24
Corresponds to uint24_t (unsigned 24-bit integer)
Definition mixed.h:154
@ MIXED_FLOAT
Corresponds to float (IEEE 754 single precision floating point)
Definition mixed.h:160
@ MIXED_INT8
Corresponds to int8_t (signed 8-bit integer)
Definition mixed.h:144
@ MIXED_INT32
Corresponds to int32_t (signed 32-bit integer)
Definition mixed.h:156
MIXED_EXPORT uint32_t mixed_buffer_available_write(struct mixed_buffer *buffer)
MIXED_EXPORT int mixed_segment_get_in(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment)
MIXED_EXPORT int mixed_make_segment_plane_mixer(uint32_t samplerate, struct mixed_segment *segment)
int(* mixed_deregister_segment_function)(char *name)
Definition mixed.h:1567
MIXED_EXPORT int mixed_chain_remove_at(uint32_t i, struct mixed_segment *chain)
float mixed_duration_t
Definition mixed.h:722
MIXED_EXPORT int mixed_make_segment_delay(float time, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT int mixed_register_segment(char *name, uint32_t argc, struct mixed_segment_field_info *args, mixed_make_segment_function function)
MIXED_EXPORT int mixed_pack_request_write(void **area, uint32_t *size, struct mixed_pack *pack)
uint8_t mixed_channel_t
Definition mixed.h:714
mixed_location
Definition mixed.h:579
@ MIXED_RIGHT_FRONT
The middle right front speaker in a 5.1 or similar setup.
Definition mixed.h:589
@ MIXED_RIGHT_SIDE_TOP
Definition mixed.h:623
@ MIXED_LEFT_FRONT
The middle left front speaker in a 5.1 or similar setup.
Definition mixed.h:587
@ MIXED_CENTER_REAR_TOP
Definition mixed.h:629
@ MIXED_RIGHT_FRONT_BOTTOM
The bottom front right speaker.
Definition mixed.h:601
@ MIXED_MONO
Signifies that the location is irrelevant and this is the only channel.
Definition mixed.h:581
@ MIXED_CENTER_FRONT_TOP
Definition mixed.h:628
@ MIXED_LEFT_SIDE
The left side speaker.
Definition mixed.h:609
@ MIXED_LEFT_REAR_TOP
The top rear left speaker.
Definition mixed.h:617
@ MIXED_LEFT_REAR_CENTER
Definition mixed.h:630
@ MIXED_LEFT_SIDE_TOP
Definition mixed.h:622
@ MIXED_CENTER_TOP
Definition mixed.h:627
@ MIXED_LEFT_FRONT_WIDE
Definition mixed.h:625
@ MIXED_SUBWOOFER_RIGHT
Definition mixed.h:633
@ MIXED_RIGHT_FRONT_TOP
The top front right speaker.
Definition mixed.h:615
@ MIXED_RIGHT_FRONT_HIGH
Definition mixed.h:635
@ MIXED_LEFT_FRONT_HIGH
Definition mixed.h:634
@ MIXED_LEFT_FRONT_TOP
The top front left speaker.
Definition mixed.h:613
@ MIXED_LEFT_REAR
The middle left rear speaker in a 5.1 or similar setup.
Definition mixed.h:591
@ MIXED_RIGHT_CENTER_BOTTOM
Definition mixed.h:639
@ MIXED_RIGHT_REAR_BOTTOM
The bottom rear right speaker.
Definition mixed.h:605
@ MIXED_CENTER_REAR
The rear center speaker.
Definition mixed.h:621
@ MIXED_RIGHT_FRONT_WIDE
Definition mixed.h:626
@ MIXED_CENTER_FRONT
The front center speaker.
Definition mixed.h:607
@ MIXED_RIGHT_REAR_CENTER
Definition mixed.h:631
@ MIXED_RIGHT_REAR_TOP
The top rear right speaker.
Definition mixed.h:619
@ MIXED_LEFT_FRONT_CENTER_TOP
Definition mixed.h:640
@ MIXED_LEFT
The left speaker in a stereo setup.
Definition mixed.h:583
@ MIXED_RIGHT_SIDE
The rigth side speaker.
Definition mixed.h:611
@ MIXED_CENTER_BOTTOM
Definition mixed.h:637
@ MIXED_LEFT_CENTER_BOTTOM
Definition mixed.h:638
@ MIXED_CENTER_FRONT_HIGH
Definition mixed.h:636
@ MIXED_LEFT_REAR_BOTTOM
The bottom rear left speaker.
Definition mixed.h:603
@ MIXED_SUBWOOFER_LEFT
Definition mixed.h:632
@ MIXED_SUBWOOFER
The subwoofer.
Definition mixed.h:597
@ MIXED_RIGHT_FRONT_CENTER_BOTTOM
Definition mixed.h:641
@ MIXED_RIGHT
The right speaker in a stereo setup.
Definition mixed.h:585
@ MIXED_LEFT_FRONT_BOTTOM
The bottom front left speaker.
Definition mixed.h:599
@ MIXED_SUBWOOFER_2
Definition mixed.h:624
@ MIXED_RIGHT_REAR
The middle right rear speaker in a 5.1 or similar setup.
Definition mixed.h:593
@ MIXED_CENTER
The middle front center speaker in a 5.1 or similar setup.
Definition mixed.h:595
MIXED_EXPORT int mixed_make_buffer(uint32_t size, struct mixed_buffer *buffer)
MIXED_EXPORT int mixed_make_segment_fade(float from, float to, float time, enum mixed_fade_type type, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT void mixed_free_pack(struct mixed_pack *pack)
MIXED_EXPORT int mixed_make_segment_noise(enum mixed_noise_type type, struct mixed_segment *segment)
MIXED_EXPORT int mixed_list_segments(uint32_t *count, char **names)
MIXED_EXPORT int mixed_make_segment_unpacker(struct mixed_pack *packed, uint32_t samplerate, struct mixed_segment *segment)
mixed_attenuation
Definition mixed.h:431
@ MIXED_EXPONENTIAL_ATTENUATION
Definition mixed.h:447
@ MIXED_INVERSE_ATTENUATION
Definition mixed.h:439
@ MIXED_LINEAR_ATTENUATION
Definition mixed.h:443
@ MIXED_NO_ATTENUATION
Definition mixed.h:435
mixed_error
Definition mixed.h:55
@ MIXED_BAD_NAME
A name was too long or malformed.
Definition mixed.h:134
@ MIXED_DUPLICATE_SEGMENT
Definition mixed.h:127
@ MIXED_INVALID_LOCATION
Definition mixed.h:76
@ MIXED_BUFFER_ALLOCATED
Definition mixed.h:121
@ MIXED_MIXING_FAILED
Definition mixed.h:67
@ MIXED_LADSPA_INSTANTIATION_FAILED
Definition mixed.h:100
@ MIXED_NOT_INITIALIZED
Definition mixed.h:73
@ MIXED_BUFFER_FULL
Definition mixed.h:109
@ MIXED_NO_ERROR
Definition mixed.h:58
@ MIXED_BAD_DYNAMIC_LIBRARY
Definition mixed.h:94
@ MIXED_UNKNOWN_ENCODING
Definition mixed.h:64
@ MIXED_SEGMENT_ALREADY_STARTED
Definition mixed.h:85
@ MIXED_OUT_OF_MEMORY
Definition mixed.h:61
@ MIXED_BUFFER_MISSING
Definition mixed.h:124
@ MIXED_BUFFER_EMPTY
Definition mixed.h:106
@ MIXED_RESAMPLE_FAILED
Definition mixed.h:103
@ MIXED_BAD_SEGMENT
Definition mixed.h:130
@ MIXED_BAD_ARGUMENT_COUNT
A function was specified with a bad number of arguments.
Definition mixed.h:132
@ MIXED_LADSPA_NO_PLUGIN_AT_INDEX
Definition mixed.h:97
@ MIXED_NOT_IMPLEMENTED
Definition mixed.h:70
@ MIXED_DYNAMIC_OPEN_FAILED
Definition mixed.h:91
@ MIXED_BUFFER_TOO_SMALL
A buffer is too small.
Definition mixed.h:136
@ MIXED_BUFFER_OVERCOMMIT
Definition mixed.h:112
@ MIXED_BAD_RESAMPLE_FACTOR
Definition mixed.h:115
@ MIXED_SEGMENT_ALREADY_ENDED
Definition mixed.h:88
@ MIXED_INVALID_VALUE
Definition mixed.h:82
@ MIXED_BAD_CHANNEL_CONFIGURATION
Definition mixed.h:118
@ MIXED_INVALID_FIELD
Definition mixed.h:79
MIXED_EXPORT int mixed_load_plugin(char *file)
MIXED_EXPORT int mixed_make_segment_fwd_fft(uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT uint32_t mixed_pack_available_read(struct mixed_pack *pack)
MIXED_EXPORT int mixed_buffer_finish_write(uint32_t size, struct mixed_buffer *buffer)
MIXED_EXPORT int mixed_chain_add_at(uint32_t i, struct mixed_segment *segment, struct mixed_segment *chain)
MIXED_EXPORT int mixed_segment_get(uint32_t field, void *value, struct mixed_segment *segment)
MIXED_EXPORT int mixed_segment_start(struct mixed_segment *segment)
MIXED_EXPORT void mixed_free_buffer(struct mixed_buffer *buffer)
MIXED_EXPORT char * mixed_type_string(int code)
MIXED_EXPORT int mixed_close_plugin(char *file)
MIXED_EXPORT int mixed_make_segment_pitch(float pitch, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT uint32_t mixed_buffer_available_read(struct mixed_buffer *buffer)
MIXED_EXPORT int mixed_make_segment_generator(enum mixed_generator_type type, uint32_t frequency, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT int mixed_make_segment(char *name, void *args, struct mixed_segment *segment)
mixed_noise_type
Definition mixed.h:487
@ MIXED_PINK_NOISE
Generate pink fractal noise.
Definition mixed.h:491
@ MIXED_BROWN_NOISE
Generate Brownian noise.
Definition mixed.h:493
@ MIXED_WHITE_NOISE
Generate purely random white noise.
Definition mixed.h:489
int(* mixed_free_plugin_function)(mixed_deregister_segment_function registrar)
Definition mixed.h:1579
MIXED_EXPORT int mixed_segment_mix(struct mixed_segment *segment)
MIXED_EXPORT int mixed_make_segment_channel_convert(uint8_t in, uint8_t out, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT int mixed_segment_set(uint32_t field, void *value, struct mixed_segment *segment)
MIXED_EXPORT int mixed_make_segment_quantize(uint32_t steps, struct mixed_segment *segment)
MIXED_EXPORT mixed_transfer_function_to mixed_translator_to(enum mixed_encoding encoding)
MIXED_EXPORT char * mixed_version(void)
MIXED_EXPORT int mixed_make_segment_ladspa(char *file, uint32_t index, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT int mixed_free_segment(struct mixed_segment *segment)
MIXED_EXPORT int mixed_buffer_request_read(float **area, uint32_t *size, struct mixed_buffer *buffer)
MIXED_EXPORT int mixed_make_pack(uint32_t frames, struct mixed_pack *pack)
MIXED_EXPORT int mixed_buffer_clear(struct mixed_buffer *buffer)
MIXED_EXPORT int mixed_queue_remove_at(uint32_t pos, struct mixed_segment *queue)
MIXED_EXPORT int mixed_make_segment_biquad_filter(enum mixed_biquad_filter type, float frequency, uint32_t samplerate, struct mixed_segment *segment)
MIXED_EXPORT void(* mixed_free)(void *ptr)
MIXED_EXPORT int mixed_queue_clear(struct mixed_segment *queue)
Remove all segments from the queue.
MIXED_EXPORT mixed_transfer_function_from mixed_translator_from(enum mixed_encoding encoding)
MIXED_EXPORT int mixed_make_segment_queue(struct mixed_segment *segment)
MIXED_EXPORT int mixed_segment_get_out(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment)
MIXED_EXPORT int mixed_buffer_request_write(float **area, uint32_t *size, struct mixed_buffer *buffer)
MIXED_EXPORT int mixed_segment_end(struct mixed_segment *segment)
MIXED_EXPORT int mixed_segment_set_out(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment)
mixed_segment_fields
Definition mixed.h:167
@ MIXED_IN_COUNT
Definition mixed.h:318
@ MIXED_COMPRESSOR_PREDELAY
Definition mixed.h:367
@ MIXED_REPEAT_POSITION
Definition mixed.h:386
@ MIXED_SPACE_MIN_DISTANCE
Definition mixed.h:240
@ MIXED_REPEAT_MODE
Definition mixed.h:302
@ MIXED_GATE_HOLD
Definition mixed.h:289
@ MIXED_MIX
Definition mixed.h:338
@ MIXED_GAIN
Definition mixed.h:311
@ MIXED_SPACE_ROLLOFF
Definition mixed.h:250
@ MIXED_FADE_TO
Definition mixed.h:195
@ MIXED_BYPASS
Definition mixed.h:173
@ MIXED_COMPRESSOR_RATIO
Definition mixed.h:358
@ MIXED_GATE_ATTACK
Definition mixed.h:285
@ MIXED_GATE_RELEASE
Definition mixed.h:293
@ MIXED_Q
Definition mixed.h:314
@ MIXED_RESAMPLE_TYPE
Definition mixed.h:185
@ MIXED_BUFFER_SIZE_HINT
Definition mixed.h:398
@ MIXED_DELAY_TIME
Definition mixed.h:270
@ MIXED_PITCH_SHIFT
Definition mixed.h:273
@ MIXED_VOLUME_CONTROL_PAN
Definition mixed.h:189
@ MIXED_GENERATOR_FREQUENCY
Definition mixed.h:204
@ MIXED_COMPRESSOR_ATTACK
Definition mixed.h:361
@ MIXED_PLANE_VELOCITY
Definition mixed.h:346
@ MIXED_FADE_TYPE
Definition mixed.h:201
@ MIXED_FADE_FROM
Definition mixed.h:192
@ MIXED_SPACE_LOCATION
Definition mixed.h:212
@ MIXED_COMPRESSOR_PREGAIN
Definition mixed.h:349
@ MIXED_OVERSAMPLING
Definition mixed.h:392
@ MIXED_SPACE_DOPPLER_FACTOR
Definition mixed.h:235
@ MIXED_SPACE_ATTENUATION
Definition mixed.h:267
@ MIXED_PLANE_LOCATION
Definition mixed.h:342
@ MIXED_SAMPLERATE
Definition mixed.h:176
@ MIXED_SPACE_MAX_DISTANCE
Definition mixed.h:245
@ MIXED_COMPRESSOR_GAIN
Definition mixed.h:377
@ MIXED_QUANTIZE_STEPS
Definition mixed.h:331
@ MIXED_CHANNEL_COUNT_IN
Definition mixed.h:380
@ MIXED_FREQUENCY
Definition mixed.h:305
@ MIXED_BUFFER
Definition mixed.h:170
@ MIXED_GATE_OPEN_THRESHOLD
Definition mixed.h:277
@ MIXED_SPACE_UP
Definition mixed.h:224
@ MIXED_OUT_COUNT
Definition mixed.h:322
@ MIXED_NOISE_TYPE
Definition mixed.h:296
@ MIXED_SPACE_VELOCITY
Definition mixed.h:220
@ MIXED_COMPRESSOR_RELEASE
Definition mixed.h:364
@ MIXED_COMPRESSOR_KNEE
Definition mixed.h:355
@ MIXED_FRAMESIZE
Definition mixed.h:389
@ MIXED_REPEAT_TIME
Definition mixed.h:299
@ MIXED_GENERATOR_TYPE
Definition mixed.h:208
@ MIXED_CHANNEL_COUNT_OUT
Definition mixed.h:383
@ MIXED_VOLUME
Definition mixed.h:181
@ MIXED_COMPRESSOR_POSTGAIN
Definition mixed.h:374
@ MIXED_FADE_TIME
Definition mixed.h:198
@ MIXED_GATE_CLOSE_THRESHOLD
Definition mixed.h:281
@ MIXED_CURRENT_SEGMENT
Definition mixed.h:325
@ MIXED_BIQUAD_FILTER
Definition mixed.h:308
@ MIXED_COMPRESSOR_THRESHOLD
Definition mixed.h:352
@ MIXED_SPACE_SOUNDSPEED
Definition mixed.h:230
@ MIXED_COMPRESSOR_RELEASEZONE
Definition mixed.h:371
@ MIXED_SPEED_FACTOR
Definition mixed.h:328
@ MIXED_SPACE_DIRECTION
Definition mixed.h:216
MIXED_EXPORT int mixed_deregister_segment(char *name)
MIXED_EXPORT int mixed_pack_clear(struct mixed_pack *pack)
#define MIXED_EXPORT
Definition mixed.h:22
MIXED_EXPORT int mixed_queue_remove(struct mixed_segment *old, struct mixed_segment *queue)
mixed_fade_type
Definition mixed.h:452
@ MIXED_CUBIC_IN_OUT
Definition mixed.h:469
@ MIXED_CUBIC_OUT
Definition mixed.h:464
@ MIXED_LINEAR
Definition mixed.h:456
@ MIXED_CUBIC_IN
Definition mixed.h:460
MIXED_EXPORT int mixed_buffer_resize(uint32_t size, struct mixed_buffer *buffer)
int(* mixed_make_plugin_function)(mixed_register_segment_function registrar)
Definition mixed.h:1573
MIXED_EXPORT uint8_t mixed_byte_stride(mixed_channel_t channels, enum mixed_encoding encoding)
MIXED_EXPORT int mixed_inv_fft(uint16_t framesize, float *in, float *out)
MIXED_EXPORT int mixed_make_segment_speed_change(double speed, struct mixed_segment *segment)
int(* mixed_make_segment_function)(void *args, struct mixed_segment *segment)
Definition mixed.h:1556
MIXED_EXPORT int mixed_buffer_copy(struct mixed_buffer *from, struct mixed_buffer *to)
MIXED_EXPORT int mixed_make_segment_info(char *name, uint32_t *argc, const struct mixed_segment_field_info **args)
Definition mixed.h:731
char is_virtual
Definition mixed.h:739
float * _data
Definition mixed.h:732
uint32_t read
Definition mixed.h:734
uint32_t reserved
Definition mixed.h:736
uint32_t size
Definition mixed.h:733
uint32_t write
Definition mixed.h:735
Definition mixed.h:751
uint32_t reserved
Definition mixed.h:758
mixed_channel_t channels
Definition mixed.h:764
uint32_t write
Definition mixed.h:757
unsigned char * _data
Definition mixed.h:754
enum mixed_encoding encoding
Definition mixed.h:761
uint32_t read
Definition mixed.h:756
uint32_t samplerate
Definition mixed.h:767
uint32_t size
Definition mixed.h:755
Definition mixed.h:775
char * description
Definition mixed.h:783
uint32_t field
Definition mixed.h:780
enum mixed_segment_field_type type
Definition mixed.h:794
enum mixed_segment_info_flags flags
Definition mixed.h:788
uint32_t type_count
Definition mixed.h:797
Definition mixed.h:806
const char * name
Definition mixed.h:809
enum mixed_segment_info_flags flags
Definition mixed.h:815
uint32_t min_inputs
Definition mixed.h:818
uint32_t outputs
Definition mixed.h:824
const char * description
Definition mixed.h:812
uint32_t max_inputs
Definition mixed.h:821
struct mixed_segment_field_info fields[32]
Definition mixed.h:831
Definition mixed.h:853
int(* mix)(struct mixed_segment *segment)
Definition mixed.h:857
int(* get_out)(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment)
Definition mixed.h:862
int(* end)(struct mixed_segment *segment)
Definition mixed.h:858
int(* free)(struct mixed_segment *segment)
Definition mixed.h:854
int(* start)(struct mixed_segment *segment)
Definition mixed.h:856
int(* set)(uint32_t field, void *value, struct mixed_segment *segment)
Definition mixed.h:863
int(* info)(struct mixed_segment_info *info, struct mixed_segment *segment)
Definition mixed.h:855
void * data
Definition mixed.h:867
int(* get_in)(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment)
Definition mixed.h:861
int(* set_out)(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment)
Definition mixed.h:860
int(* set_in)(uint32_t field, uint32_t location, void *value, struct mixed_segment *segment)
Definition mixed.h:859
int(* get)(uint32_t field, void *value, struct mixed_segment *segment)
Definition mixed.h:864