{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.wlBdFjxb/b1/allegro5_5.2.10.1+dfsg-1_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.wlBdFjxb/b2/allegro5_5.2.10.1+dfsg-1_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,9 +1,9 @@\n \n- 2b0876728d33c88d6dd931245e563b8c 1393852 doc optional allegro5-doc_5.2.10.1+dfsg-1_all.deb\n+ 4cbe387bf93eac00a696df4df515425f 1400552 doc optional allegro5-doc_5.2.10.1+dfsg-1_all.deb\n 0d0f0e36c802263571c8a4a4d37986e6 19388 libdevel optional liballegro-acodec5-dev_5.2.10.1+dfsg-1_amd64.deb\n 8d1e648c9bc4c82c916d2525be28be63 62524 debug optional liballegro-acodec5.2t64-dbgsym_5.2.10.1+dfsg-1_amd64.deb\n d50d79d7644b1e9c093151f9e7f460f5 38260 libs optional liballegro-acodec5.2t64_5.2.10.1+dfsg-1_amd64.deb\n 88c48ff68fbc70f244e6289381910e53 22164 libdevel optional liballegro-audio5-dev_5.2.10.1+dfsg-1_amd64.deb\n 6510c1199bcb789a150f21f20a92d24c 110092 debug optional liballegro-audio5.2t64-dbgsym_5.2.10.1+dfsg-1_amd64.deb\n 09e68b97528964626a7f9fd05d8e9b9b 61768 libs optional liballegro-audio5.2t64_5.2.10.1+dfsg-1_amd64.deb\n 1392e795640f5aea611fc0be61a01f49 20432 libdevel optional liballegro-dialog5-dev_5.2.10.1+dfsg-1_amd64.deb\n@@ -17,10 +17,10 @@\n 1399e259e49d926a90ec19b73119cb5c 23612 libs optional liballegro-physfs5.2t64_5.2.10.1+dfsg-1_amd64.deb\n da9f68d4e67494231657f1fe069ad829 19488 libdevel optional liballegro-ttf5-dev_5.2.10.1+dfsg-1_amd64.deb\n 0b3e406b09b165e0e1094460d0646a2d 32212 debug optional liballegro-ttf5.2t64-dbgsym_5.2.10.1+dfsg-1_amd64.deb\n 57da52b6a5515644c87552968ad4687d 28924 libs optional liballegro-ttf5.2t64_5.2.10.1+dfsg-1_amd64.deb\n 69c5613595a2d5ef9e3f8db6ae2395b6 19768 libdevel optional liballegro-video5-dev_5.2.10.1+dfsg-1_amd64.deb\n d92d7f58303a1dea788385c82e05a8c9 39632 debug optional liballegro-video5.2t64-dbgsym_5.2.10.1+dfsg-1_amd64.deb\n ae0881f2a421de07bd741312c4544b0d 32828 libs optional liballegro-video5.2t64_5.2.10.1+dfsg-1_amd64.deb\n- 0c66871380d3de3b82916dcdf4dc4aaa 117028 libdevel optional liballegro5-dev_5.2.10.1+dfsg-1_amd64.deb\n+ 539c5b7b4d3254281f7ffdddf394ff97 117028 libdevel optional liballegro5-dev_5.2.10.1+dfsg-1_amd64.deb\n 1662b82e9a21e1fb38f59df73d8a5675 1305612 debug optional liballegro5.2t64-dbgsym_5.2.10.1+dfsg-1_amd64.deb\n f00abcde8884d9fee54cc064f12fde02 437344 libs optional liballegro5.2t64_5.2.10.1+dfsg-1_amd64.deb\n"}, {"source1": "allegro5-doc_5.2.10.1+dfsg-1_all.deb", "source2": "allegro5-doc_5.2.10.1+dfsg-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2025-01-09 13:52:42.000000 debian-binary\n--rw-r--r-- 0 0 0 31656 2025-01-09 13:52:42.000000 control.tar.xz\n--rw-r--r-- 0 0 0 1362004 2025-01-09 13:52:42.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 31644 2025-01-09 13:52:42.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 1368716 2025-01-09 13:52:42.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: allegro5-doc\n Source: allegro5\n Version: 2:5.2.10.1+dfsg-1\n Architecture: all\n Maintainer: Debian Games Team
.voc file streaming is unimplemented.
Return true on success.
\n+Examples:
\n+Returns true if the acodec addon is initialized, otherwise returns\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -64,14 +64,18 @@\n * Module files (.it, .mod, .s3m, .xm) are often composed with streaming in\n mind, and sometimes cannot be easily rendered into a finite length\n sample. Therefore they cannot be loaded with _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bs_\ba_\bm_\bp_\bl_\be/\n _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\bs_\ba_\bm_\bp_\bl_\be_\b__\bf and must be streamed with _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm or\n _\ba_\bl_\b__\bl_\bo_\ba_\bd_\b__\ba_\bu_\bd_\bi_\bo_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf.\n * .voc file streaming is unimplemented.\n Return true on success.\n+Examples:\n+ * _\be_\bx_\b__\bs_\bt_\br_\be_\ba_\bm_\b__\bf_\bi_\bl_\be_\b._\bc\n+ * _\be_\bx_\b__\ba_\bc_\bo_\bd_\be_\bc_\b__\bm_\bu_\bl_\bt_\bi_\b._\bc\n+ * _\be_\bx_\b__\bk_\bc_\bm_\b__\bd_\bi_\br_\be_\bc_\bt_\b._\bc\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_i\bis\bs_\b_a\bac\bco\bod\bde\bec\bc_\b_a\bad\bdd\bdo\bon\bn_\b_i\bin\bni\bit\bti\bia\bal\bli\biz\bze\bed\bd *\b**\b**\b**\b**\b**\b*\n bool al_is_acodec_addon_initialized(void)\n _\bS_\bo_\bu_\br_\bc_\be_\b _\bC_\bo_\bd_\be\n Returns true if the acodec addon is initialized, otherwise returns false.\n Since: 5.2.6\n *\b**\b**\b**\b**\b**\b* a\bal\bl_\b_g\bge\bet\bt_\b_a\bal\bll\ble\beg\bgr\bro\bo_\b_a\bac\bco\bod\bde\bec\bc_\b_v\bve\ber\brs\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n uint32_t al_get_allegro_acodec_version(void)\n"}]}, {"source1": "./usr/share/doc/allegro5-doc/refman/audio.html", "source2": "./usr/share/doc/allegro5-doc/refman/audio.html", "unified_diff": "@@ -564,14 +564,19 @@\n Code
\nAn ALLEGRO_SAMPLE_ID represents a sample being played via al_play_sample. It can be used to\n later stop the sample with al_stop_sample. The underlying\n ALLEGRO_SAMPLE_INSTANCE can be extracted using al_lock_sample_id.
\n+Examples:
\n+Install the audio subsystem.
\nReturns true on success, false on failure.
\n@@ -582,22 +587,40 @@\n this.\n \nSee also: al_reserve_samples, al_uninstall_audio, al_is_audio_installed, al_init_acodec_addon
\n+Examples:
\n+Uninstalls the audio subsystem.
\nSee also: al_install_audio
\n+Examples:
\n+Returns true if al_install_audio was called\n@@ -624,14 +647,23 @@\n sample instance N\n
Returns true on success, false on error. al_install_audio must have been\n called first.
\nSee also: al_set_default_mixer, al_play_sample
\n+Examples:
\n+bool al_play_sample(ALLEGRO_SAMPLE *spl, float gain, float pan, float speed,\n ALLEGRO_PLAYMODE loop, ALLEGRO_SAMPLE_ID *ret_id)
Plays a sample on one of the sample instances created by See also: al_load_sample, ALLEGRO_PLAYMODE, ALLEGRO_AUDIO_PAN_NONE, ALLEGRO_SAMPLE_ID, al_stop_sample, al_stop_samples, al_lock_sample_id.
\n+Examples:
\n+Stop the sample started by al_play_sample.
\nSee also: al_stop_samples
\n+Examples:
\n+Stop all samples started by al_play_sample.
\nSee also: al_stop_sample
\n+Examples:
\n+Locks a ALLEGRO_SAMPLE_ID,\n returning the underlying See also: al_play_sample, al_unlock_sample_id
\nSince: 5.2.3
\n\n\n+Unstable\n API: New API.
\n
Examples:
\n+Unlocks a ALLEGRO_SAMPLE_ID, allowing\n@@ -720,14 +780,19 @@\n
See also: al_play_sample, al_lock_sample_id
\nSince: 5.2.3
\n\n\n+Unstable\n API: New API.
\n
Examples:
\n+Loads and plays an audio file, streaming from disk as it is needed.\n This API can only play one audio stream at a time. This requires a\n@@ -747,14 +812,19 @@\n href=\"audio.html#al_play_audio_stream_f\">al_play_audio_stream_f, al_load_audio_stream
\nSince: 5.2.8
\n\n\n+Unstable\n API: New API.
\n
Examples:
\n+Loads and plays an audio file from ALLEGRO_FILE stream, streaming it is\n@@ -792,14 +862,23 @@\n
An ALLEGRO_SAMPLE object stores the data necessary for playing\n pre-defined digital audio. It holds a user-specified PCM data buffer and\n information about its format (data length, depth, frequency, channel\n configuration). You can have the same ALLEGRO_SAMPLE playing multiple\n times simultaneously.
\nSee also: ALLEGRO_SAMPLE_INSTANCE
\n+Examples:
\n+ALLEGRO_SAMPLE *al_create_sample(void *buf, unsigned int samples,\n unsigned int freq, ALLEGRO_AUDIO_DEPTH depth,\n ALLEGRO_CHANNEL_CONF chan_conf, bool free_buf)
See also: al_destroy_sample, ALLEGRO_AUDIO_DEPTH, ALLEGRO_CHANNEL_CONF
\n+Examples:
\n+Loads a few different audio file formats based on their\n extension.
\n@@ -843,14 +931,23 @@\nNote: the allegro_audio library does not support any audio\n file formats by default. You must use the allegro_acodec addon, or\n register your own format handler.
\n \nSee also: al_register_sample_loader,\n al_init_acodec_addon
\n+Examples:
\n+Loads an audio file from an ALLEGRO_FILE stream into an This function will stop any sample instances which may be playing the\n buffer referenced by the ALLEGRO_SAMPLE.
\nSee also: al_destroy_sample_instance,\n al_stop_sample, al_stop_samples
\n+Examples:
\n+Return the channel configuration of the sample.
\n \nReturn a pointer to the raw sample data.
\nSee also: al_get_sample_channels, al_get_sample_depth, al_get_sample_frequency,\n al_get_sample_length
\n+Examples:
\n+For more fine-grained control over audio output, here\u2019s a short\n description of the basic concepts:
\nVoices represent audio devices on the system. Basically, every audio\n output chain that you want to be heard needs to end up in a voice. As\n voices are on the hardware/driver side of things, there is only limited\n control over their parameters (frequency, sample format, channel\n@@ -1085,126 +1196,212 @@\n instances may be created from the same ALLEGRO_SAMPLE. An ALLEGRO_SAMPLE\n must not be destroyed while there are instances which reference it.
\nTo actually produce audio output, an ALLEGRO_SAMPLE_INSTANCE must be\n attached to an ALLEGRO_MIXER\n which eventually reaches an ALLEGRO_VOICE object.
\nSee also: ALLEGRO_SAMPLE
\n+Examples:
\n+Creates a sample instance, using the supplied sample data. The\n instance must be attached to a mixer (or voice) in order to actually\n produce output.
\nThe argument may be NULL. You can then set the sample data later with\n al_set_sample.
\nSee also: al_destroy_sample_instance
\n+Examples:
\n+Detaches the sample instance from anything it may be attached to and\n frees it (the sample data, i.e.\u00a0its ALLEGRO_SAMPLE, is not\n freed!).
\nSee also: al_create_sample_instance
\n+Examples:
\n+Play the sample instance. Returns true on success, false on\n failure.
\nSee also: al_stop_sample_instance
\n+Examples:
\n+Stop an sample instance playing.
\nSee also: al_play_sample_instance
\n+Examples:
\n+Return the channel configuration of the sample instance\u2019s sample\n data.
\nSee also: ALLEGRO_CHANNEL_CONF.
\n+Examples:
\n+Return the audio depth of the sample instance\u2019s sample data.
\nSee also: ALLEGRO_AUDIO_DEPTH.
\n+Examples:
\n+Return the frequency (in Hz) of the sample instance\u2019s sample\n data.
\n+Examples:
\n+Return the length of the sample instance in sample values. This\n property may differ from the length of the instance\u2019s sample data.
\nSee also: al_set_sample_instance_length,\n al_get_sample_instance_time
\n+Examples:
\n+Set the length of the sample instance in sample values. This can be\n used to play only parts of the underlying sample. Be careful not to\n exceed the actual length of the sample data, though.
\nReturn true on success, false on failure. Will fail if the sample\n instance is currently playing.
\nSee also: al_get_sample_instance_length
\n+Examples:
\n+Get the playback position of a sample instance.
\nSee also: al_set_sample_instance_position
\n+Examples:
\n+Set the playback position of a sample instance.
\nReturns true on success, false on failure.
\nSee also: al_get_sample_instance_position
\n+Examples:
\n+Return the relative playback speed of the sample instance.
\n \nSet the relative playback speed of the sample instance. 1.0 means\n normal speed.
\nReturn true on success, false on failure. Will fail if the sample\n instance is attached directly to a voice.
\nSee also: al_get_sample_instance_speed
\n+Examples:
\n+Return the playback gain of the sample instance.
\nSee also: al_set_sample_instance_gain
\n+Examples:
\n+Set the playback gain of the sample instance.
\nReturns true on success, false on failure. Will fail if the sample\n instance is attached directly to a voice.
\nSee also: al_get_sample_instance_gain
\n+Examples:
\n+Get the pan value of the sample instance.
\nSee also: \n Returns true on success, false on failure. Will fail if the sample\n instance is attached directly to a voice. See also: al_get_sample_instance_pan,\n ALLEGRO_AUDIO_PAN_NONE Examples: Return the length of the sample instance in seconds, assuming a\n playback speed of 1.0. See also: al_get_sample_instance_length Examples: Return the playback mode of the sample instance.\n+
\n al_get_sample_instance_time
\n \n \n \n+
\n al_get_sample_instance_playmode
\n \n \n
Set the playback mode of the sample instance.
\nReturns true on success, false on failure.
\nSee also: ALLEGRO_PLAYMODE,\n al_get_sample_instance_playmode
\n+Examples:
\n+Return true if the sample instance is in the playing state. This may\n be true even if the instance is not attached to anything.
\nSee also: al_set_sample_instance_playing
\n+Examples:
\n+Change whether the sample instance is playing.
\nThe instance does not need to be attached to anything (since:\n 5.1.8).
\nReturns true on success, false on failure.
\nSee also: al_get_sample_instance_playing
\n+Examples:
\n+Return whether the sample instance is attached to something.
\n@@ -1343,14 +1598,19 @@\nReturns true on success.
\nSee also: al_attach_sample_instance_to_mixer,\n al_attach_sample_instance_to_voice,\n al_get_sample_instance_attached
\n+Examples:
\n+Return the sample data that the sample instance plays.
\nNote this returns a pointer to an internal structure, not\n@@ -1358,14 +1618,23 @@\n have passed to al_set_sample.\n However, the sample buffer of the returned ALLEGRO_SAMPLE will be the\n same as the one that was used to create the sample (passed to al_create_sample). You can use al_get_sample_data on the\n return value to retrieve and compare it.
\nSee also: al_set_sample
\n+Examples:
\n+Change the sample data that a sample instance plays. This can be\n quite an involved process.
\n@@ -1378,14 +1647,23 @@\n Reattaching may not always succeed.\nOn success, the sample remains stopped. The playback position and\n loop end points are reset to their default values. The loop mode remains\n unchanged.
\nReturns true on success, false on failure. On failure, the sample\n will be stopped and detached from its parent.
\nSee also: al_get_sample
\n+Examples:
\n+Set the matrix used to mix the channels coming from this instance\n@@ -1411,14 +1689,19 @@\n
Returns true on success, false on failure (e.g.\u00a0if this is not\n attached to a mixer).
\nSince: 5.2.3
\n\n\n+Unstable\n API: New API.
\n
Examples:
\n+An ALLEGRO_AUDIO_STREAM object is used to stream generated audio to\n@@ -1467,14 +1750,23 @@\n }\n
If the stream is created by al_load_audio_stream or al_play_audio_stream then it\n will also generate an ALLEGRO_EVENT_AUDIO_STREAM_FINISHED\n event if it reaches the end of the file and is not set to loop.
\n+Examples:
\n+ALLEGRO_AUDIO_STREAM *al_create_audio_stream(size_t fragment_count,\n unsigned int frag_samples, unsigned int freq, ALLEGRO_AUDIO_DEPTH depth,\n ALLEGRO_CHANNEL_CONF chan_conf)
\n\n+Note: Unlike many Allegro objects, audio streams are not\n implicitly destroyed when Allegro is shut down. You must destroy them\n manually with al_destroy_audio_stream\n before the audio system is shut down.
\n
Examples:
\n+ALLEGRO_AUDIO_STREAM *al_load_audio_stream(const char *filename,\n size_t buffer_count, unsigned int samples)
Loads an audio file from disk as it is needed.
\n@@ -1548,14 +1849,23 @@\n file formats by default. You must use the allegro_acodec addon, or\n register your own format handler.\n \nSee also: al_load_audio_stream_f, al_register_audio_stream_loader,\n al_init_acodec_addon
\n+Examples:
\n+ALLEGRO_AUDIO_STREAM *al_load_audio_stream_f(ALLEGRO_FILE* fp, const char *ident,\n size_t buffer_count, unsigned int samples)
Loads an audio file from \n Note: If the stream is still attached to a mixer or voice,\n al_detach_audio_stream\n is automatically called on it first. See also: al_drain_audio_stream. Examples: Retrieve the associated event source. See al_get_audio_stream_fragment\n for a description of the ALLEGRO_EVENT_AUDIO_STREAM_FRAGMENT\n event that audio streams emit. Examples: You should call this to finalise an audio stream that you will no\n longer be feeding, to wait for all pending buffers to finish playing.\n The stream\u2019s playing state will change to false. See also: al_destroy_audio_stream Examples: Set the streaming file playing position to the beginning. Returns\n true on success. Currently this can only be called on streams created\n with al_load_audio_stream,\n al_play_audio_stream, al_load_audio_stream_f or\n al_play_audio_stream_f. Examples: Return the stream frequency (in Hz).\n+
\n al_get_audio_stream_event_source
\n \n \n \n+
\n al_drain_audio_stream
\n \n \n \n+
\n al_rewind_audio_stream
\n \n \n \n+
\n al_get_audio_stream_frequency
\n \n \n
Return the stream length in samples.
\n+Examples:
\n+Return the relative playback speed of the stream.
\nSee also: Return the playback gain of the stream. See also: al_set_audio_stream_gain. Examples: Set the playback gain of the stream. Returns true on success, false on failure. Will fail if the audio\n stream is attached directly to a voice. See also: al_get_audio_stream_gain. Examples: Get the pan value of the stream. See also: \n Returns true on success, false on failure. Will fail if the audio\n stream is attached directly to a voice. See also: al_get_audio_stream_pan,\n ALLEGRO_AUDIO_PAN_NONE Examples: Return true if the stream is playing. See also: al_set_audio_stream_playing. Examples: Change whether the stream is playing. Returns true on success, false on failure. See also: al_get_audio_stream_playing Examples: Return the playback mode of the stream. Set the playback mode of the stream. Returns true on success, false on failure. See also: ALLEGRO_PLAYMODE,\n al_get_audio_stream_playmode. Examples: Return whether the stream is attached to something. See also: Detach the stream from whatever it\u2019s attached to, if anything. See also: al_attach_audio_stream_to_mixer,\n al_attach_audio_stream_to_voice,\n al_get_audio_stream_attached. Examples: Get the number of samples consumed by the parent since the audio\n@@ -1830,25 +2226,43 @@\n href=\"audio.html#al_get_audio_stream_frequency\">al_get_audio_stream_frequency
\n \n float al_get_audio_stream_gain(const ALLEGRO_AUDIO_STREAM *stream)
\n+
\n al_set_audio_stream_gain
\n \n \n \n+
\n al_get_audio_stream_pan
\n \n \n \n+
\n al_get_audio_stream_playing
\n \n \n \n+
\n al_set_audio_stream_playing
\n \n \n \n+
\n al_get_audio_stream_playmode
\n \n \n \n+
\n al_get_audio_stream_attached
\n \n \n \n+
\n al_get_audio_stream_played_samples
\n \n \n
Examples:
\n+This function needs to be called for every successful call of al_get_audio_stream_fragment\n to indicate that the buffer (pointed to by val
) is filled\n with new data.
See also: al_get_audio_stream_fragment
\n+Examples:
\n+Returns the number of fragments this stream uses. This is the same\n@@ -1882,14 +2296,19 @@\n href=\"audio.html#al_load_audio_stream_f\">al_load_audio_stream_f or\n al_play_audio_stream_f.
\nSee also: al_get_audio_stream_position_secs,\n al_get_audio_stream_length_secs
\n+Examples:
\n+Return the position of the stream in seconds. Currently this can only\n@@ -1897,14 +2316,19 @@\n href=\"audio.html#al_load_audio_stream\">al_load_audio_stream, al_play_audio_stream, al_load_audio_stream_f or\n al_play_audio_stream_f.
\nSee also: al_get_audio_stream_length_secs
\n+Examples:
\n+Return the length of the stream in seconds, if known. Otherwise\n@@ -1913,28 +2337,38 @@\n href=\"audio.html#al_load_audio_stream\">al_load_audio_stream, al_play_audio_stream, al_load_audio_stream_f or\n al_play_audio_stream_f.
\nSee also: al_get_audio_stream_position_secs
\n+Examples:
\n+Sets the loop points for the stream in seconds. Currently this can\n only be called on streams created with al_load_audio_stream, al_play_audio_stream, al_load_audio_stream_f or\n al_play_audio_stream_f.
\n+Examples:
\n+Like al_set_sample_instance_channel_matrix\n but for streams.
\nSince: 5.2.3
\n@@ -2145,14 +2579,21 @@\n Code\nAn opaque datatype that represents a recording device.
\nSince: 5.1.1
\n\n\n+Unstable\n API: The API may need a slight redesign.
\n
Examples:
\n+Structure that holds the audio recorder event data. Every event type\n@@ -2168,14 +2609,21 @@\n
Since 5.1.1
\nSee also: al_get_audio_recorder_event
\n\n\n+Unstable\n API: The API may need a slight redesign.
\n
Examples:
\n+ALLEGRO_AUDIO_RECORDER *al_create_audio_recorder(size_t fragment_count,\n unsigned int samples, unsigned int frequency,\n ALLEGRO_AUDIO_DEPTH depth, ALLEGRO_CHANNEL_CONF chan_conf)
On failure, returns NULL.
\nSince: 5.1.1
\n\n\n+Unstable\n API: The API may need a slight redesign.
\n
Examples:
\n+Begin recording into the fragment buffer. Once a complete fragment\n@@ -2226,14 +2681,21 @@\n event will be triggered.
\nReturns true if it was able to begin recording.
\nSince: 5.1.1
\n\n\n+Unstable\n API: The API may need a slight redesign.
\n
Examples:
\n+Stop capturing audio data. Note that the audio recorder is still\n@@ -2272,28 +2734,42 @@\n
Returns the event as an ALLEGRO_AUDIO_RECORDER_EVENT.
\nSince: 5.1.1
\n\n\n+Unstable\n API: The API may need a slight redesign.
\n
Examples:
\n+Returns the event source for the recorder that generates the various\n recording events.
\nSince: 5.1.1
\n\n\n+Unstable\n API: The API may need a slight redesign.
\n
Examples:
\n+Destroys the audio recorder and frees all resources associated with\n@@ -2301,62 +2777,98 @@\n
You may receive events after the recorder has been destroyed. They\n must be ignored, as the fragment buffer will no longer be valid.
\nSince: 5.1.1
\n\n\n+Unstable\n API: The API may need a slight redesign.
\n
Examples:
\n+An opaque datatype that represents an audio device.
\n+Examples:
\n+Get the number of available audio output devices on the system.
\nSince: 5.2.8
\nreturn -1 for unsupported drivers.
\n+Examples:
\n+Get the output audio device of the specified index.
\nSince: 5.2.8
\n+Examples:
\n+Get the user friendly display name of the device.
\nSince: 5.2.8
\n+Examples:
\n+A voice represents an audio device on the system, which may be a real\n device, or an abstract device provided by the operating system. To play\n back audio, you would attach a mixer, sample instance or audio stream to\n a voice.
\nSee also: ALLEGRO_MIXER, ALLEGRO_SAMPLE, ALLEGRO_AUDIO_STREAM
\n+Examples:
\n+ALLEGRO_VOICE *al_create_voice(unsigned int freq,\n ALLEGRO_AUDIO_DEPTH depth, ALLEGRO_CHANNEL_CONF chan_conf)
Reasonable default arguments are:
\n \nSee also: al_destroy_voice
\n+Examples:
\n+Destroys the voice and deallocates it from the digital driver. Does\n nothing if the voice is NULL.
\nSee also: al_create_voice
\n+Examples:
\n+Detaches the mixer, sample instance or audio stream from the\n@@ -2417,26 +2947,42 @@\n The stream position, speed, gain and panning cannot be changed. At this\n time, we don\u2019t recommend attaching audio streams directly to voices. Use\n a mixer inbetween.
\nReturns true on success, false on failure.
\nSee also: al_detach_voice,\n al_voice_has_attachments
\n+Examples:
\n+Attaches a mixer to a voice. It must have the same frequency and\n channel configuration, but the depth may be different.
\nReturns true on success, false on failure.
\nSee also: al_detach_voice,\n al_voice_has_attachments
\n+Examples:
\n+\nSource\n@@ -2448,14 +2994,21 @@\n preloading sample data.
\nAt this time, we don\u2019t recommend attaching sample instances directly\n to voices. Use a mixer inbetween.
\nReturns true on success, false on failure.
\nSee also: al_detach_voice,\n al_voice_has_attachments
\n+Examples:
\n+Return the frequency of the voice (in Hz), e.g.\u00a044100.
\n@@ -2482,26 +3035,36 @@\n class=\"sourceCode c\">bool al_get_voice_playing(const ALLEGRO_VOICE *voice)
\n \n Return true if the voice is currently playing.
\nSee also: al_set_voice_playing
\n+Examples:
\n+Change whether a voice is playing or not. This can only work if the\n voice has a non-streaming object attached to it, e.g.\u00a0a sample instance.\n On success the voice\u2019s current sample position is reset.
\nReturns true on success, false on failure.
\nSee also: al_get_voice_playing
\n+Examples:
\n+When the voice has a non-streaming object attached to it, e.g.\u00a0a\n@@ -2547,14 +3110,23 @@\n accordingly. You can control the quality of this conversion using\n ALLEGRO_MIXER_QUALITY.
\nWhen going from mono to stereo (and above), the mixer reduces the\n volume of both channels by sqrt(2)
. When going from stereo\n (and above) to mono, the mixer reduces the volume of the left and right\n channels by sqrt(2)
before adding them to the center\n channel (if present).
Examples:
\n+\nReasonable default arguments are:
\n \nReturns true on success, false on error.
\nSee also: al_destroy_mixer,\n ALLEGRO_AUDIO_DEPTH, ALLEGRO_CHANNEL_CONF
\n+Examples:
\n+\nDestroys the mixer.
\nSee also: al_create_mixer
\n+Examples:
\n+\nReturn the default mixer, or NULL if one has not been set. Although\n@@ -2605,14 +3195,23 @@\n a single mixer attached to a voice is what you want. The default mixer\n is used by al_play_sample.
\nSee also: al_reserve_samples, al_play_sample, al_set_default_mixer, al_restore_default_mixer
\n+Examples:
\n+Sets the default mixer. All samples started with \n Returns true on success, false on error. It is invalid to attach a mixer to itself. See also: al_detach_mixer. Examples: Attach a sample instance to a mixer. The instance must not already be\n attached to anything. Returns true on success, false on failure. See also: al_detach_sample_instance. Examples: Attach an audio stream to a mixer. The stream must not already be\n attached to anything. Returns true on success, false on failure. See also: al_detach_audio_stream. Examples: Return the mixer frequency (in Hz). Return the mixer channel configuration. See also: ALLEGRO_CHANNEL_CONF. Examples: Return the mixer audio depth. See also: ALLEGRO_AUDIO_DEPTH. Examples: Return the mixer gain (amplification factor). The default is 1.0. Since: 5.0.6, 5.1.0 See also: al_set_mixer_gain. Examples: Set the mixer gain (amplification factor). Returns true on success, false on failure. Since: 5.0.6, 5.1.0 See also: al_get_mixer_gain Examples: Return the mixer quality. Return true if the mixer is playing. See also: al_set_mixer_playing. Examples: Change whether the mixer is playing. Returns true on success, false on failure. See also: al_get_mixer_playing. Examples: Return true if the mixer is attached to something. Detach the mixer from whatever it is attached to, if anything. See also: al_attach_mixer_to_mixer. Examples: \n Note: The callback is called from a dedicated audio\n thread. Examples:\n+
\n al_attach_sample_instance_to_mixer
\n \n \n \n+
\n al_attach_audio_stream_to_mixer
\n \n \n \n+
\n al_get_mixer_frequency
\n \n \n ALLEGRO_CHANNEL_CONF al_get_mixer_channels(const ALLEGRO_MIXER *mixer)
\n \n \n+
\n al_get_mixer_depth
\n \n \n \n+
\n al_get_mixer_gain
\n \n \n \n+
\n al_set_mixer_gain
\n \n \n \n+
\n al_get_mixer_quality
\n \n \n bool al_get_mixer_playing(const ALLEGRO_MIXER *mixer)
\n \n \n+
\n al_set_mixer_playing
\n \n \n \n+
\n al_get_mixer_attached
\n \n \n bool al_detach_mixer(ALLEGRO_MIXER *mixer)
\n \n \n+
\n al_set_mixer_postprocess_callback
\n bool al_set_mixer_postprocess_callback(ALLEGRO_MIXER *mixer,\n void (*pp_callback)(void *buf, unsigned int samples, void *data),\n void *pp_callback_userdata)
\n
\n+\n+
\n Miscelaneous
\n ALLEGRO_AUDIO_DEPTH
\n \n \n@@ -2886,14 +3556,23 @@\n
For convenience:
\nExamples:
\n+A special value for the pan property of sample instances and audio\n@@ -2903,14 +3582,19 @@\n
ALLEGRO_AUDIO_PAN_NONE is different from a pan value of 0.0\n (centered) because, when panning is enabled, we try to maintain a\n constant sound power level as a sample is panned from left to right. A\n sound coming out of one speaker should sound as loud as it does when\n split over two speakers. As a consequence, a sample with pan value 0.0\n will be 3 dB softer than the original level.
\n(Please correct us if this is wrong.)
\n+Examples:
\n+Speaker configuration (mono, stereo, 2.1, etc).
\n@@ -2919,14 +3603,23 @@\nExamples:
\n+Sample and stream playback mode.
\n@@ -2940,14 +3633,23 @@\n respects the loop end point.\nExamples:
\n+Events sent by Return the size of a sample, in bytes, for the given format. The\n format is one of the values listed under ALLEGRO_AUDIO_DEPTH. Examples: Return the number of channels for the given channel configuration,\n which is one of the values listed under ALLEGRO_CHANNEL_CONF. Examples: Fill a buffer with silence, for the given format and channel\n configuration. The buffer must have enough space for the given number of\n samples, and be properly aligned. Since: 5.1.8 Examples:size_t al_get_audio_depth_size(ALLEGRO_AUDIO_DEPTH depth)
\n \n \n+
\n al_get_channel_count
\n \n \n \n+
\n al_fill_silence
\n void al_fill_silence(void *buf, unsigned int samples,\n ALLEGRO_AUDIO_DEPTH depth, ALLEGRO_CHANNEL_CONF chan_conf)
\n+
\n \n \n