fixed some method return error types
parent
1c9c665a7a
commit
0107178024
|
@ -45,6 +45,7 @@ impl MediaPlayerAudioEx for MediaPlayer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_audio_track_description(&self) -> Option<Vec<TrackDescription>> {
|
fn get_audio_track_description(&self) -> Option<Vec<TrackDescription>> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let p0 = sys::libvlc_audio_get_track_description(self.ptr);
|
let p0 = sys::libvlc_audio_get_track_description(self.ptr);
|
||||||
|
|
22
src/core.rs
22
src/core.rs
|
@ -53,7 +53,7 @@ impl Instance {
|
||||||
/// Create and initialize a libvlc instance with specified args.
|
/// Create and initialize a libvlc instance with specified args.
|
||||||
/// Note: args.len() has to be less or equal to i32::MAX
|
/// Note: args.len() has to be less or equal to i32::MAX
|
||||||
/// Note: libvlc discourages using arguments as these are not guaranteed to be stable between different versions of libvlc
|
/// Note: libvlc discourages using arguments as these are not guaranteed to be stable between different versions of libvlc
|
||||||
pub fn with_args(args: Option<Vec<String>>) -> Option<Instance> {
|
pub fn with_args(args: Option<Vec<String>>) -> Result<Instance, InternalError> {
|
||||||
let args_c_ptr: Vec<*const c_char>;
|
let args_c_ptr: Vec<*const c_char>;
|
||||||
let args_c: Vec<CString>;
|
let args_c: Vec<CString>;
|
||||||
if let Some(argv) = args {
|
if let Some(argv) = args {
|
||||||
|
@ -74,15 +74,15 @@ impl Instance {
|
||||||
};
|
};
|
||||||
|
|
||||||
if p.is_null() {
|
if p.is_null() {
|
||||||
return None;
|
Err(InternalError)
|
||||||
|
} else {
|
||||||
|
Ok(Instance { ptr: p })
|
||||||
}
|
}
|
||||||
|
|
||||||
Some(Instance { ptr: p })
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create and initialize a libvlc instance.
|
/// Create and initialize a libvlc instance.
|
||||||
pub fn new() -> Option<Instance> {
|
pub fn new() -> Result<Instance, InternalError> {
|
||||||
Instance::with_args(None)
|
Instance::with_args(None)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,25 +125,25 @@ impl Instance {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a list of audio filters that are available.
|
/// Returns a list of audio filters that are available.
|
||||||
pub fn audio_filter_list_get(&self) -> Option<ModuleDescriptionList> {
|
pub fn audio_filter_list_get(&self) -> Result<ModuleDescriptionList, InternalError> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let p = sys::libvlc_audio_filter_list_get(self.ptr);
|
let p = sys::libvlc_audio_filter_list_get(self.ptr);
|
||||||
if p.is_null() {
|
if p.is_null() {
|
||||||
None
|
Err(InternalError)
|
||||||
} else {
|
} else {
|
||||||
Some(ModuleDescriptionList { ptr: p })
|
Ok(ModuleDescriptionList { ptr: p })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a list of video filters that are available.
|
/// Returns a list of video filters that are available.
|
||||||
pub fn video_filter_list_get(&self) -> Option<ModuleDescriptionList> {
|
pub fn video_filter_list_get(&self) -> Result<ModuleDescriptionList, InternalError> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let p = sys::libvlc_video_filter_list_get(self.ptr);
|
let p = sys::libvlc_video_filter_list_get(self.ptr);
|
||||||
if p.is_null() {
|
if p.is_null() {
|
||||||
None
|
Err(InternalError)
|
||||||
} else {
|
} else {
|
||||||
Some(ModuleDescriptionList { ptr: p })
|
Ok(ModuleDescriptionList { ptr: p })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
// Licensed under the MIT license, see the LICENSE file.
|
// Licensed under the MIT license, see the LICENSE file.
|
||||||
|
|
||||||
use crate::{Instance, InternalError, MediaList};
|
use crate::{Instance, InternalError, MediaList};
|
||||||
|
use std::fmt;
|
||||||
use vlc_sys as sys;
|
use vlc_sys as sys;
|
||||||
|
|
||||||
pub struct MediaLibrary {
|
pub struct MediaLibrary {
|
||||||
|
@ -11,13 +12,13 @@ pub struct MediaLibrary {
|
||||||
|
|
||||||
impl MediaLibrary {
|
impl MediaLibrary {
|
||||||
/// Create an new Media Library object.
|
/// Create an new Media Library object.
|
||||||
pub fn new(instance: &Instance) -> Option<MediaLibrary> {
|
pub fn new(instance: &Instance) -> Result<MediaLibrary, InternalError> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let p = sys::libvlc_media_library_new(instance.ptr);
|
let p = sys::libvlc_media_library_new(instance.ptr);
|
||||||
if p.is_null() {
|
if p.is_null() {
|
||||||
None
|
Err(InternalError)
|
||||||
} else {
|
} else {
|
||||||
Some(MediaLibrary { ptr: p })
|
Ok(MediaLibrary { ptr: p })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,13 +11,13 @@ pub struct MediaList {
|
||||||
|
|
||||||
impl MediaList {
|
impl MediaList {
|
||||||
/// Create an empty media list.
|
/// Create an empty media list.
|
||||||
pub fn new(instance: &Instance) -> Option<MediaList> {
|
pub fn new(instance: &Instance) -> Result<MediaList, InternalError> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let p = sys::libvlc_media_list_new(instance.ptr);
|
let p = sys::libvlc_media_list_new(instance.ptr);
|
||||||
if p.is_null() {
|
if p.is_null() {
|
||||||
None
|
Err(InternalError)
|
||||||
} else {
|
} else {
|
||||||
Some(MediaList { ptr: p })
|
Ok(MediaList { ptr: p })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,7 @@ impl MediaList {
|
||||||
|
|
||||||
/// Add media instance to media list.
|
/// Add media instance to media list.
|
||||||
/// The MediaList::lock should be held upon entering this function.
|
/// The MediaList::lock should be held upon entering this function.
|
||||||
|
// TODO: use specific error type since documentation says "-1 if the media list is read-only"
|
||||||
pub fn add_media(&self, md: &Media) -> Result<(), InternalError> {
|
pub fn add_media(&self, md: &Media) -> Result<(), InternalError> {
|
||||||
unsafe {
|
unsafe {
|
||||||
if sys::libvlc_media_list_add_media(self.ptr, md.ptr) == 0 {
|
if sys::libvlc_media_list_add_media(self.ptr, md.ptr) == 0 {
|
||||||
|
|
Loading…
Reference in New Issue