ohos-media-sys 0.1.0

Raw Bindings to the media framework on OpenHarmony
Documentation
// automatically generated by rust-bindgen 0.71.1

#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(deprecated)]
#[allow(unused_imports)]
use crate::averrors::OH_AVErrCode;

/// Initialization of avrecorder
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[repr(C)]
pub struct OH_AVRecorder {
    _unused: [u8; 0],
}
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
impl OH_AVRecorder_AudioSourceType {
    pub const AVRECORDER_DEFAULT: OH_AVRecorder_AudioSourceType = OH_AVRecorder_AudioSourceType(0);
    pub const AVRECORDER_MIC: OH_AVRecorder_AudioSourceType = OH_AVRecorder_AudioSourceType(1);
    pub const AVRECORDER_VOICE_RECOGNITION: OH_AVRecorder_AudioSourceType =
        OH_AVRecorder_AudioSourceType(2);
    pub const AVRECORDER_VOICE_COMMUNICATION: OH_AVRecorder_AudioSourceType =
        OH_AVRecorder_AudioSourceType(7);
    pub const AVRECORDER_VOICE_MESSAGE: OH_AVRecorder_AudioSourceType =
        OH_AVRecorder_AudioSourceType(10);
    pub const AVRECORDER_CAMCORDER: OH_AVRecorder_AudioSourceType =
        OH_AVRecorder_AudioSourceType(13);
}
#[repr(transparent)]
/// audio source type for recorder
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct OH_AVRecorder_AudioSourceType(pub ::core::ffi::c_uint);
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
impl OH_AVRecorder_VideoSourceType {
    pub const AVRECORDER_SURFACE_YUV: OH_AVRecorder_VideoSourceType =
        OH_AVRecorder_VideoSourceType(0);
    pub const AVRECORDER_SURFACE_ES: OH_AVRecorder_VideoSourceType =
        OH_AVRecorder_VideoSourceType(1);
}
#[repr(transparent)]
/// video source type for recorder
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct OH_AVRecorder_VideoSourceType(pub ::core::ffi::c_uint);
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
impl OH_AVRecorder_CodecMimeType {
    pub const AVRECORDER_VIDEO_AVC: OH_AVRecorder_CodecMimeType = OH_AVRecorder_CodecMimeType(2);
    pub const AVRECORDER_AUDIO_AAC: OH_AVRecorder_CodecMimeType = OH_AVRecorder_CodecMimeType(3);
    pub const AVRECORDER_AUDIO_MP3: OH_AVRecorder_CodecMimeType = OH_AVRecorder_CodecMimeType(4);
    pub const AVRECORDER_AUDIO_G711MU: OH_AVRecorder_CodecMimeType = OH_AVRecorder_CodecMimeType(5);
    pub const AVRECORDER_VIDEO_MPEG4: OH_AVRecorder_CodecMimeType = OH_AVRecorder_CodecMimeType(6);
    pub const AVRECORDER_VIDEO_HEVC: OH_AVRecorder_CodecMimeType = OH_AVRecorder_CodecMimeType(8);
    pub const AVRECORDER_AUDIO_AMR_NB: OH_AVRecorder_CodecMimeType = OH_AVRecorder_CodecMimeType(9);
    pub const AVRECORDER_AUDIO_AMR_WB: OH_AVRecorder_CodecMimeType =
        OH_AVRecorder_CodecMimeType(10);
}
#[repr(transparent)]
/// Enumerates Codec MIME types
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct OH_AVRecorder_CodecMimeType(pub ::core::ffi::c_uint);
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
impl OH_AVRecorder_ContainerFormatType {
    pub const AVRECORDER_CFT_MPEG_4: OH_AVRecorder_ContainerFormatType =
        OH_AVRecorder_ContainerFormatType(2);
    pub const AVRECORDER_CFT_MPEG_4A: OH_AVRecorder_ContainerFormatType =
        OH_AVRecorder_ContainerFormatType(6);
    pub const AVRECORDER_CFT_AMR: OH_AVRecorder_ContainerFormatType =
        OH_AVRecorder_ContainerFormatType(8);
    pub const AVRECORDER_CFT_MP3: OH_AVRecorder_ContainerFormatType =
        OH_AVRecorder_ContainerFormatType(9);
    pub const AVRECORDER_CFT_WAV: OH_AVRecorder_ContainerFormatType =
        OH_AVRecorder_ContainerFormatType(10);
    /// A audio container format type aac with ADTS.
    ///
    /// Available since API-level: 20
    #[cfg(feature = "api-20")]
    #[cfg_attr(docsrs, doc(cfg(feature = "api-20")))]
    pub const AVRECORDER_CFT_AAC: OH_AVRecorder_ContainerFormatType =
        OH_AVRecorder_ContainerFormatType(11);
}
#[repr(transparent)]
/// Enumerates container format type(The abbreviation for 'container format type' is CFT)
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct OH_AVRecorder_ContainerFormatType(pub ::core::ffi::c_uint);
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
impl OH_AVRecorder_State {
    pub const AVRECORDER_IDLE: OH_AVRecorder_State = OH_AVRecorder_State(0);
    pub const AVRECORDER_PREPARED: OH_AVRecorder_State = OH_AVRecorder_State(1);
    pub const AVRECORDER_STARTED: OH_AVRecorder_State = OH_AVRecorder_State(2);
    pub const AVRECORDER_PAUSED: OH_AVRecorder_State = OH_AVRecorder_State(3);
    pub const AVRECORDER_STOPPED: OH_AVRecorder_State = OH_AVRecorder_State(4);
    pub const AVRECORDER_RELEASED: OH_AVRecorder_State = OH_AVRecorder_State(5);
    pub const AVRECORDER_ERROR: OH_AVRecorder_State = OH_AVRecorder_State(6);
}
#[repr(transparent)]
/// Recorder States
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct OH_AVRecorder_State(pub ::core::ffi::c_uint);
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
impl OH_AVRecorder_StateChangeReason {
    pub const AVRECORDER_USER: OH_AVRecorder_StateChangeReason = OH_AVRecorder_StateChangeReason(0);
    pub const AVRECORDER_BACKGROUND: OH_AVRecorder_StateChangeReason =
        OH_AVRecorder_StateChangeReason(1);
}
#[repr(transparent)]
/// reason of recorder state change
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct OH_AVRecorder_StateChangeReason(pub ::core::ffi::c_uint);
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
impl OH_AVRecorder_FileGenerationMode {
    pub const AVRECORDER_APP_CREATE: OH_AVRecorder_FileGenerationMode =
        OH_AVRecorder_FileGenerationMode(0);
    pub const AVRECORDER_AUTO_CREATE_CAMERA_SCENE: OH_AVRecorder_FileGenerationMode =
        OH_AVRecorder_FileGenerationMode(1);
}
#[repr(transparent)]
/// mode of creating recorder file
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct OH_AVRecorder_FileGenerationMode(pub ::core::ffi::c_uint);
/// Provides the media recorder profile definitions
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct OH_AVRecorder_Profile {
    pub audioBitrate: i32,
    pub audioChannels: i32,
    pub audioCodec: OH_AVRecorder_CodecMimeType,
    pub audioSampleRate: i32,
    pub fileFormat: OH_AVRecorder_ContainerFormatType,
    pub videoBitrate: i32,
    pub videoCodec: OH_AVRecorder_CodecMimeType,
    pub videoFrameWidth: i32,
    pub videoFrameHeight: i32,
    pub videoFrameRate: i32,
    pub isHdr: bool,
    pub enableTemporalScale: bool,
}
/// Provides the geographical location definitions for media resources
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct OH_AVRecorder_Location {
    pub latitude: f32,
    pub longitude: f32,
}
/// define the basic template of metadata
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct OH_AVRecorder_MetadataTemplate {
    pub key: *mut ::core::ffi::c_char,
    pub value: *mut ::core::ffi::c_char,
}
/// Provides the container definition for media data
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct OH_AVRecorder_Metadata {
    pub genre: *mut ::core::ffi::c_char,
    pub videoOrientation: *mut ::core::ffi::c_char,
    pub location: OH_AVRecorder_Location,
    pub customInfo: OH_AVRecorder_MetadataTemplate,
}
/// Provides the media recorder configuration definitions
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct OH_AVRecorder_Config {
    pub audioSourceType: OH_AVRecorder_AudioSourceType,
    pub videoSourceType: OH_AVRecorder_VideoSourceType,
    pub profile: OH_AVRecorder_Profile,
    pub url: *mut ::core::ffi::c_char,
    pub fileGenerationMode: OH_AVRecorder_FileGenerationMode,
    pub metadata: OH_AVRecorder_Metadata,
    pub maxDuration: i32,
}
/// Provides Range with lower and upper limit
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct OH_AVRecorder_Range {
    pub min: i32,
    pub max: i32,
}
/// Provides encoder info
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct OH_AVRecorder_EncoderInfo {
    pub mimeType: OH_AVRecorder_CodecMimeType,
    pub type_: *mut ::core::ffi::c_char,
    pub bitRate: OH_AVRecorder_Range,
    pub frameRate: OH_AVRecorder_Range,
    pub width: OH_AVRecorder_Range,
    pub height: OH_AVRecorder_Range,
    pub channels: OH_AVRecorder_Range,
    pub sampleRate: *mut i32,
    pub sampleRateLen: i32,
}
/// Called when the state changed of current recording.
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
/// # Arguments
///
/// * `recorder` - The pointer to an OH_AVRecorder instance.
///
/// * `state` - Indicates the recorder state. For details, see [`OH_AVRecorder_State`].
///
/// * `reason` - Reason for recorder state change. For details, see [`OH_AVRecorder_StateChangeReason`].
///
/// * `userData` - Pointer to user specific data.
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
pub type OH_AVRecorder_OnStateChange = ::core::option::Option<
    unsafe extern "C" fn(
        recorder: *mut OH_AVRecorder,
        state: OH_AVRecorder_State,
        reason: OH_AVRecorder_StateChangeReason,
        userData: *mut ::core::ffi::c_void,
    ),
>;
/// Called when an error occurred during recording
///
/// Required System Capabilities: SystemCapability.Multimedia.Media.AVRecorder
/// # Arguments
///
/// * `recorder` - Pointer to an OH_AVRecorder instance.
///
/// * `errorCode` - Error code.
///
/// * `errorMsg` - Error message.
///
/// * `userData` - Pointer to user specific data.
///
/// Available since API-level: 18
#[cfg(feature = "api-18")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-18")))]
pub type OH_AVRecorder_OnError = ::core::option::Option<
    unsafe extern "C" fn(
        recorder: *mut OH_AVRecorder,
        errorCode: i32,
        errorMsg: *const ::core::ffi::c_char,
        userData: *mut ::core::ffi::c_void,
    ),
>;