(self: &Arc<Self>)
| 1465 | |
| 1466 | impl AndroidWebRtcSourceInner { |
| 1467 | fn create_native_encoder(self: &Arc<Self>) -> Result<(), AppError> { |
| 1468 | let weak = Arc::downgrade(self); |
| 1469 | let user_data = Weak::into_raw(weak) as *mut c_void; |
| 1470 | let mut error = ptr::null_mut(); |
| 1471 | let handle = unsafe { |
| 1472 | ffi::xcw_native_h264_encoder_create( |
| 1473 | Some(android_h264_encoder_frame_callback), |
| 1474 | user_data, |
| 1475 | &mut error, |
| 1476 | ) |
| 1477 | }; |
| 1478 | if handle.is_null() { |
| 1479 | unsafe { |
| 1480 | let _ = Weak::from_raw(user_data as *const AndroidWebRtcSourceInner); |
| 1481 | } |
| 1482 | return Err(unsafe { |
| 1483 | take_native_error(error, "Unable to create Android native H.264 encoder.") |
| 1484 | }); |
| 1485 | } |
| 1486 | self.callback_user_data |
| 1487 | .store(user_data as usize, Ordering::Release); |
| 1488 | self.encoder_handle |
| 1489 | .store(handle as usize, Ordering::Release); |
| 1490 | Ok(()) |
| 1491 | } |
| 1492 | |
| 1493 | fn h264_quality(&self) -> android::AndroidH264StreamQuality { |
| 1494 | *self.quality.lock().unwrap() |
no test coverage detected