11 lines
20 KiB
HTML
11 lines
20 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="TRACES: UR-003, UR-004, UR-005, UR-010, UR-020, UR-021 | JA-022, JA-023, JA-024, JA-025, JA-026 | DR-001"><title>jellytau_lib::commands::player - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../../static.files/rustdoc-17e0aaed.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="jellytau_lib" data-themes="" data-resource-suffix="" data-rustdoc-version="1.97.1 (8bab26f4f 2026-07-14)" data-channel="1.97.1" data-search-js="search-fd9372ac.js" data-stringdex-js="stringdex-2da4960a.js" data-settings-js="settings-170eb4bf.js" ><script src="../../../static.files/storage-41dd4d93.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-fcd733ba.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-f7c3ffd8.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><a class="skip-main-content" href="#main-content">Skip to main content</a><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module player</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../jellytau_lib/index.html">jellytau_<wbr>lib</a><span class="version">0.11.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module player</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In jellytau_<wbr>lib::<wbr>commands</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content" tabindex="-1"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../../index.html">jellytau_lib</a>::<wbr><a href="../index.html">commands</a></div><h1>Module <span>player</span> <button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../../src/jellytau_lib/commands/player/mod.rs.html#1-3564">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>TRACES: UR-003, UR-004, UR-005, UR-010, UR-020, UR-021 | JA-022, JA-023, JA-024, JA-025, JA-026 | DR-001</p>
|
||
</div></details><h2 id="reexports" class="section-header">Re-exports<a href="#reexports" class="anchor">§</a></h2><dl class="item-table reexports"><dt><code>pub use <a class="mod" href="queue/index.html" title="mod jellytau_lib::commands::player::queue">queue</a>::*;</code></dt><dt><code>pub use <a class="mod" href="remote/index.html" title="mod jellytau_lib::commands::player::remote">remote</a>::*;</code></dt><dt><code>pub use <a class="mod" href="session/index.html" title="mod jellytau_lib::commands::player::session">session</a>::*;</code></dt><dt><code>pub use <a class="mod" href="settings/index.html" title="mod jellytau_lib::commands::player::settings">settings</a>::*;</code></dt><dt><code>pub use <a class="mod" href="timers/index.html" title="mod jellytau_lib::commands::player::timers">timers</a>::*;</code></dt></dl><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a class="mod" href="queue/index.html" title="mod jellytau_lib::commands::player::queue">queue</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Queue manipulation commands (add / remove / move / skip).</dd><dt><a class="mod" href="remote/index.html" title="mod jellytau_lib::commands::player::remote">remote</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Remote Jellyfin session control commands (casting to another device).</dd><dt><a class="mod" href="session/index.html" title="mod jellytau_lib::commands::player::session">session</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Media session state commands.</dd><dt><a class="mod" href="settings/index.html" title="mod jellytau_lib::commands::player::settings">settings</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Audio and video playback settings commands.</dd><dt><a class="mod" href="timers/index.html" title="mod jellytau_lib::commands::player::timers">timers</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Sleep-timer and autoplay commands.</dd></dl><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.BackgroundAudioPlan.html" title="struct jellytau_lib::commands::player::BackgroundAudioPlan">Background<wbr>Audio<wbr>Plan</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>How a background-audio handoff must start playback, given where its audio
|
||
actually begins.</dd><dt><a class="struct" href="struct.MediaSessionManagerWrapper.html" title="struct jellytau_lib::commands::player::MediaSessionManagerWrapper">Media<wbr>Session<wbr>Manager<wbr>Wrapper</a></dt><dd>Media session manager wrapper for Tauri state management</dd><dt><a class="struct" href="struct.MergedMediaItem.html" title="struct jellytau_lib::commands::player::MergedMediaItem">Merged<wbr>Media<wbr>Item</a></dt><dd>Lightweight media item for merged playback state
|
||
Converts from both local MediaItem and remote NowPlayingItem</dd><dt><a class="struct" href="struct.PlayAlbumTrackRequest.html" title="struct jellytau_lib::commands::player::PlayAlbumTrackRequest">Play<wbr>Album<wbr>Track<wbr>Request</a></dt><dd>Request to play a track from an album (backend fetches all tracks)</dd><dt><a class="struct" href="struct.PlayItemRequest.html" title="struct jellytau_lib::commands::player::PlayItemRequest">Play<wbr>Item<wbr>Request</a></dt><dd>Request to play a single video item</dd><dt><a class="struct" href="struct.PlayQueueRequest.html" title="struct jellytau_lib::commands::player::PlayQueueRequest">Play<wbr>Queue<wbr>Request</a></dt><dd>Request to play a queue of items</dd><dt><a class="struct" href="struct.PlayTracksRequest.html" title="struct jellytau_lib::commands::player::PlayTracksRequest">Play<wbr>Tracks<wbr>Request</a></dt><dd>Request to play tracks by ID (backend fetches metadata)</dd><dt><a class="struct" href="struct.PlaybackCapabilities.html" title="struct jellytau_lib::commands::player::PlaybackCapabilities">Playback<wbr>Capabilities</a></dt><dd>What playback facilities this platform’s backend actually provides.</dd><dt><a class="struct" href="struct.PlayerStateWrapper.html" title="struct jellytau_lib::commands::player::PlayerStateWrapper">Player<wbr>State<wbr>Wrapper</a></dt><dd>Player state wrapper for Tauri.</dd><dt><a class="struct" href="struct.PlayerStatus.html" title="struct jellytau_lib::commands::player::PlayerStatus">Player<wbr>Status</a></dt><dd>Response for player state queries</dd><dt><a class="struct" href="struct.PreloadResult.html" title="struct jellytau_lib::commands::player::PreloadResult">Preload<wbr>Result</a></dt><dd>Response for preload operation</dd><dt><a class="struct" href="struct.QueueStatus.html" title="struct jellytau_lib::commands::player::QueueStatus">Queue<wbr>Status</a></dt><dd>Response for queue queries</dd><dt><a class="struct" href="struct.SmartCacheWrapper.html" title="struct jellytau_lib::commands::player::SmartCacheWrapper">Smart<wbr>Cache<wbr>Wrapper</a></dt><dd>SmartCache wrapper for Tauri state management</dd><dt><a class="struct" href="struct.VideoSettingsWrapper.html" title="struct jellytau_lib::commands::player::VideoSettingsWrapper">Video<wbr>Settings<wbr>Wrapper</a></dt><dd>Video settings state wrapper for Tauri</dd></dl><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.AudioTrackSwitchResponse.html" title="enum jellytau_lib::commands::player::AudioTrackSwitchResponse">Audio<wbr>Track<wbr>Switch<wbr>Response</a></dt><dd>Response for audio track switching operations</dd><dt><a class="enum" href="enum.PlayQueueContext.html" title="enum jellytau_lib::commands::player::PlayQueueContext">Play<wbr>Queue<wbr>Context</a></dt><dd>Queue context for remote transfer - what type of queue is this?</dd><dt><a class="enum" href="enum.PlayTracksContext.html" title="enum jellytau_lib::commands::player::PlayTracksContext">Play<wbr>Tracks<wbr>Context</a></dt><dd>Context information for track playback</dd><dt><a class="enum" href="enum.StreamQualityResponse.html" title="enum jellytau_lib::commands::player::StreamQualityResponse">Stream<wbr>Quality<wbr>Response</a></dt><dd>Response for a mid-playback streaming-quality change.</dd><dt><a class="enum" href="enum.VideoBackend.html" title="enum jellytau_lib::commands::player::VideoBackend">Video<wbr>Backend</a></dt><dd>Backend type for video playback</dd><dt><a class="enum" href="enum.VideoSeekResponse.html" title="enum jellytau_lib::commands::player::VideoSeekResponse">Video<wbr>Seek<wbr>Response</a></dt><dd>Response for video seek operations</dd></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.background_audio_plan.html" title="fn jellytau_lib::commands::player::background_audio_plan">background_<wbr>audio_<wbr>plan</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Decide the base and the seek for a handoff at <code>position_seconds</code>.</dd><dt><a class="fn" href="fn.background_audio_source.html" title="fn jellytau_lib::commands::player::background_audio_source">background_<wbr>audio_<wbr>source</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Pick the source for an audio-only handoff.</dd><dt><a class="fn" href="fn.check_for_local_download.html" title="fn jellytau_lib::commands::player::check_for_local_download">check_<wbr>for_<wbr>local_<wbr>download</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Check if an item has a completed download</dd><dt><a class="fn" href="fn.create_media_item.html" title="fn jellytau_lib::commands::player::create_media_item">create_<wbr>media_<wbr>item</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Helper function to create MediaItem from video request</dd><dt><a class="fn" href="fn.get_player_status.html" title="fn jellytau_lib::commands::player::get_player_status">get_<wbr>player_<wbr>status</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.get_queue_status.html" title="fn jellytau_lib::commands::player::get_queue_status">get_<wbr>queue_<wbr>status</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.normalize_volume.html" title="fn jellytau_lib::commands::player::normalize_volume">normalize_<wbr>volume</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Normalise a volume arriving over IPC to the 0.0..=1.0 range every backend
|
||
works in.</dd><dt><a class="fn" href="fn.play_selection_on_remote.html" title="fn jellytau_lib::commands::player::play_selection_on_remote">play_<wbr>selection_<wbr>on_<wbr>remote</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Start a freshly-built queue on the active remote session.</dd><dt><a class="fn" href="fn.player_background_action.html" title="fn jellytau_lib::commands::player::player_background_action">player_<wbr>background_<wbr>action</a></dt><dd>Exit background-audio mode: stop the native audio player and return its final
|
||
position so the frontend can reload the WebView <code><video></code> there (UR-040).</dd><dt><a class="fn" href="fn.player_configure_jellyfin.html" title="fn jellytau_lib::commands::player::player_configure_jellyfin">player_<wbr>configure_<wbr>jellyfin</a></dt><dd>Configure Jellyfin API client for automatic playback reporting</dd><dt><a class="fn" href="fn.player_cycle_repeat.html" title="fn jellytau_lib::commands::player::player_cycle_repeat">player_<wbr>cycle_<wbr>repeat</a></dt><dt><a class="fn" href="fn.player_disable_jellyfin.html" title="fn jellytau_lib::commands::player::player_disable_jellyfin">player_<wbr>disable_<wbr>jellyfin</a></dt><dd>Disable Jellyfin automatic playback reporting</dd><dt><a class="fn" href="fn.player_enter_background_audio.html" title="fn jellytau_lib::commands::player::player_enter_background_audio">player_<wbr>enter_<wbr>background_<wbr>audio</a></dt><dd>Enter background-audio mode: hand playback of the currently-watched video off
|
||
to the native ExoPlayer <em>audio</em> path so the audio keeps playing while the app
|
||
is backgrounded/locked, with no client-side video decode (UR-040).</dd><dt><a class="fn" href="fn.player_exit_background_audio.html" title="fn jellytau_lib::commands::player::player_exit_background_audio">player_<wbr>exit_<wbr>background_<wbr>audio</a></dt><dd>TRACES: UR-040 | DR-052 | UT-061, IT-013</dd><dt><a class="fn" href="fn.player_get_cache_config.html" title="fn jellytau_lib::commands::player::player_get_cache_config">player_<wbr>get_<wbr>cache_<wbr>config</a></dt><dd>Get current SmartCache configuration</dd><dt><a class="fn" href="fn.player_get_capabilities.html" title="fn jellytau_lib::commands::player::player_get_capabilities">player_<wbr>get_<wbr>capabilities</a></dt><dd>Report this platform’s playback capabilities to the frontend.</dd><dt><a class="fn" href="fn.player_get_queue.html" title="fn jellytau_lib::commands::player::player_get_queue">player_<wbr>get_<wbr>queue</a></dt><dt><a class="fn" href="fn.player_get_status.html" title="fn jellytau_lib::commands::player::player_get_status">player_<wbr>get_<wbr>status</a></dt><dt><a class="fn" href="fn.player_local_media_path.html" title="fn jellytau_lib::commands::player::player_local_media_path">player_<wbr>local_<wbr>media_<wbr>path</a></dt><dd>The on-disk path for a downloaded item, for playback surfaces that resolve
|
||
their own source rather than going through the queue.</dd><dt><a class="fn" href="fn.player_next.html" title="fn jellytau_lib::commands::player::player_next">player_<wbr>next</a></dt><dt><a class="fn" href="fn.player_pause.html" title="fn jellytau_lib::commands::player::player_pause">player_<wbr>pause</a></dt><dt><a class="fn" href="fn.player_play.html" title="fn jellytau_lib::commands::player::player_play">player_<wbr>play</a></dt><dt><a class="fn" href="fn.player_play_album_track.html" title="fn jellytau_lib::commands::player::player_play_album_track">player_<wbr>play_<wbr>album_<wbr>track</a></dt><dd>Play a track from an album - backend fetches all album tracks and builds queue</dd><dt><a class="fn" href="fn.player_play_item.html" title="fn jellytau_lib::commands::player::player_play_item">player_<wbr>play_<wbr>item</a></dt><dd>Play a single media item (audio or video)</dd><dt><a class="fn" href="fn.player_play_queue.html" title="fn jellytau_lib::commands::player::player_play_queue">player_<wbr>play_<wbr>queue</a></dt><dd>Play a queue of media items</dd><dt><a class="fn" href="fn.player_play_tracks.html" title="fn jellytau_lib::commands::player::player_play_tracks">player_<wbr>play_<wbr>tracks</a></dt><dd>Play tracks by ID - backend fetches all metadata</dd><dt><a class="fn" href="fn.player_preload_upcoming.html" title="fn jellytau_lib::commands::player::player_preload_upcoming">player_<wbr>preload_<wbr>upcoming</a></dt><dd>Preload upcoming tracks from the queue
|
||
This queues background downloads for the next N tracks that aren’t already downloaded</dd><dt><a class="fn" href="fn.player_previous.html" title="fn jellytau_lib::commands::player::player_previous">player_<wbr>previous</a></dt><dt><a class="fn" href="fn.player_seek.html" title="fn jellytau_lib::commands::player::player_seek">player_<wbr>seek</a></dt><dt><a class="fn" href="fn.player_seek_video.html" title="fn jellytau_lib::commands::player::player_seek_video">player_<wbr>seek_<wbr>video</a></dt><dd>Smart video seeking that decides between native and server-side seeking</dd><dt><a class="fn" href="fn.player_set_audio_track.html" title="fn jellytau_lib::commands::player::player_set_audio_track">player_<wbr>set_<wbr>audio_<wbr>track</a></dt><dd>Set the active audio track on a native backend directly.</dd><dt><a class="fn" href="fn.player_set_cache_config.html" title="fn jellytau_lib::commands::player::player_set_cache_config">player_<wbr>set_<wbr>cache_<wbr>config</a></dt><dd>Update SmartCache configuration</dd><dt><a class="fn" href="fn.player_set_stream_quality.html" title="fn jellytau_lib::commands::player::player_set_stream_quality">player_<wbr>set_<wbr>stream_<wbr>quality</a></dt><dd>Change the bandwidth ceiling of the video that is playing <em>right now</em>.</dd><dt><a class="fn" href="fn.player_set_subtitle_track.html" title="fn jellytau_lib::commands::player::player_set_subtitle_track">player_<wbr>set_<wbr>subtitle_<wbr>track</a></dt><dd>Set (or clear, with <code>None</code>) the active subtitle track on a native backend.</dd><dt><a class="fn" href="fn.player_set_volume.html" title="fn jellytau_lib::commands::player::player_set_volume">player_<wbr>set_<wbr>volume</a></dt><dt><a class="fn" href="fn.player_stop.html" title="fn jellytau_lib::commands::player::player_stop">player_<wbr>stop</a></dt><dt><a class="fn" href="fn.player_switch_audio_track.html" title="fn jellytau_lib::commands::player::player_switch_audio_track">player_<wbr>switch_<wbr>audio_<wbr>track</a></dt><dd>Switch audio track - handles both HTML5 (stream reload) and native (direct switch)
|
||
Note: Frontend should handle saving series preferences after this command succeeds</dd><dt><a class="fn" href="fn.player_toggle.html" title="fn jellytau_lib::commands::player::player_toggle">player_<wbr>toggle</a></dt><dt><a class="fn" href="fn.player_toggle_mute.html" title="fn jellytau_lib::commands::player::player_toggle_mute">player_<wbr>toggle_<wbr>mute</a></dt><dt><a class="fn" href="fn.player_toggle_shuffle.html" title="fn jellytau_lib::commands::player::player_toggle_shuffle">player_<wbr>toggle_<wbr>shuffle</a></dt><dt><a class="fn" href="fn.refresh_queue_local_sources.html" title="fn jellytau_lib::commands::player::refresh_queue_local_sources">refresh_<wbr>queue_<wbr>local_<wbr>sources</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Re-point queued streaming items at completed local downloads.</dd><dt><a class="fn" href="fn.resolve_local_media_path.html" title="fn jellytau_lib::commands::player::resolve_local_media_path">resolve_<wbr>local_<wbr>media_<wbr>path</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Resolve the on-disk file backing a completed download, if there is one.</dd><dt><a class="fn" href="fn.sanitize_filename.html" title="fn jellytau_lib::commands::player::sanitize_filename">sanitize_<wbr>filename</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Sanitize filename by removing invalid characters</dd></dl></section></div></main></body></html> |