···13211321 * fallback, stderr).
13221322 */
1323132313241324+#define RETRO_ENVIRONMENT_GET_INPUT_MAX_USERS 61
13251325+ /* unsigned * --
13261326+ * Unsigned value is the number of active input devices
13271327+ * provided by the frontend. This may change between
13281328+ * frames, but will remain constant for the duration
13291329+ * of each frame.
13301330+ * If callback returns true, a core need not poll any
13311331+ * input device with an index greater than or equal to
13321332+ * the number of active devices.
13331333+ * If callback returns false, the number of active input
13341334+ * devices is unknown. In this case, all input devices
13351335+ * should be considered active.
13361336+ */
13371337+13381338+#define RETRO_ENVIRONMENT_SET_AUDIO_BUFFER_STATUS_CALLBACK 62
13391339+ /* const struct retro_audio_buffer_status_callback * --
13401340+ * Lets the core know the occupancy level of the frontend
13411341+ * audio buffer. Can be used by a core to attempt frame
13421342+ * skipping in order to avoid buffer under-runs.
13431343+ * A core may pass NULL to disable buffer status reporting
13441344+ * in the frontend.
13451345+ */
13461346+13471347+#define RETRO_ENVIRONMENT_SET_MINIMUM_AUDIO_LATENCY 63
13481348+ /* const unsigned * --
13491349+ * Sets minimum frontend audio latency in milliseconds.
13501350+ * Resultant audio latency may be larger than set value,
13511351+ * or smaller if a hardware limit is encountered. A frontend
13521352+ * is expected to honour requests up to 512 ms.
13531353+ *
13541354+ * - If value is less than current frontend
13551355+ * audio latency, callback has no effect
13561356+ * - If value is zero, default frontend audio
13571357+ * latency is set
13581358+ *
13591359+ * May be used by a core to increase audio latency and
13601360+ * therefore decrease the probability of buffer under-runs
13611361+ * (crackling) when performing 'intensive' operations.
13621362+ * A core utilising RETRO_ENVIRONMENT_SET_AUDIO_BUFFER_STATUS_CALLBACK
13631363+ * to implement audio-buffer-based frame skipping may achieve
13641364+ * optimal results by setting the audio latency to a 'high'
13651365+ * (typically 6x or 8x) integer multiple of the expected
13661366+ * frame time.
13671367+ *
13681368+ * WARNING: This can only be called from within retro_run().
13691369+ * Calling this can require a full reinitialization of audio
13701370+ * drivers in the frontend, so it is important to call it very
13711371+ * sparingly, and usually only with the users explicit consent.
13721372+ * An eventual driver reinitialize will happen so that audio
13731373+ * callbacks happening after this call within the same retro_run()
13741374+ * call will target the newly initialized driver.
13751375+ */
13761376+13241377/* VFS functionality */
1325137813261379/* File paths:
···22102263 retro_usec_t reference;
22112264};
2212226522662266+/* Notifies a libretro core of the current occupancy
22672267+ * level of the frontend audio buffer.
22682268+ *
22692269+ * - active: 'true' if audio buffer is currently
22702270+ * in use. Will be 'false' if audio is
22712271+ * disabled in the frontend
22722272+ *
22732273+ * - occupancy: Given as a value in the range [0,100],
22742274+ * corresponding to the occupancy percentage
22752275+ * of the audio buffer
22762276+ *
22772277+ * - underrun_likely: 'true' if the frontend expects an
22782278+ * audio buffer underrun during the
22792279+ * next frame (indicates that a core
22802280+ * should attempt frame skipping)
22812281+ *
22822282+ * It will be called right before retro_run() every frame. */
22832283+typedef void (RETRO_CALLCONV *retro_audio_buffer_status_callback_t)(
22842284+ bool active, unsigned occupancy, bool underrun_likely);
22852285+struct retro_audio_buffer_status_callback
22862286+{
22872287+ retro_audio_buffer_status_callback_t callback;
22882288+};
22892289+22132290/* Pass this to retro_video_refresh_t if rendering to hardware.
22142291 * Passing NULL to retro_video_refresh_t is still a frame dupe as normal.
22152292 * */
···26582735struct retro_system_info
26592736{
26602737 /* All pointers are owned by libretro implementation, and pointers must
26612661- * remain valid until retro_deinit() is called. */
27382738+ * remain valid until it is unloaded. */
2662273926632740 const char *library_name; /* Descriptive name of library. Should not
26642741 * contain any version numbers, etc. */