Bug 1789547 - Update cubeb-coreaudio to 0.10.1 r=kinetik,cubeb-reviewers

Depends on D156631

Differential Revision: https://phabricator.services.mozilla.com/D156632
This commit is contained in:
az 2022-09-09 22:17:31 +00:00
parent 55da3cc045
commit 15679d2dba
9 changed files with 76 additions and 45 deletions

View File

@ -40,7 +40,7 @@ rev = "1f1fe1e08e01a9a534ec7f079702a583a0899ce7"
[source."https://github.com/mozilla/cubeb-coreaudio-rs"]
git = "https://github.com/mozilla/cubeb-coreaudio-rs"
replace-with = "vendored-sources"
rev = "44eca95823bb57e964cf7b6d9791ed2ccb4b2108"
rev = "ab933e7cbd569f79b37b540412a7990a5352dd66"
[source."https://github.com/mozilla/audioipc"]
git = "https://github.com/mozilla/audioipc"

4
Cargo.lock generated
View File

@ -900,7 +900,7 @@ dependencies = [
[[package]]
name = "coreaudio-sys-utils"
version = "0.1.0"
source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=44eca95823bb57e964cf7b6d9791ed2ccb4b2108#44eca95823bb57e964cf7b6d9791ed2ccb4b2108"
source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=ab933e7cbd569f79b37b540412a7990a5352dd66#ab933e7cbd569f79b37b540412a7990a5352dd66"
dependencies = [
"core-foundation-sys",
"coreaudio-sys",
@ -1146,7 +1146,7 @@ dependencies = [
[[package]]
name = "cubeb-coreaudio"
version = "0.1.0"
source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=44eca95823bb57e964cf7b6d9791ed2ccb4b2108#44eca95823bb57e964cf7b6d9791ed2ccb4b2108"
source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=ab933e7cbd569f79b37b540412a7990a5352dd66#ab933e7cbd569f79b37b540412a7990a5352dd66"
dependencies = [
"atomic",
"audio-mixer",

View File

@ -1 +1 @@
{"files":{".circleci/config.yml":"7f3dc865105ca8f33965a7958b1fe2e627ae2d5a703f3b2a4ab6e2e796018597",".editorconfig":"4e53b182bcc78b83d7e1b5c03efa14d22d4955c4ed2514d1ba4e99c1eb1a50ba",".githooks/pre-push":"8b8b26544cd56f54c0c33812551f786bb25cb08c86dbfeb6bf3daad881c826a1",".github/workflows/test.yml":"aa1998a3b104ad131805ca3513832cef3f65300192824f8b1efc9a5a0cc108f6",".travis.yml":"dc07bac53f70f16c9bdf52264bdc58500ae6018c1b4c567bc7642f6b4ca3cc35","Cargo.toml":"4671b9a0fbf47773cf01e40592ac5b5fe5cd93722f425f249e6c8b432ce3871c","LICENSE":"6e6f56aff5bbf3cbc60747e152fb1a719bd0716aaf6d711c554f57d92e96297c","README.md":"0007782a05a5330f739ad789c19c82562c82e32386b0447000fc72c0d48405bc","build-audiounit-rust-in-cubeb.sh":"d228a05985dcd02ec1ecac66a2b64dae5a530804a25a7054ccc95905aedfb7ef","install_git_hook.sh":"d38c8e51e636f6b90b489621ac34ccd1d1b1f40dccce3d178ed1da1c5068f16d","install_rustfmt_clippy.sh":"4ae90d8dcb9757cb3ae4ae142ef80e5377c0dde61c63f4a3c32418646e80ca7b","run_device_tests.sh":"cac9a7d588c2be0efa842c15d24c8cf0573bc9f9d73011662ba764dc9f6245e8","run_sanitizers.sh":"8828c73439dfd540cd21fc713c4a1011ec05baca6f282f285743f310ace39563","run_tests.sh":"916a7ae4a406d2274417d6eca939a878db5adcb6144e5680d9d148bf90178f1c","src/backend/aggregate_device.rs":"e822b4496e2ea5c6e1a288c6e92f57e598abf67cb0bdff813f859d57c63be5f9","src/backend/auto_release.rs":"050fdcee74cf46b9a8a85a877e166d72a853d33220f59cf734cbb6ea09daa441","src/backend/buffer_manager.rs":"7aa294ef26ee68ff6a131b892a97ea65571f1fe0dedaef2cc6c966d1e135d89d","src/backend/device_property.rs":"2a63837b98b9b6bfb314b4aa6dce919412b71e13e18c7b8f3477aa1482f70b29","src/backend/mixer.rs":"949c34927ba72b3365bc733a63b2f7950aef707ee08363f97242a4de6b7d4818","src/backend/mod.rs":"41d103a20b72ddf1b45315dc5230722762b16b192dfafe146279447230a21272","src/backend/resampler.rs":"8641c672d00f77be287d64f6cd4a2b2cd36f8630e2ded1eff6b39834b1b7ddc3","src/backend/tests/aggregate_device.rs":"7542cbb1c82398d00a5cba5b335842c517af2cda887946ebb5aaf512fd06b527","src/backend/tests/api.rs":"6eafca24d61729cad108b34c01e339130f9c479ebbe1026dc9c65778c1d9cfe0","src/backend/tests/backlog.rs":"3b189a7e036543c467cc242af0ed3332721179ee2b1c8847a6db563546f1ac52","src/backend/tests/device_change.rs":"97555244a8081251f1447c6a677609d1e91f33c9c0f4fb3f8a4082005c68ae0c","src/backend/tests/device_property.rs":"373f76d3bee83b263db3f02be3b94b408bdf852d84e4b5153273fda34b11a374","src/backend/tests/interfaces.rs":"b48d646b6ea06ca1bf7ce4b0ada59a164bc094e40b0cd66bb63b269f9032b022","src/backend/tests/manual.rs":"8d485a6666a3f4518b03e39dab80bf2acfd760af2d2f43bad99023cb135b38ca","src/backend/tests/mod.rs":"8dba770023d7f9c4228f0e11915347f0e07da5fd818e3ee4478c4b197af9aa2a","src/backend/tests/parallel.rs":"f9e1883660d6146b6e5075806561f5f689810e25c5e7764dfd28c9b939821a49","src/backend/tests/tone.rs":"779cc14fc2a362bf7f26ce66ad70c0639501176175655a99b7fefb3c59d56c7a","src/backend/tests/utils.rs":"3c430e519c0e7a17dda6b57c110fab725a846da39606fd99274bad20a637cf35","src/backend/utils.rs":"6c3ffbcd602e6cc9f56deb9ecb07b2eef2e6f074ef924178e466f380aae5c595","src/capi.rs":"21b66b70545bf04ec719928004d1d9adb45b24ced51288f5b2993d79aaf78f5f","src/lib.rs":"5e586d45cd6b3722f0a6736d9252593299269817a153eef1930a5fb9bfbb56f5","todo.md":"efc1f012eb9a331a040cad4ac03aa79307f25885f71b6fb38f3ad7af8d7d515c"},"package":null}
{"files":{".circleci/config.yml":"7f3dc865105ca8f33965a7958b1fe2e627ae2d5a703f3b2a4ab6e2e796018597",".editorconfig":"4e53b182bcc78b83d7e1b5c03efa14d22d4955c4ed2514d1ba4e99c1eb1a50ba",".githooks/pre-push":"8b8b26544cd56f54c0c33812551f786bb25cb08c86dbfeb6bf3daad881c826a1",".github/workflows/test.yml":"aa1998a3b104ad131805ca3513832cef3f65300192824f8b1efc9a5a0cc108f6",".travis.yml":"dc07bac53f70f16c9bdf52264bdc58500ae6018c1b4c567bc7642f6b4ca3cc35","Cargo.toml":"24d952cc7a852ea8675683d6b4332254eac0d64ba60749d3797381bbf4d32ad9","LICENSE":"6e6f56aff5bbf3cbc60747e152fb1a719bd0716aaf6d711c554f57d92e96297c","README.md":"0007782a05a5330f739ad789c19c82562c82e32386b0447000fc72c0d48405bc","build-audiounit-rust-in-cubeb.sh":"d228a05985dcd02ec1ecac66a2b64dae5a530804a25a7054ccc95905aedfb7ef","install_git_hook.sh":"d38c8e51e636f6b90b489621ac34ccd1d1b1f40dccce3d178ed1da1c5068f16d","install_rustfmt_clippy.sh":"4ae90d8dcb9757cb3ae4ae142ef80e5377c0dde61c63f4a3c32418646e80ca7b","run_device_tests.sh":"cac9a7d588c2be0efa842c15d24c8cf0573bc9f9d73011662ba764dc9f6245e8","run_sanitizers.sh":"8828c73439dfd540cd21fc713c4a1011ec05baca6f282f285743f310ace39563","run_tests.sh":"916a7ae4a406d2274417d6eca939a878db5adcb6144e5680d9d148bf90178f1c","src/backend/aggregate_device.rs":"e822b4496e2ea5c6e1a288c6e92f57e598abf67cb0bdff813f859d57c63be5f9","src/backend/auto_release.rs":"050fdcee74cf46b9a8a85a877e166d72a853d33220f59cf734cbb6ea09daa441","src/backend/buffer_manager.rs":"c32bff1f05c47afc5472d2ebdd321c1186bffcf676ba03751c0962277963ffcc","src/backend/device_property.rs":"2a63837b98b9b6bfb314b4aa6dce919412b71e13e18c7b8f3477aa1482f70b29","src/backend/mixer.rs":"ed299d3954e2a823060c870a8244673a7d4bca530830cb66b964d047a80ee3af","src/backend/mod.rs":"280da1670b87c776ee1f63aa89ba55277ef0839fa6ef4bd21672826c4c87872b","src/backend/resampler.rs":"8641c672d00f77be287d64f6cd4a2b2cd36f8630e2ded1eff6b39834b1b7ddc3","src/backend/tests/aggregate_device.rs":"7542cbb1c82398d00a5cba5b335842c517af2cda887946ebb5aaf512fd06b527","src/backend/tests/api.rs":"6eafca24d61729cad108b34c01e339130f9c479ebbe1026dc9c65778c1d9cfe0","src/backend/tests/backlog.rs":"3b189a7e036543c467cc242af0ed3332721179ee2b1c8847a6db563546f1ac52","src/backend/tests/device_change.rs":"97555244a8081251f1447c6a677609d1e91f33c9c0f4fb3f8a4082005c68ae0c","src/backend/tests/device_property.rs":"373f76d3bee83b263db3f02be3b94b408bdf852d84e4b5153273fda34b11a374","src/backend/tests/interfaces.rs":"9ed857625147c3d13c1458e630db8a78362612e6ef679d918bfdafa6e927fe75","src/backend/tests/manual.rs":"8d485a6666a3f4518b03e39dab80bf2acfd760af2d2f43bad99023cb135b38ca","src/backend/tests/mod.rs":"8dba770023d7f9c4228f0e11915347f0e07da5fd818e3ee4478c4b197af9aa2a","src/backend/tests/parallel.rs":"f9e1883660d6146b6e5075806561f5f689810e25c5e7764dfd28c9b939821a49","src/backend/tests/tone.rs":"779cc14fc2a362bf7f26ce66ad70c0639501176175655a99b7fefb3c59d56c7a","src/backend/tests/utils.rs":"3c430e519c0e7a17dda6b57c110fab725a846da39606fd99274bad20a637cf35","src/backend/utils.rs":"6c3ffbcd602e6cc9f56deb9ecb07b2eef2e6f074ef924178e466f380aae5c595","src/capi.rs":"21b66b70545bf04ec719928004d1d9adb45b24ced51288f5b2993d79aaf78f5f","src/lib.rs":"5e586d45cd6b3722f0a6736d9252593299269817a153eef1930a5fb9bfbb56f5","todo.md":"efc1f012eb9a331a040cad4ac03aa79307f25885f71b6fb38f3ad7af8d7d515c"},"package":null}

View File

@ -11,7 +11,7 @@ crate-type = ["staticlib", "rlib"]
atomic = "0.4"
bitflags = "1.0"
coreaudio-sys-utils = { path = "coreaudio-sys-utils" }
cubeb-backend = "0.10"
cubeb-backend = "0.10.1"
float-cmp = "0.6"
libc = "0.2"
lazy_static = "1.2"

View File

@ -208,7 +208,7 @@ impl BufferManager {
};
assert!(pushed <= to_push, "We don't support upmix");
if pushed != to_push {
cubeb_log!(
cubeb_alog!(
"Input ringbuffer full, could only push {} instead of {}",
pushed,
to_push
@ -222,6 +222,11 @@ impl BufferManager {
unsafe { slice::from_raw_parts_mut::<i16>(data as *mut i16, needed_samples) };
let read = p.pop_slice(input);
if read < needed_samples {
cubeb_alog!(
"Underrun during input data pull: (needed: {}, available: {})",
needed_samples,
read
);
for i in 0..(needed_samples - read) {
input[read + i] = 0;
}
@ -232,6 +237,11 @@ impl BufferManager {
unsafe { slice::from_raw_parts_mut::<f32>(data as *mut f32, needed_samples) };
let read = p.pop_slice(input);
if read < needed_samples {
cubeb_alog!(
"Underrun during input data pull: (needed: {}, available: {})",
needed_samples,
read
);
for i in 0..(needed_samples - read) {
input[read + i] = 0.0;
}

View File

@ -180,7 +180,7 @@ impl Mixer {
assert!(out_channel_count > 0);
cubeb_log!(
"Create a mixer with input channel count: {}, input layout: {:?}, \
"Creating a mixer with input channel count: {}, input layout: {:?},\
out channel count: {}, output channels: {:?}",
in_channel_count,
input_layout,
@ -189,7 +189,9 @@ impl Mixer {
);
let input_channels = if in_channel_count as u32 != input_layout.bits().count_ones() {
cubeb_log!("Mismatch between input channels and layout. Apply default layout instead");
cubeb_log!(
"Mismatch between input channels and layout. Applying default layout instead"
);
get_default_channel_order(in_channel_count)
} else {
get_channel_order(input_layout)

View File

@ -199,7 +199,7 @@ fn create_device_info(devid: AudioDeviceID, devtype: DeviceType) -> Option<devic
};
if devid == kAudioObjectUnknown {
cubeb_log!("Use the system default device");
cubeb_log!("Using the system default device");
flags |= device_flags::DEV_SELECTED_DEFAULT;
get_default_device(devtype).map(|id| device_info { id, flags })
} else {
@ -390,7 +390,7 @@ extern "C" fn audiounit_input_callback(
// output device is no longer valid and must be reset.
// For now state that no error occurred and feed silence, stream will be
// resumed once reinit has completed.
cubeb_logv!(
cubeb_alog!(
"({:p}) input: reinit pending, output will pull silence instead",
stm.core_stream_data.stm_ptr
);
@ -402,7 +402,7 @@ extern "C" fn audiounit_input_callback(
ErrorHandle::Return(status)
};
cubeb_logv!(
cubeb_alogv!(
"({:p}) input: buffers {}, size {}, channels {}, rendered frames {}, total frames {}.",
stm.core_stream_data.stm_ptr,
input_buffer_list.mNumberBuffers,
@ -530,7 +530,7 @@ extern "C" fn audiounit_output_callback(
};
if stm.stopped.load(Ordering::SeqCst) {
cubeb_log!("({:p}) output stopped.", stm as *const AudioUnitStream);
cubeb_alog!("({:p}) output stopped.", stm as *const AudioUnitStream);
audiounit_make_silent(&mut buffers[0]);
return NO_ERR;
}
@ -554,7 +554,7 @@ extern "C" fn audiounit_output_callback(
.store(output_latency_frames, Ordering::SeqCst);
}
cubeb_logv!(
cubeb_alogv!(
"({:p}) output: buffers {}, size {}, channels {}, frames {}.",
stm as *const AudioUnitStream,
buffers.len(),
@ -599,7 +599,7 @@ extern "C" fn audiounit_output_callback(
if prev_frames_written == 0 && buffered_input_frames > input_frames_needed as usize {
input_buffer_manager.trim(input_frames_needed);
let popped_frames = buffered_input_frames - input_frames_needed as usize;
cubeb_log!("Dropping {} frames in input buffer.", popped_frames);
cubeb_alog!("Dropping {} frames in input buffer.", popped_frames);
}
let input_frames = if input_frames_needed > buffered_input_frames
@ -609,7 +609,7 @@ extern "C" fn audiounit_output_callback(
{
// The silent frames will be inserted in `get_linear_data` below.
let silent_frames_to_push = input_frames_needed - buffered_input_frames;
cubeb_log!(
cubeb_alog!(
"({:p}) Missing Frames: {} will append {} frames of input silence.",
stm.core_stream_data.stm_ptr,
if stm.frames_read.load(Ordering::SeqCst) == 0 {
@ -716,7 +716,7 @@ extern "C" fn audiounit_property_listener_callback(
let addrs = unsafe { slice::from_raw_parts(addresses, address_count as usize) };
if stm.switching_device.load(Ordering::SeqCst) {
cubeb_log!(
"Switching is already taking place. Skip Events for device {}",
"Switching is already taking place. Skipping event for device {}",
id
);
return NO_ERR;
@ -725,9 +725,8 @@ extern "C" fn audiounit_property_listener_callback(
let mut input_device_dead = false;
// Log the events
cubeb_log!(
"({:p}) Handle {} device changed events for device {}",
"({:p}) Handling {} device changed events for device {}",
stm as *const AudioUnitStream,
address_count,
id
@ -743,7 +742,7 @@ extern "C" fn audiounit_property_listener_callback(
// Handle the events
if input_device_dead {
cubeb_log!("The user-selected input device is dead, enter error state");
cubeb_log!("The user-selected input device is dead, entering error state");
stm.stopped.store(true, Ordering::SeqCst);
stm.core_stream_data.stop_audiounits();
stm.close_on_error();
@ -803,7 +802,7 @@ fn audiounit_convert_channel_layout(layout: &AudioChannelLayout) -> Vec<mixer::C
// kAudioChannelLayoutTag_Mono
// kAudioChannelLayoutTag_Stereo
// ....
cubeb_log!("Only handle UseChannelDescriptions for now.\n");
cubeb_log!("Only handling UseChannelDescriptions for now.\n");
return Vec::new();
}
@ -962,7 +961,7 @@ fn create_audiounit(device: &device_info) -> Result<AudioUnit> {
set_device_to_audiounit(unit, device.id).map_err(|e| {
cubeb_log!(
"Fail to set device {} to the created audiounit. Error: {}",
"Failed to set device {} to the created audiounit. Error: {}",
device.id,
e
);
@ -1158,7 +1157,7 @@ fn set_buffer_size_sync(unit: AudioUnit, devtype: DeviceType, frames: u32) -> Re
set_buffer_size(unit, devtype, frames).map_err(|e| {
cubeb_log!(
"Fail to set buffer size for AudioUnit {:?} for {:?}. Error: {}",
"Failed to set buffer size for AudioUnit {:?} for {:?}. Error: {}",
unit,
devtype,
e
@ -1172,7 +1171,7 @@ fn set_buffer_size_sync(unit: AudioUnit, devtype: DeviceType, frames: u32) -> Re
let (chg, timeout_res) = cvar.wait_timeout(changed, waiting_time).unwrap();
if timeout_res.timed_out() {
cubeb_log!(
"Time out for waiting the buffer frame size setting of AudioUnit {:?} for {:?}",
"Timed out for waiting the buffer frame size setting of AudioUnit {:?} for {:?}",
unit,
devtype
);
@ -1303,7 +1302,7 @@ fn get_fixed_latency(devid: AudioObjectID, devtype: DeviceType) -> u32 {
let stream_latency = get_device_streams(devid, devtype).and_then(|streams| {
if streams.is_empty() {
cubeb_log!(
"No any stream on device {} in {:?} scope!",
"No stream on device {} in {:?} scope!",
devid,
devtype
);
@ -1338,13 +1337,13 @@ fn get_device_group_id(
match get_custom_group_id(id, devtype) {
Some(id) => return Ok(id),
None => {
cubeb_log!("Get model uid instead.");
cubeb_log!("Getting model UID instead.");
}
};
}
Ok(trans_type) => {
cubeb_log!(
"The transport type is {:?}. Get model uid instead.",
"The transport type is {:?}. Getting model UID instead.",
convert_uint32_into_string(trans_type)
);
}
@ -1373,7 +1372,7 @@ fn get_custom_group_id(id: AudioDeviceID, devtype: DeviceType) -> Option<CString
s @ Ok(IMIC) | s @ Ok(ISPK) => {
const GROUP_ID: &str = "builtin-internal-mic|spk";
cubeb_log!(
"Use hardcode group id: {} when source is: {:?}.",
"Using hardcode group id: {} when source is: {:?}.",
GROUP_ID,
convert_uint32_into_string(s.unwrap())
);
@ -1382,7 +1381,7 @@ fn get_custom_group_id(id: AudioDeviceID, devtype: DeviceType) -> Option<CString
s @ Ok(EMIC) | s @ Ok(HDPN) => {
const GROUP_ID: &str = "builtin-external-mic|hdpn";
cubeb_log!(
"Use hardcode group id: {} when source is: {:?}.",
"Using hardcode group id: {} when source is: {:?}.",
GROUP_ID,
convert_uint32_into_string(s.unwrap())
);
@ -1444,7 +1443,7 @@ fn create_cubeb_device_info(
}
Err(e) => {
cubeb_log!(
"Cannot get the uid for device {} in {:?} scope. Error: {}",
"Cannot get the UID for device {} in {:?} scope. Error: {}",
devid,
devtype,
e
@ -1458,7 +1457,7 @@ fn create_cubeb_device_info(
}
Err(e) => {
cubeb_log!(
"Cannot get the model uid for device {} in {:?} scope. Error: {}",
"Cannot get the model UID for device {} in {:?} scope. Error: {}",
devid,
devtype,
e
@ -1547,7 +1546,7 @@ fn create_cubeb_device_info(
latency + range.mMaximum as u32,
),
Err(e) => {
cubeb_log!("Cannot get the buffer frame size for device {} in {:?} scope. Use default value instead. Error: {}", devid, devtype, e);
cubeb_log!("Cannot get the buffer frame size for device {} in {:?} scope. Using default value instead. Error: {}", devid, devtype, e);
(
10 * dev_info.default_rate / 1000,
100 * dev_info.default_rate / 1000,
@ -1659,7 +1658,7 @@ fn audiounit_get_devices_of_type(devtype: DeviceType) -> Vec<AudioObjectID> {
let info = format!("{} ({})", device, label);
if let Ok(channels) = get_channel_count(device, devtype) {
cubeb_log!("device {} has {} {:?}-channels", info, channels, devtype);
cubeb_log!("Device {} has {} {:?}-channels", info, channels, devtype);
if channels > 0 {
devices_in_scope.push(device);
}
@ -1755,7 +1754,9 @@ impl DevicesData {
}
fn is_empty(&self) -> bool {
self.changed_callback == None && self.callback_user_ptr.is_null() && self.devices.is_empty()
self.changed_callback.is_none()
&& self.callback_user_ptr.is_null()
&& self.devices.is_empty()
}
}
@ -2350,17 +2351,32 @@ impl<'ctx> CoreStreamData<'ctx> {
// It's impossible to create an aggregate device from an aggregate device, and it's
// unnecessary to create an aggregate device when opening the same device input/output. In
// all other cases, use an aggregate device.
let mut either_already_aggregate = false;
if self.has_input() {
either_already_aggregate |=
let input_is_aggregate =
get_device_transport_type(self.input_device.id, DeviceType::INPUT).unwrap_or(0)
== kAudioDeviceTransportTypeAggregate;
if input_is_aggregate {
either_already_aggregate = true;
}
cubeb_log!(
"Input device ID: {} (aggregate: {:?})",
self.input_device.id,
input_is_aggregate
);
}
if self.has_output() {
either_already_aggregate |=
let output_is_aggregate =
get_device_transport_type(self.output_device.id, DeviceType::OUTPUT).unwrap_or(0)
== kAudioDeviceTransportTypeAggregate;
if output_is_aggregate {
either_already_aggregate = true;
}
cubeb_log!(
"Output device ID: {} (aggregate: {:?})",
self.input_device.id,
output_is_aggregate
);
}
// Only use an aggregate device when the device are different.
self.has_input()
@ -2437,15 +2453,15 @@ impl<'ctx> CoreStreamData<'ctx> {
out_dev_info.flags = device_flags::DEV_OUTPUT;
self.aggregate_device = Some(device);
cubeb_log!(
"({:p}) Use aggregate device {} for input and output.",
"({:p}) Using an aggregate device {} for input and output.",
self.stm_ptr,
self.aggregate_device.as_ref().unwrap().get_device_id()
);
}
Err(e) => {
cubeb_log!(
"({:p}) Create aggregate devices failed. Error: {}.\
Use assigned devices directly instead.",
"({:p}) Creation of aggregate devices failed. Error: {}.\
Using assigned devices directly instead.",
self.stm_ptr,
e
);
@ -2461,7 +2477,7 @@ impl<'ctx> CoreStreamData<'ctx> {
// Configure I/O stream
if self.has_input() {
cubeb_log!(
"({:p}) Initialize input by device info: {:?}",
"({:p}) Initializing input by device info: {:?}",
self.stm_ptr,
in_dev_info
);

View File

@ -574,11 +574,14 @@ fn test_ops_stream_current_device() {
println!("stream_get_current_device only works when the machine has both input and output devices");
return;
}
let mut device: *mut ffi::cubeb_device = ptr::null_mut();
assert_eq!(
unsafe { OPS.stream_get_current_device.unwrap()(stream, &mut device) },
ffi::CUBEB_OK
);
if unsafe { OPS.stream_get_current_device.unwrap()(stream, &mut device) } != ffi::CUBEB_OK {
// It can happen when we fail to get the device source.
println!("stream_get_current_device fails. Skip this test.");
return;
}
assert!(!device.is_null());
// Uncomment the below to print out the results.
// let deviceref = unsafe { DeviceRef::from_ptr(device) };

View File

@ -22,7 +22,7 @@ static_prefs = { path = "../../../../modules/libpref/init/static_prefs" }
profiler_helper = { path = "../../../../tools/profiler/rust-helper", optional = true }
mozurl = { path = "../../../../netwerk/base/mozurl" }
webrender_bindings = { path = "../../../../gfx/webrender_bindings" }
cubeb-coreaudio = { git = "https://github.com/mozilla/cubeb-coreaudio-rs", rev = "44eca95823bb57e964cf7b6d9791ed2ccb4b2108", optional = true }
cubeb-coreaudio = { git = "https://github.com/mozilla/cubeb-coreaudio-rs", rev = "ab933e7cbd569f79b37b540412a7990a5352dd66", optional = true }
cubeb-pulse = { git = "https://github.com/mozilla/cubeb-pulse-rs", rev="1f1fe1e08e01a9a534ec7f079702a583a0899ce7", optional = true, features=["pulse-dlopen"] }
cubeb-sys = { version = "0.10.1", optional = true, features=["gecko-in-tree"] }
audioipc2-client = { git = "https://github.com/kinetiknz/audioipc-2", rev = "ea7cabf8c9dc051a52ffb6cd7d2564b29b7428eb", optional = true } # macos (v2) branch