1#![warn(clippy::undocumented_unsafe_blocks)]
2#![allow(
3 clippy::result_large_err,
4 reason = "loader error enums are public APIs; boxing their source variants would be breaking"
5)]
6
7use std::path::{Path, PathBuf};
8use std::sync::Arc;
9
10use player_plugin::{
11 BenchmarkEventBatch, BenchmarkSink, BenchmarkSinkError, BenchmarkSinkReport,
12 DecoderCapabilities, DecoderCodecCapability, DecoderMediaKind, DecoderNativeRequirements,
13 FrameProcessorCapabilities, FrameProcessorPluginFactory, NativeDecoderPluginFactory,
14 NativeFramePipelineProfile, NativeHandleKind, PipelineEventHook, PluginDiagnostic,
15 PluginDiagnosticSeverity, PostDownloadProcessor, SourceNormalizerPacketCapabilities,
16 SourceNormalizerPacketPluginFactory, SourceNormalizerResourceCapabilities,
17 SourceNormalizerResourcePluginFactory,
18};
19use thiserror::Error;
20
21mod benchmark;
22mod catalog;
23mod diagnostics;
24mod embedded_registry;
25mod native_abi;
26mod native_library;
27mod registry;
28#[cfg(feature = "wasm")]
29mod wasm;
30
31pub use benchmark::BenchmarkSinkPluginSession;
32pub use catalog::{
33 MAX_PLUGIN_CATALOG_IMPORT_ARTIFACT_BYTES, PluginCatalogImportError, PluginCatalogImporter,
34 PluginCatalogIndex,
35};
36pub use diagnostics::{
37 DecoderPluginCapabilitySummary, DecoderPluginCodecSummary, DecoderPluginMatchRequest,
38 FrameProcessorPluginCapabilitySummary, PluginCapabilityAvailability, PluginCapabilityKind,
39 PluginCapabilitySummary, PluginDiagnosticRecord, PluginDiagnosticStatus,
40 SourceNormalizerPacketPluginCapabilitySummary, SourceNormalizerResourcePluginCapabilitySummary,
41};
42pub use embedded_registry::{
43 EmbeddedAppleCodeSignatureValidation, EmbeddedPluginArtifact, EmbeddedPluginCapability,
44 EmbeddedPluginIntegrity, EmbeddedPluginLocator, EmbeddedPluginPackage, EmbeddedPluginRegistry,
45 EmbeddedPluginRegistryError, MAX_ANDROID_PACKAGE_PATHS,
46 MAX_EMBEDDED_PLUGIN_ARCHIVE_ARTIFACT_BYTES, MAX_EMBEDDED_PLUGIN_ARTIFACTS,
47 MAX_EMBEDDED_PLUGIN_CAPABILITIES_PER_ARTIFACT, MAX_EMBEDDED_PLUGIN_REGISTRY_BYTES,
48 MAX_EMBEDDED_PLUGIN_REGISTRY_FRAGMENTS, MAX_EMBEDDED_PLUGIN_REGISTRY_SET_BYTES,
49 resolve_android_native_library,
50};
51pub use native_abi::{
52 LoadedNativePlugin, NativePluginContractError, PluginContractDiagnosticKind,
53 PluginInterfaceDiagnostic, PluginInterfaceMetadata, PluginInterfaceRecord,
54 PluginInterfaceState, PluginSelectionError,
55};
56pub use native_library::PluginLoadError;
57pub use player_plugin::{
58 CanonicalPluginArtifactDescriptor, DEFAULT_PLUGIN_RUNTIME_SHUTDOWN_TIMEOUT,
59 DEFAULT_PLUGIN_SCOPE_CLOSE_TIMEOUT, MAX_PLUGIN_CORRELATION_ID_BYTES, MAX_PLUGIN_PLAN_PROVIDERS,
60 MAX_PLUGIN_PROVISIONS, MAX_PLUGIN_REQUIREMENTS, MAX_PLUGIN_RESOLUTION_CONSTRAINTS,
61 MAX_PLUGIN_RESOLUTION_STATES, MAX_PLUGIN_RUNTIME_DEPENDENCIES,
62 MAX_PLUGIN_RUNTIME_OWNER_REGISTRATIONS, MAX_PLUGIN_RUNTIME_SCOPE_REGISTRATIONS,
63 MAX_PLUGIN_SCOPE_CHILDREN, MAX_PLUGIN_SCOPE_DEPTH, MAX_PLUGIN_SCOPE_OWNERS,
64 MAX_PLUGIN_SCOPE_QUARANTINE_RECORDS, MAX_PLUGIN_SCOPE_REASON_BYTES,
65 PLUGIN_CATALOG_MIGRATION_VERSION, PLUGIN_CATALOG_SCHEMA_VERSION, PLUGIN_PLAN_SCHEMA_VERSION,
66 PluginActivePlaybackCorrelation, PluginArtifactCapability, PluginArtifactDescriptor,
67 PluginArtifactFormat, PluginArtifactTransport, PluginCatalog, PluginCatalogDiagnostic,
68 PluginCatalogError, PluginCatalogRecord, PluginCatalogSource, PluginInvocationPolicy,
69 PluginInvocationPolicyError, PluginInvocationWorkload, PluginNextPrewarmCorrelation,
70 PluginOwnerToken, PluginPlan, PluginPlanError, PluginPlanPolicy, PluginPlanProvider,
71 PluginPlaybackAttachment, PluginPlaybackAttachmentToken, PluginPlaybackAuthority,
72 PluginPlaybackError, PluginPlaybackRole, PluginPlaybackTransitionReport, PluginProvision,
73 PluginRequirement, PluginResolution, PluginResolutionError, PluginResolvedProvider,
74 PluginResolver, PluginResolverPolicy, PluginResourcePolicy, PluginRuntime,
75 PluginRuntimeDependency, PluginRuntimeLinkage, PluginScope, PluginScopeCloseReport,
76 PluginScopeError, PluginScopeKind, PluginScopeQuarantine, PluginScopeQuarantineReason,
77 PluginScopeResource, PluginScopeState, PluginSessionCorrelation,
78};
79#[cfg(feature = "wasm")]
80pub use player_plugin_wasm_host::{
81 WASM_PLUGIN_WIT_INTERFACE_MAJOR, WASM_PLUGIN_WIT_INTERFACE_MINOR,
82};
83pub use registry::{
84 NativePluginArtifact, PluginRegistry, PluginRegistryBuildError, PluginRegistryReport,
85 RegisteredPluginInterface, ResolvedPluginCapability,
86};
87#[cfg(feature = "wasm")]
88pub use wasm::{
89 WasmPluginArtifact, WasmPluginArtifactError, WasmPluginInterfaceDeclaration,
90 WasmPluginLoadError,
91};
92
93pub(crate) use native_library::LibraryHolder;
94#[cfg(feature = "wasm")]
95pub(crate) use wasm::LoadedWasmPlugin;
96
97#[cfg(test)]
98mod tests;