Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pass on formatted error messages #416

Merged
merged 1 commit into from
Jan 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions backends/gstreamer/audio_decoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,26 +146,26 @@ impl AudioDecoder for GStreamerAudioDecoder {
let insert_deinterleave = || -> Result<(), AudioDecoderError> {
let convert = gst::ElementFactory::make("audioconvert")
.build()
.map_err(|_| {
AudioDecoderError::Backend("audioconvert creation failed".to_owned())
.map_err(|error| {
AudioDecoderError::Backend(format!("audioconvert creation failed: {error:?}"))
})?;
let resample =
gst::ElementFactory::make("audioresample")
.build()
.map_err(|_| {
AudioDecoderError::Backend("audioresample creation failed".to_owned())
.map_err(|error| {
AudioDecoderError::Backend(format!("audioresample creation failed: {error:?}"))
})?;
let filter = gst::ElementFactory::make("capsfilter")
.build()
.map_err(|_| {
AudioDecoderError::Backend("capsfilter creation failed".to_owned())
.map_err(|error| {
AudioDecoderError::Backend(format!("capsfilter creation failed: {error:?}"))
})?;
let deinterleave = gst::ElementFactory::make("deinterleave")
.name("deinterleave")
.property("keep-positions", true)
.build()
.map_err(|_| {
AudioDecoderError::Backend("deinterleave creation failed".to_owned())
.map_err(|error| {
AudioDecoderError::Backend(format!("deinterleave creation failed: {error:?}"))
})?;

let pipeline_ = pipeline.downgrade();
Expand All @@ -187,11 +187,11 @@ impl AudioDecoder for GStreamerAudioDecoder {
}
};
let insert_sink = || -> Result<(), AudioDecoderError> {
let queue = gst::ElementFactory::make("queue").build().map_err(|_| {
AudioDecoderError::Backend("queue creation failed".to_owned())
let queue = gst::ElementFactory::make("queue").build().map_err(|error| {
AudioDecoderError::Backend(format!("queue creation failed: {error:?}"))
})?;
let sink = gst::ElementFactory::make("appsink").build().map_err(|_| {
AudioDecoderError::Backend("appsink creation failed".to_owned())
let sink = gst::ElementFactory::make("appsink").build().map_err(|error| {
AudioDecoderError::Backend(format!("appsink creation failed: {error:?}"))
})?;
let appsink = sink.clone().dynamic_cast::<gst_app::AppSink>().unwrap();
sink.set_property("sync", false);
Expand Down Expand Up @@ -278,10 +278,10 @@ impl AudioDecoder for GStreamerAudioDecoder {
}
let audio_info = audio_info_builder
.build()
.map_err(|_| AudioDecoderError::Backend("AudioInfo failed".to_owned()))?;
.map_err(|error| AudioDecoderError::Backend(format!("AudioInfo failed: {error:?}")))?;
let caps = audio_info
.to_caps()
.map_err(|_| AudioDecoderError::Backend("AudioInfo failed".to_owned()))?;
.map_err(|error| AudioDecoderError::Backend(format!("AudioInfo failed: {error:?}")))?;
filter.set_property("caps", caps);

let elements = &[&convert, &resample, &filter, &deinterleave];
Expand Down
22 changes: 11 additions & 11 deletions backends/gstreamer/audio_sink.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ impl GStreamerAudioSink {
if let Some(category) = gst::DebugCategory::get("openslessink") {
category.set_threshold(gst::DebugLevel::Trace);
}
gst::init().map_err(|_| AudioSinkError::Backend("GStreamer init failed".to_owned()))?;
gst::init().map_err(|error| AudioSinkError::Backend(format!("GStreamer init failed: {error:?}")))?;

let appsrc = gst::ElementFactory::make("appsrc")
.build()
.map_err(|_| AudioSinkError::Backend("appsrc creation failed".to_owned()))?;
.map_err(|error| AudioSinkError::Backend(format!("appsrc creation failed: {error:?}")))?;
let appsrc = appsrc.downcast::<AppSrc>().unwrap();

Ok(Self {
Expand All @@ -53,7 +53,7 @@ impl GStreamerAudioSink {
channels.into(),
)
.build()
.map_err(|_| AudioSinkError::Backend("AudioInfo failed".to_owned()))?;
.map_err(|error| AudioSinkError::Backend(format!("AudioInfo failed: {error:?}")))?;
self.appsrc.set_caps(audio_info.to_caps().ok().as_ref());
*self.audio_info.borrow_mut() = Some(audio_info);
Ok(())
Expand Down Expand Up @@ -101,18 +101,18 @@ impl AudioSink for GStreamerAudioSink {
let appsrc = self.appsrc.as_ref().clone().upcast();
let resample = gst::ElementFactory::make("audioresample")
.build()
.map_err(|_| AudioSinkError::Backend("audioresample creation failed".to_owned()))?;
.map_err(|error| AudioSinkError::Backend(format!("audioresample creation failed: {error:?}")))?;
let convert = gst::ElementFactory::make("audioconvert")
.build()
.map_err(|_| AudioSinkError::Backend("audioconvert creation failed".to_owned()))?;
.map_err(|error| AudioSinkError::Backend(format!("audioconvert creation failed: {error:?}")))?;
let sink = gst::ElementFactory::make("autoaudiosink")
.build()
.map_err(|_| AudioSinkError::Backend("autoaudiosink creation failed".to_owned()))?;
.map_err(|error| AudioSinkError::Backend(format!("autoaudiosink creation failed: {error:?}")))?;
self.pipeline
.add_many(&[&appsrc, &resample, &convert, &sink])
.map_err(|e| AudioSinkError::Backend(e.to_string()))?;
.map_err(|error| AudioSinkError::Backend(error.to_string()))?;
gst::Element::link_many(&[&appsrc, &resample, &convert, &sink])
.map_err(|e| AudioSinkError::Backend(e.to_string()))?;
.map_err(|error| AudioSinkError::Backend(error.to_string()))?;

Ok(())
}
Expand All @@ -132,7 +132,7 @@ impl AudioSink for GStreamerAudioSink {
let appsrc = self.appsrc.as_ref().clone().upcast();
let convert = gst::ElementFactory::make("audioconvert")
.build()
.map_err(|_| AudioSinkError::Backend("audioconvert creation failed".to_owned()))?;
.map_err(|error| AudioSinkError::Backend(format!("audioconvert creation failed: {error:?}")))?;
let sink = socket
.as_any()
.downcast_ref::<GstreamerMediaSocket>()
Expand All @@ -142,9 +142,9 @@ impl AudioSink for GStreamerAudioSink {

self.pipeline
.add_many(&[&appsrc, &convert, &sink])
.map_err(|e| AudioSinkError::Backend(e.to_string()))?;
.map_err(|error| AudioSinkError::Backend(error.to_string()))?;
gst::Element::link_many(&[&appsrc, &convert, &sink])
.map_err(|e| AudioSinkError::Backend(e.to_string()))?;
.map_err(|error| AudioSinkError::Backend(error.to_string()))?;

Ok(())
}
Expand Down
14 changes: 7 additions & 7 deletions backends/gstreamer/audio_stream_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,15 @@ impl GStreamerAudioStreamReader {
let capsfilter0 = gst::ElementFactory::make("capsfilter")
.property("caps", caps)
.build()
.map_err(|_| "capsfilter creation failed".to_owned())?;
.map_err(|error| format!("capsfilter creation failed: {error:?}"))?;

let split = gst::ElementFactory::make("audiobuffersplit")
.property("output-buffer-duration", time_per_block)
.build()
.map_err(|_| "audiobuffersplit creation failed".to_owned())?;
.map_err(|error| format!("audiobuffersplit creation failed: {error:?}"))?;
let convert = gst::ElementFactory::make("audioconvert")
.build()
.map_err(|_| "audioconvert creation failed".to_owned())?;
.map_err(|error| format!("audioconvert creation failed: {error:?}"))?;
let caps = gst_audio::AudioCapsBuilder::new()
.layout(gst_audio::AudioLayout::NonInterleaved)
.format(AUDIO_FORMAT_F32)
Expand All @@ -53,19 +53,19 @@ impl GStreamerAudioStreamReader {
let capsfilter = gst::ElementFactory::make("capsfilter")
.property("caps", caps)
.build()
.map_err(|_| "capsfilter creation failed".to_owned())?;
.map_err(|error| format!("capsfilter creation failed: {error:?}"))?;
let sink = gst::ElementFactory::make("appsink")
.property("sync", false)
.build()
.map_err(|_| "appsink creation failed".to_owned())?;
.map_err(|error| format!("appsink creation failed: {error:?}"))?;

let appsink = sink.clone().dynamic_cast::<gst_app::AppSink>().unwrap();

let elements = [&element, &capsfilter0, &split, &convert, &capsfilter, &sink];
pipeline
.add_many(&elements[1..])
.map_err(|_| "pipeline adding failed".to_owned())?;
gst::Element::link_many(&elements).map_err(|_| "element linking failed".to_owned())?;
.map_err(|error| format!("pipeline adding failed: {error:?}"))?;
gst::Element::link_many(&elements).map_err(|error| format!("element linking failed: {error:?}"))?;
for e in &elements {
e.sync_state_with_parent().map_err(|e| e.to_string())?;
}
Expand Down
8 changes: 4 additions & 4 deletions backends/gstreamer/player.rs
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ impl GStreamerPlayer {
if let Some(ref audio_renderer) = self.audio_renderer {
let audio_sink = gst::ElementFactory::make("appsink")
.build()
.map_err(|_| PlayerError::Backend("appsink creation failed".to_owned()))?;
.map_err(|error| PlayerError::Backend(format!("appsink creation failed: {error:?}")))?;

pipeline.set_property("audio-sink", &audio_sink);

Expand Down Expand Up @@ -506,14 +506,14 @@ impl GStreamerPlayer {
// https://github.com/servo/servo/issues/22010#issuecomment-432599657
let uri = match self.stream_type {
StreamType::Stream => {
register_servo_media_stream_src().map_err(|_| {
PlayerError::Backend("servomediastreamsrc registration error".to_owned())
register_servo_media_stream_src().map_err(|error| {
PlayerError::Backend(format!("servomediastreamsrc registration error: {error:?}"))
})?;
"mediastream://".to_value()
}
StreamType::Seekable => {
register_servo_src()
.map_err(|_| PlayerError::Backend("servosrc registration error".to_owned()))?;
.map_err(|error| PlayerError::Backend(format!("servosrc registration error: {error:?}")))?;
"servosrc://".to_value()
}
};
Expand Down
2 changes: 1 addition & 1 deletion backends/gstreamer/render-android/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ impl Render for RenderAndroid {
.name("servo-media-vsink")
.property("sink", &appsink)
.build()
.map_err(|_| PlayerError::Backend("glupload creation failed".to_owned()))?;
.map_err(|error| PlayerError::Backend(format!("glupload creation failed: {error:?}")))?;

pipeline.set_property("video-sink", &vsinkbin);

Expand Down
2 changes: 1 addition & 1 deletion backends/gstreamer/render-unix/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ impl Render for RenderUnix {
let vsinkbin = gst::ElementFactory::make("glsinkbin")
.name("servo-media-vsink")
.build()
.map_err(|_| PlayerError::Backend("glupload creation failed".to_owned()))?;
.map_err(|error| PlayerError::Backend(format!("glupload creation failed: {error:?}")))?;

let caps = gst::Caps::builder("video/x-raw")
.features([gst_gl::CAPS_FEATURE_MEMORY_GL_MEMORY])
Expand Down
2 changes: 1 addition & 1 deletion backends/gstreamer/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ impl GStreamerRender {
) -> Result<gst_app::AppSink, PlayerError> {
let appsink = gst::ElementFactory::make("appsink")
.build()
.map_err(|_| PlayerError::Backend("appsink creation failed".to_owned()))?
.map_err(|error| PlayerError::Backend(format!("appsink creation failed: {error:?}")))?
.downcast::<gst_app::AppSink>()
.unwrap();

Expand Down
2 changes: 1 addition & 1 deletion backends/gstreamer/webrtc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,7 @@ pub fn construct(
let webrtc = gst::ElementFactory::make("webrtcbin")
.name("sendrecv")
.build()
.map_err(|_| "webrtcbin element not found")?;
.map_err(|error| format!("webrtcbin element not found: {error:?}"))?;
let mut controller = GStreamerWebRtcController {
webrtc,
pipeline,
Expand Down
18 changes: 9 additions & 9 deletions examples/player/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ impl App {
// player
let (player_event_sender, player_event_receiver) = ipc::channel::<player::PlayerEvent>()?;
let servo_media =
ServoMedia::get().map_err(|_| MiscError("Failed to get media backend"))?;
ServoMedia::get().map_err(|error| MiscError(format!("Failed to get media backend: {error:?}").as_str()))?;

let frame_renderer = if !opts.no_video {
Some(Arc::new(Mutex::new(MediaFrameRenderer::new(
Expand Down Expand Up @@ -219,7 +219,7 @@ impl App {
.lock()
.unwrap()
.set_input_size(metadata.len())
.map_err(|_| MiscError("Failed to set media input size"))?;
.map_err(|error| MiscError(format!("Failed to set media input size: {error:?}").as_str()))?;

Ok(App {
events_loop,
Expand Down Expand Up @@ -283,7 +283,7 @@ pub fn main_loop(mut app: App) -> Result<glutin::WindowedContext<glutin::Possibl
.lock()
.unwrap()
.play()
.map_err(|_| MiscError("Failed to start player"))?;
.map_err(|error| MiscError(format!("Failed to start player: {error:?}").as_str()))?;

let mut running = true;
let mut input_eos = false;
Expand Down Expand Up @@ -338,22 +338,22 @@ pub fn main_loop(mut app: App) -> Result<glutin::WindowedContext<glutin::Possibl
.lock()
.unwrap()
.stop()
.map_err(|_| MiscError("Failed to stop player"))?;
.map_err(|error| MiscError(format!("Failed to stop player: {error:?}").as_str()))?;
input_eos = true;
}
PlayerCmd::Pause => {
player
.lock()
.unwrap()
.pause()
.map_err(|_| MiscError("Failed to pause player"))?;
.map_err(|error| MiscError(format!("Failed to pause player: {error:?}").as_str()))?;
}
PlayerCmd::Play => {
player
.lock()
.unwrap()
.play()
.map_err(|_| MiscError("Failed to start player"))?;
.map_err(|error| MiscError(format!("Failed to start player: {error:?}").as_str()))?;
}
PlayerCmd::Seek(time) => {
let time = playerstate.pos + time;
Expand All @@ -365,15 +365,15 @@ pub fn main_loop(mut app: App) -> Result<glutin::WindowedContext<glutin::Possibl
.lock()
.unwrap()
.seek(time)
.map_err(|_| MiscError("Failed to seek"))?;
.map_err(|error| MiscError(format!("Failed to seek: {error:?}").as_str()))?;
}
PlayerCmd::Mute => {
playerstate.mute = !playerstate.mute;
player
.lock()
.unwrap()
.mute(playerstate.mute)
.map_err(|_| MiscError("Failed to mute player"))?;
.map_err(|error| MiscError(format!("Failed to mute player: {error:?}").as_str()))?;
}
_ => (),
}
Expand Down Expand Up @@ -419,7 +419,7 @@ pub fn main_loop(mut app: App) -> Result<glutin::WindowedContext<glutin::Possibl
input_eos = true;
Ok(())
})
.map_err(|_| SMError("Error at setting EOS".to_string()))?;
.map_err(|error| SMError(format!("Error at setting EOS: {error:?}")))?;
} else {
player
.lock()
Expand Down
Loading