summaryrefslogtreecommitdiff
path: root/media/libcubeb/src/cubeb-internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'media/libcubeb/src/cubeb-internal.h')
-rw-r--r--media/libcubeb/src/cubeb-internal.h86
1 files changed, 49 insertions, 37 deletions
diff --git a/media/libcubeb/src/cubeb-internal.h b/media/libcubeb/src/cubeb-internal.h
index 79326e1ebf..dfcc186c57 100644
--- a/media/libcubeb/src/cubeb-internal.h
+++ b/media/libcubeb/src/cubeb-internal.h
@@ -8,7 +8,6 @@
#define CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5
#include "cubeb/cubeb.h"
-#include "cubeb_assert.h"
#include "cubeb_log.h"
#include <stdio.h>
#include <string.h>
@@ -21,7 +20,7 @@
#define CLANG_ANALYZER_NORETURN
#endif // ifndef CLANG_ANALYZER_NORETURN
#endif // __has_feature(attribute_analyzer_noreturn)
-#else // __clang__
+#else // __clang__
#define CLANG_ANALYZER_NORETURN
#endif
@@ -29,46 +28,59 @@
extern "C" {
#endif
+/* Crash the caller. */
+void cubeb_crash() CLANG_ANALYZER_NORETURN;
+
#if defined(__cplusplus)
}
#endif
struct cubeb_ops {
- int (*init)(cubeb ** context, char const * context_name);
- char const * (*get_backend_id)(cubeb * context);
- int (*get_max_channel_count)(cubeb * context, uint32_t * max_channels);
- int (*get_min_latency)(cubeb * context, cubeb_stream_params params,
- uint32_t * latency_ms);
- int (*get_preferred_sample_rate)(cubeb * context, uint32_t * rate);
- int (*enumerate_devices)(cubeb * context, cubeb_device_type type,
- cubeb_device_collection * collection);
- int (*device_collection_destroy)(cubeb * context,
- cubeb_device_collection * collection);
- void (*destroy)(cubeb * context);
- int (*stream_init)(cubeb * context, cubeb_stream ** stream,
- char const * stream_name, cubeb_devid input_device,
- cubeb_stream_params * input_stream_params,
- cubeb_devid output_device,
- cubeb_stream_params * output_stream_params,
- unsigned int latency, cubeb_data_callback data_callback,
- cubeb_state_callback state_callback, void * user_ptr);
- void (*stream_destroy)(cubeb_stream * stream);
- int (*stream_start)(cubeb_stream * stream);
- int (*stream_stop)(cubeb_stream * stream);
- int (*stream_get_position)(cubeb_stream * stream, uint64_t * position);
- int (*stream_get_latency)(cubeb_stream * stream, uint32_t * latency);
- int (*stream_get_input_latency)(cubeb_stream * stream, uint32_t * latency);
- int (*stream_set_volume)(cubeb_stream * stream, float volumes);
- int (*stream_set_name)(cubeb_stream * stream, char const * stream_name);
- int (*stream_get_current_device)(cubeb_stream * stream,
- cubeb_device ** const device);
- int (*stream_device_destroy)(cubeb_stream * stream, cubeb_device * device);
- int (*stream_register_device_changed_callback)(
- cubeb_stream * stream,
- cubeb_device_changed_callback device_changed_callback);
- int (*register_device_collection_changed)(
- cubeb * context, cubeb_device_type devtype,
- cubeb_device_collection_changed_callback callback, void * user_ptr);
+ int (* init)(cubeb ** context, char const * context_name);
+ char const * (* get_backend_id)(cubeb * context);
+ int (* get_max_channel_count)(cubeb * context, uint32_t * max_channels);
+ int (* get_min_latency)(cubeb * context,
+ cubeb_stream_params params,
+ uint32_t * latency_ms);
+ int (* get_preferred_sample_rate)(cubeb * context, uint32_t * rate);
+ int (* enumerate_devices)(cubeb * context, cubeb_device_type type,
+ cubeb_device_collection ** collection);
+ void (* destroy)(cubeb * context);
+ int (* stream_init)(cubeb * context,
+ cubeb_stream ** stream,
+ char const * stream_name,
+ cubeb_devid input_device,
+ cubeb_stream_params * input_stream_params,
+ cubeb_devid output_device,
+ cubeb_stream_params * output_stream_params,
+ unsigned int latency,
+ cubeb_data_callback data_callback,
+ cubeb_state_callback state_callback,
+ void * user_ptr);
+ void (* stream_destroy)(cubeb_stream * stream);
+ int (* stream_start)(cubeb_stream * stream);
+ int (* stream_stop)(cubeb_stream * stream);
+ int (* stream_get_position)(cubeb_stream * stream, uint64_t * position);
+ int (* stream_get_latency)(cubeb_stream * stream, uint32_t * latency);
+ int (* stream_set_volume)(cubeb_stream * stream, float volumes);
+ int (* stream_set_panning)(cubeb_stream * stream, float panning);
+ int (* stream_get_current_device)(cubeb_stream * stream,
+ cubeb_device ** const device);
+ int (* stream_device_destroy)(cubeb_stream * stream,
+ cubeb_device * device);
+ int (* stream_register_device_changed_callback)(cubeb_stream * stream,
+ cubeb_device_changed_callback device_changed_callback);
+ int (* register_device_collection_changed)(cubeb * context,
+ cubeb_device_type devtype,
+ cubeb_device_collection_changed_callback callback,
+ void * user_ptr);
};
+#define XASSERT(expr) do { \
+ if (!(expr)) { \
+ fprintf(stderr, "%s:%d - fatal error: %s\n", __FILE__, __LINE__, #expr); \
+ cubeb_crash(); \
+ } \
+ } while (0)
+
#endif /* CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5 */