duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

cubeb-internal.h (3372B)


      1 /*
      2  * Copyright © 2013 Mozilla Foundation
      3  *
      4  * This program is made available under an ISC-style license.  See the
      5  * accompanying file LICENSE for details.
      6  */
      7 #if !defined(CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5)
      8 #define CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5
      9 
     10 #include "cubeb/cubeb.h"
     11 #include "cubeb_assert.h"
     12 #include "cubeb_log.h"
     13 #include <stdio.h>
     14 #include <string.h>
     15 
     16 #ifdef __clang__
     17 #ifndef CLANG_ANALYZER_NORETURN
     18 #if __has_feature(attribute_analyzer_noreturn)
     19 #define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn))
     20 #else
     21 #define CLANG_ANALYZER_NORETURN
     22 #endif // ifndef CLANG_ANALYZER_NORETURN
     23 #endif // __has_feature(attribute_analyzer_noreturn)
     24 #else  // __clang__
     25 #define CLANG_ANALYZER_NORETURN
     26 #endif
     27 
     28 #if defined(__cplusplus)
     29 extern "C" {
     30 #endif
     31 
     32 #if defined(__cplusplus)
     33 }
     34 #endif
     35 
     36 struct cubeb_ops {
     37   int (*init)(cubeb ** context, char const * context_name);
     38   char const * (*get_backend_id)(cubeb * context);
     39   int (*get_max_channel_count)(cubeb * context, uint32_t * max_channels);
     40   int (*get_min_latency)(cubeb * context, cubeb_stream_params params,
     41                          uint32_t * latency_ms);
     42   int (*get_preferred_sample_rate)(cubeb * context, uint32_t * rate);
     43   int (*get_supported_input_processing_params)(
     44       cubeb * context, cubeb_input_processing_params * params);
     45   int (*enumerate_devices)(cubeb * context, cubeb_device_type type,
     46                            cubeb_device_collection * collection);
     47   int (*device_collection_destroy)(cubeb * context,
     48                                    cubeb_device_collection * collection);
     49   void (*destroy)(cubeb * context);
     50   int (*stream_init)(cubeb * context, cubeb_stream ** stream,
     51                      char const * stream_name, cubeb_devid input_device,
     52                      cubeb_stream_params * input_stream_params,
     53                      cubeb_devid output_device,
     54                      cubeb_stream_params * output_stream_params,
     55                      unsigned int latency, cubeb_data_callback data_callback,
     56                      cubeb_state_callback state_callback, void * user_ptr);
     57   void (*stream_destroy)(cubeb_stream * stream);
     58   int (*stream_start)(cubeb_stream * stream);
     59   int (*stream_stop)(cubeb_stream * stream);
     60   int (*stream_get_position)(cubeb_stream * stream, uint64_t * position);
     61   int (*stream_get_latency)(cubeb_stream * stream, uint32_t * latency);
     62   int (*stream_get_input_latency)(cubeb_stream * stream, uint32_t * latency);
     63   int (*stream_set_volume)(cubeb_stream * stream, float volumes);
     64   int (*stream_set_name)(cubeb_stream * stream, char const * stream_name);
     65   int (*stream_get_current_device)(cubeb_stream * stream,
     66                                    cubeb_device ** const device);
     67   int (*stream_set_input_mute)(cubeb_stream * stream, int mute);
     68   int (*stream_set_input_processing_params)(
     69       cubeb_stream * stream, cubeb_input_processing_params params);
     70   int (*stream_device_destroy)(cubeb_stream * stream, cubeb_device * device);
     71   int (*stream_register_device_changed_callback)(
     72       cubeb_stream * stream,
     73       cubeb_device_changed_callback device_changed_callback);
     74   int (*register_device_collection_changed)(
     75       cubeb * context, cubeb_device_type devtype,
     76       cubeb_device_collection_changed_callback callback, void * user_ptr);
     77 };
     78 
     79 #endif /* CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5 */