vesper-player-plugin 0.5.1

Safe Rust author SDK for Vesper native plugins.
Documentation
#![deny(unsafe_code)]

mod audio;
mod benchmark;
mod capability;
mod catalog;
mod decoder;
mod frame_processor;
mod hook;
mod invocation;
mod native_frame;
mod plan;
mod plugin_reference;
mod processor;
mod protocol;
mod resolver;
mod scope;
mod sdk;
pub mod source_normalizer;

pub use player_plugin_macros::export;

pub use audio::{
    AudioPitchMode, AudioPlaybackPolicy, AudioProcessorCapabilities, AudioProcessorChain,
    AudioProcessorError, AudioProcessorOperationStatus, AudioProcessorPluginFactory,
    AudioProcessorSession, AudioProcessorSessionConfig, AudioProcessorSessionInfo,
    AudioProcessorSubmitStatus,
};
pub use benchmark::{
    BenchmarkEvent, BenchmarkEventBatch, BenchmarkSink, BenchmarkSinkError, BenchmarkSinkReport,
    BenchmarkSinkStatus, BenchmarkThresholdViolation, MAX_BENCHMARK_BATCH_EVENTS,
    MAX_BENCHMARK_THRESHOLD_VIOLATIONS,
};
pub use capability::ProcessorCapabilities;
pub use catalog::{
    CanonicalPluginArtifactDescriptor, MAX_PLUGIN_ARCHITECTURE_BYTES,
    MAX_PLUGIN_ARTIFACT_CAPABILITIES, MAX_PLUGIN_ARTIFACT_PATH_BYTES,
    MAX_PLUGIN_CATALOG_DIAGNOSTICS, MAX_PLUGIN_CATALOG_RECORDS, MAX_PLUGIN_CATALOG_SOURCE_BYTES,
    MAX_PLUGIN_PROVISIONS, MAX_PLUGIN_REQUIREMENTS, MAX_PLUGIN_RUNTIME_DEPENDENCIES,
    MAX_PLUGIN_TARGET_BYTES, PLUGIN_CATALOG_MIGRATION_VERSION, PLUGIN_CATALOG_SCHEMA_VERSION,
    PluginArtifactCapability, PluginArtifactDescriptor, PluginArtifactFormat,
    PluginArtifactTransport, PluginCatalog, PluginCatalogDiagnostic, PluginCatalogError,
    PluginCatalogRecord, PluginCatalogSource, PluginProvision, PluginRequirement,
    PluginResourcePolicy, PluginRuntimeDependency, PluginRuntimeLinkage,
    validate_plugin_provisions, validate_plugin_requirements,
};
pub use decoder::{
    DecoderBitstreamFormat, DecoderCapabilities, DecoderCodecCapability, DecoderError,
    DecoderFrameFormat, DecoderMediaKind, DecoderNativeDeviceContext,
    DecoderNativeDeviceContextKind, DecoderNativeFrame, DecoderNativeFrameMetadata,
    DecoderNativeFrameReleaseTracking, DecoderNativeHandleKind, DecoderNativeRequirements,
    DecoderOperationStatus, DecoderPacket, DecoderPacketResult, DecoderPcmFrame,
    DecoderPcmFrameMetadata, DecoderPcmSampleLayout, DecoderReceiveFrameStatus,
    DecoderReceiveNativeFrameMetadata, DecoderReceiveNativeFrameOutput,
    DecoderReceivePcmFrameMetadata, DecoderReceivePcmFrameOutput, DecoderSessionConfig,
    DecoderSessionInfo, DecoderSessionRequirements, DecoderVisibleRect, NativeDecoderPluginFactory,
    NativeDecoderSession, normalize_decoder_codec_identifier,
};
pub use frame_processor::{
    FrameProcessorCapabilities, FrameProcessorError, FrameProcessorFrameTimings,
    FrameProcessorInputFrame, FrameProcessorOperationStatus, FrameProcessorOutputFrame,
    FrameProcessorPluginFactory, FrameProcessorReceiveFrameMetadata, FrameProcessorReceiveOutput,
    FrameProcessorReceiveStatus, FrameProcessorSession, FrameProcessorSessionConfig,
    FrameProcessorSessionInfo, FrameProcessorSessionRequirements, FrameProcessorSubmitFrame,
    FrameProcessorSubmitResult, FrameProcessorSubmitStatus,
};
pub use hook::{
    PipelineEvent, PipelineEventHook, PipelineEventHookError, PipelineEventHookOutcome,
};
pub use invocation::{
    PluginInvocationPolicy, PluginInvocationPolicyError, PluginInvocationWorkload,
};
pub use native_frame::{
    NativeFrame, NativeFrameColorMetadata, NativeFrameContentLightMetadata,
    NativeFrameDolbyVisionMetadata, NativeFrameHdrMetadata, NativeFrameLeaseToken,
    NativeFrameMasteringDisplayMetadata, NativeFrameMetadata, NativeFramePipelineProfile,
    NativeFrameReleaseTracking, NativeFrameSyncInfo, NativeFrameTransform, NativeHandleKind,
    VisibleRect,
};
pub use plan::{
    MAX_PLUGIN_PLAN_PROVIDERS, PLUGIN_PLAN_SCHEMA_VERSION, PluginPlan, PluginPlanError,
    PluginPlanPolicy, PluginPlanProvider,
};
pub use plugin_reference::{PluginReference, PluginReferenceError, PluginTransport};
pub use processor::{
    AssemblyMode, CompletedContentFormat, CompletedDownloadInfo, CompletedStream,
    ContentFormatKind, DownloadMetadata, OutputFormat, PostDownloadProcessor, ProcessorError,
    ProcessorOutput, ProcessorProgress, StreamKind,
};
pub use protocol::{
    MAX_PIPELINE_EVENT_INPUT_BYTES, MAX_PLUGIN_ATTRIBUTE_KEY_BYTES,
    MAX_PLUGIN_ATTRIBUTE_VALUE_BYTES, MAX_PLUGIN_ATTRIBUTES, MAX_PLUGIN_DIAGNOSTIC_MESSAGE_BYTES,
    MAX_PLUGIN_DIAGNOSTICS, MAX_PLUGIN_ERROR_MESSAGE_BYTES, MAX_PLUGIN_EVENT_ID_BYTES,
    MAX_PLUGIN_EVENT_NAME_BYTES, MAX_PLUGIN_MEASUREMENTS, MAX_PLUGIN_PLATFORM_BYTES,
    MAX_PLUGIN_PROTOCOL_BYTES, MAX_PLUGIN_RESOURCE_IDENTITY_BYTES, MAX_PLUGIN_THREAD_BYTES,
    MAX_SOURCE_NORMALIZER_PACKET_BYTES, PluginDiagnostic, PluginDiagnosticSeverity,
    PluginMeasurement, PluginProtocolViolation,
};
pub use resolver::{
    MAX_PLUGIN_RESOLUTION_CONSTRAINTS, MAX_PLUGIN_RESOLUTION_STATES, PluginResolution,
    PluginResolutionError, PluginResolvedProvider, PluginResolver, PluginResolverPolicy,
};
pub use scope::{
    DEFAULT_PLUGIN_RUNTIME_SHUTDOWN_TIMEOUT, DEFAULT_PLUGIN_SCOPE_CLOSE_TIMEOUT,
    MAX_PLUGIN_CORRELATION_ID_BYTES, MAX_PLUGIN_RUNTIME_OWNER_REGISTRATIONS,
    MAX_PLUGIN_RUNTIME_SCOPE_REGISTRATIONS, MAX_PLUGIN_SCOPE_CHILDREN, MAX_PLUGIN_SCOPE_DEPTH,
    MAX_PLUGIN_SCOPE_OWNERS, MAX_PLUGIN_SCOPE_QUARANTINE_RECORDS, MAX_PLUGIN_SCOPE_REASON_BYTES,
    PluginActivePlaybackCorrelation, PluginNextPrewarmCorrelation, PluginOwnerDisposalError,
    PluginOwnerToken, PluginPlaybackAttachment, PluginPlaybackAttachmentToken,
    PluginPlaybackAuthority, PluginPlaybackError, PluginPlaybackRole,
    PluginPlaybackTransitionReport, PluginRuntime, PluginScope, PluginScopeCloseReport,
    PluginScopeError, PluginScopeKind, PluginScopeQuarantine, PluginScopeQuarantineReason,
    PluginScopeResource, PluginScopeState, PluginSessionCorrelation,
};
pub use sdk::{Plugin, PluginBuildError, PluginBuilder, PluginCapability};
pub use source_normalizer::{
    SourceNormalizerError, SourceNormalizerNormalizeLevel, SourceNormalizerOperationStatus,
    SourceNormalizerOutputRoute, SourceNormalizerPacket, SourceNormalizerPacketCapabilities,
    SourceNormalizerPacketLease, SourceNormalizerPacketMediaKind,
    SourceNormalizerPacketPluginFactory, SourceNormalizerPacketSeek, SourceNormalizerPacketSession,
    SourceNormalizerPacketSessionConfig, SourceNormalizerPacketSessionRequirements,
    SourceNormalizerPacketStreamInfo, SourceNormalizerPacketTrackInfo,
    SourceNormalizerReadPacketMetadata, SourceNormalizerReadPacketStatus,
    SourceNormalizerRequiredCapabilities, SourceNormalizerResourceCachePolicy,
    SourceNormalizerResourceCapabilities, SourceNormalizerResourceInfo,
    SourceNormalizerResourcePluginFactory, SourceNormalizerResourceSession,
    SourceNormalizerResourceSessionConfig, SourceNormalizerResourceSessionInfo,
    SourceNormalizerResourceSessionRequirements, SourceNormalizerResourceSessionState,
    SourceNormalizerResourceSessionStatus, SourceNormalizerResourceSessionWaitStatus,
    SourceNormalizerSessionCapabilities, SourceNormalizerSessionRequirements,
    validate_source_normalizer_plugin_input,
};

#[doc(hidden)]
pub mod __private {
    pub use player_plugin_abi::VesperPluginRoot;

    pub fn export_plugin<R>(factory: fn() -> R) -> *const VesperPluginRoot
    where
        R: crate::sdk::PluginFactoryResult,
    {
        crate::sdk::export_plugin(factory)
    }
}