Skip to main content

player_plugin/
lib.rs

1#![deny(unsafe_code)]
2
3mod audio;
4mod benchmark;
5mod capability;
6mod catalog;
7mod decoder;
8mod frame_processor;
9mod hook;
10mod invocation;
11mod native_frame;
12mod plan;
13mod plugin_reference;
14mod processor;
15mod protocol;
16mod resolver;
17mod scope;
18mod sdk;
19pub mod source_normalizer;
20
21pub use player_plugin_macros::export;
22
23pub use audio::{
24    AudioPitchMode, AudioPlaybackPolicy, AudioProcessorCapabilities, AudioProcessorChain,
25    AudioProcessorError, AudioProcessorOperationStatus, AudioProcessorPluginFactory,
26    AudioProcessorSession, AudioProcessorSessionConfig, AudioProcessorSessionInfo,
27    AudioProcessorSubmitStatus,
28};
29pub use benchmark::{
30    BenchmarkEvent, BenchmarkEventBatch, BenchmarkSink, BenchmarkSinkError, BenchmarkSinkReport,
31    BenchmarkSinkStatus, BenchmarkThresholdViolation, MAX_BENCHMARK_BATCH_EVENTS,
32    MAX_BENCHMARK_THRESHOLD_VIOLATIONS,
33};
34pub use capability::ProcessorCapabilities;
35pub use catalog::{
36    CanonicalPluginArtifactDescriptor, MAX_PLUGIN_ARCHITECTURE_BYTES,
37    MAX_PLUGIN_ARTIFACT_CAPABILITIES, MAX_PLUGIN_ARTIFACT_PATH_BYTES,
38    MAX_PLUGIN_CATALOG_DIAGNOSTICS, MAX_PLUGIN_CATALOG_RECORDS, MAX_PLUGIN_CATALOG_SOURCE_BYTES,
39    MAX_PLUGIN_PROVISIONS, MAX_PLUGIN_REQUIREMENTS, MAX_PLUGIN_RUNTIME_DEPENDENCIES,
40    MAX_PLUGIN_TARGET_BYTES, PLUGIN_CATALOG_MIGRATION_VERSION, PLUGIN_CATALOG_SCHEMA_VERSION,
41    PluginArtifactCapability, PluginArtifactDescriptor, PluginArtifactFormat,
42    PluginArtifactTransport, PluginCatalog, PluginCatalogDiagnostic, PluginCatalogError,
43    PluginCatalogRecord, PluginCatalogSource, PluginProvision, PluginRequirement,
44    PluginResourcePolicy, PluginRuntimeDependency, PluginRuntimeLinkage,
45    validate_plugin_provisions, validate_plugin_requirements,
46};
47pub use decoder::{
48    DecoderBitstreamFormat, DecoderCapabilities, DecoderCodecCapability, DecoderError,
49    DecoderFrameFormat, DecoderMediaKind, DecoderNativeDeviceContext,
50    DecoderNativeDeviceContextKind, DecoderNativeFrame, DecoderNativeFrameMetadata,
51    DecoderNativeFrameReleaseTracking, DecoderNativeHandleKind, DecoderNativeRequirements,
52    DecoderOperationStatus, DecoderPacket, DecoderPacketResult, DecoderPcmFrame,
53    DecoderPcmFrameMetadata, DecoderPcmSampleLayout, DecoderReceiveFrameStatus,
54    DecoderReceiveNativeFrameMetadata, DecoderReceiveNativeFrameOutput,
55    DecoderReceivePcmFrameMetadata, DecoderReceivePcmFrameOutput, DecoderSessionConfig,
56    DecoderSessionInfo, DecoderSessionRequirements, DecoderVisibleRect, NativeDecoderPluginFactory,
57    NativeDecoderSession, normalize_decoder_codec_identifier,
58};
59pub use frame_processor::{
60    FrameProcessorCapabilities, FrameProcessorError, FrameProcessorFrameTimings,
61    FrameProcessorInputFrame, FrameProcessorOperationStatus, FrameProcessorOutputFrame,
62    FrameProcessorPluginFactory, FrameProcessorReceiveFrameMetadata, FrameProcessorReceiveOutput,
63    FrameProcessorReceiveStatus, FrameProcessorSession, FrameProcessorSessionConfig,
64    FrameProcessorSessionInfo, FrameProcessorSessionRequirements, FrameProcessorSubmitFrame,
65    FrameProcessorSubmitResult, FrameProcessorSubmitStatus,
66};
67pub use hook::{
68    PipelineEvent, PipelineEventHook, PipelineEventHookError, PipelineEventHookOutcome,
69};
70pub use invocation::{
71    PluginInvocationPolicy, PluginInvocationPolicyError, PluginInvocationWorkload,
72};
73pub use native_frame::{
74    NativeFrame, NativeFrameColorMetadata, NativeFrameContentLightMetadata,
75    NativeFrameDolbyVisionMetadata, NativeFrameHdrMetadata, NativeFrameLeaseToken,
76    NativeFrameMasteringDisplayMetadata, NativeFrameMetadata, NativeFramePipelineProfile,
77    NativeFrameReleaseTracking, NativeFrameSyncInfo, NativeFrameTransform, NativeHandleKind,
78    VisibleRect,
79};
80pub use plan::{
81    MAX_PLUGIN_PLAN_PROVIDERS, PLUGIN_PLAN_SCHEMA_VERSION, PluginPlan, PluginPlanError,
82    PluginPlanPolicy, PluginPlanProvider,
83};
84pub use plugin_reference::{PluginReference, PluginReferenceError, PluginTransport};
85pub use processor::{
86    AssemblyMode, CompletedContentFormat, CompletedDownloadInfo, CompletedStream,
87    ContentFormatKind, DownloadMetadata, OutputFormat, PostDownloadProcessor, ProcessorError,
88    ProcessorOutput, ProcessorProgress, StreamKind,
89};
90pub use protocol::{
91    MAX_PIPELINE_EVENT_INPUT_BYTES, MAX_PLUGIN_ATTRIBUTE_KEY_BYTES,
92    MAX_PLUGIN_ATTRIBUTE_VALUE_BYTES, MAX_PLUGIN_ATTRIBUTES, MAX_PLUGIN_DIAGNOSTIC_MESSAGE_BYTES,
93    MAX_PLUGIN_DIAGNOSTICS, MAX_PLUGIN_ERROR_MESSAGE_BYTES, MAX_PLUGIN_EVENT_ID_BYTES,
94    MAX_PLUGIN_EVENT_NAME_BYTES, MAX_PLUGIN_MEASUREMENTS, MAX_PLUGIN_PLATFORM_BYTES,
95    MAX_PLUGIN_PROTOCOL_BYTES, MAX_PLUGIN_RESOURCE_IDENTITY_BYTES, MAX_PLUGIN_THREAD_BYTES,
96    MAX_SOURCE_NORMALIZER_PACKET_BYTES, PluginDiagnostic, PluginDiagnosticSeverity,
97    PluginMeasurement, PluginProtocolViolation,
98};
99pub use resolver::{
100    MAX_PLUGIN_RESOLUTION_CONSTRAINTS, MAX_PLUGIN_RESOLUTION_STATES, PluginResolution,
101    PluginResolutionError, PluginResolvedProvider, PluginResolver, PluginResolverPolicy,
102};
103pub use scope::{
104    DEFAULT_PLUGIN_RUNTIME_SHUTDOWN_TIMEOUT, DEFAULT_PLUGIN_SCOPE_CLOSE_TIMEOUT,
105    MAX_PLUGIN_CORRELATION_ID_BYTES, MAX_PLUGIN_RUNTIME_OWNER_REGISTRATIONS,
106    MAX_PLUGIN_RUNTIME_SCOPE_REGISTRATIONS, MAX_PLUGIN_SCOPE_CHILDREN, MAX_PLUGIN_SCOPE_DEPTH,
107    MAX_PLUGIN_SCOPE_OWNERS, MAX_PLUGIN_SCOPE_QUARANTINE_RECORDS, MAX_PLUGIN_SCOPE_REASON_BYTES,
108    PluginActivePlaybackCorrelation, PluginNextPrewarmCorrelation, PluginOwnerDisposalError,
109    PluginOwnerToken, PluginPlaybackAttachment, PluginPlaybackAttachmentToken,
110    PluginPlaybackAuthority, PluginPlaybackError, PluginPlaybackRole,
111    PluginPlaybackTransitionReport, PluginRuntime, PluginScope, PluginScopeCloseReport,
112    PluginScopeError, PluginScopeKind, PluginScopeQuarantine, PluginScopeQuarantineReason,
113    PluginScopeResource, PluginScopeState, PluginSessionCorrelation,
114};
115pub use sdk::{Plugin, PluginBuildError, PluginBuilder, PluginCapability};
116pub use source_normalizer::{
117    SourceNormalizerError, SourceNormalizerNormalizeLevel, SourceNormalizerOperationStatus,
118    SourceNormalizerOutputRoute, SourceNormalizerPacket, SourceNormalizerPacketCapabilities,
119    SourceNormalizerPacketLease, SourceNormalizerPacketMediaKind,
120    SourceNormalizerPacketPluginFactory, SourceNormalizerPacketSeek, SourceNormalizerPacketSession,
121    SourceNormalizerPacketSessionConfig, SourceNormalizerPacketSessionRequirements,
122    SourceNormalizerPacketStreamInfo, SourceNormalizerPacketTrackInfo,
123    SourceNormalizerReadPacketMetadata, SourceNormalizerReadPacketStatus,
124    SourceNormalizerRequiredCapabilities, SourceNormalizerResourceCachePolicy,
125    SourceNormalizerResourceCapabilities, SourceNormalizerResourceInfo,
126    SourceNormalizerResourcePluginFactory, SourceNormalizerResourceSession,
127    SourceNormalizerResourceSessionConfig, SourceNormalizerResourceSessionInfo,
128    SourceNormalizerResourceSessionRequirements, SourceNormalizerResourceSessionState,
129    SourceNormalizerResourceSessionStatus, SourceNormalizerResourceSessionWaitStatus,
130    SourceNormalizerSessionCapabilities, SourceNormalizerSessionRequirements,
131    validate_source_normalizer_plugin_input,
132};
133
134#[doc(hidden)]
135pub mod __private {
136    pub use player_plugin_abi::VesperPluginRoot;
137
138    pub fn export_plugin<R>(factory: fn() -> R) -> *const VesperPluginRoot
139    where
140        R: crate::sdk::PluginFactoryResult,
141    {
142        crate::sdk::export_plugin(factory)
143    }
144}