<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Clipchamp</name>
    </assembly>
    <members>
        <member name="P:Clipchamp.Config.AppCapabilities.UpdatePrompted">
            <summary>
            Whether update is already prompted in Windows app.
            When this is true, the web app should not prompt for update again.
            </summary>
        </member>
        <member name="P:Clipchamp.Config.AppCapabilities.TokenForceRefresh">
            <summary>
            This flag indicates whether the app supports force refresh in AcquireToken flow
            </summary>
        </member>
        <member name="P:Clipchamp.Config.AppState.IsSignInScreenShown">
            <summary>
            A flag indicating whether the sign in screen is shown before entering into the app.
            </summary>
        </member>
        <member name="P:Clipchamp.Config.AppState.MuteErrorOnSignInScreen">
            <summary>
            A flag indicating whether the error message should not show on sign in screen.
            </summary>
        </member>
        <member name="P:Clipchamp.Contracts.Dispatchers.IDispatchableContext.ReferencedMessageId">
            <summary>
            Deprecated
            </summary>
        </member>
        <member name="P:Clipchamp.Contracts.Dispatchers.IDispatchableContext.ReferencedMessageName">
            <summary>
            Deprecated
            </summary>
        </member>
        <member name="T:Clipchamp.Contracts.Serializers.ISerializable">
            <summary>
            Allow Serializer to find and register the concrete type for polymorphism deserialization.
            Only implement this interface when you actually need polymorphism deserialization.
            </summary>
        </member>
        <member name="P:Clipchamp.Dispatchers.Dispatcher.Strategies">
            <summary>
            Made public only for tests purposes. DO NOT access underlying strategies in app.
            </summary>
        </member>
        <member name="T:Clipchamp.Dispatchers.Strategies.InternalDispatcher">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="F:Clipchamp.Dispatchers.Strategies.InternalDispatcher.AllHandlerTypes">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="T:Clipchamp.Entities.SharedBuffer">
            <summary>
            Owns nothing about what crosses it, so anything built on shared memory can compose on this
            without going through a transfer.
            </summary>
        </member>
        <member name="M:Clipchamp.Entities.SharedBuffer.Close">
            <summary>
            Cancelling before the window closes means work waiting on the web app fails now rather
            than staying blocked on a reply that is no longer coming.
            </summary>
        </member>
        <member name="P:Clipchamp.Entities.User.SharePointRolloutEnvironment">
            <summary>
            DO NOT use this property on any logic. This is to be used in ECS only.
            The value is copied directly from SPO HTML so the value is unstable and out of our control.
            </summary>
        </member>
        <member name="P:Clipchamp.Entities.User.SharePointCloudEnvironment">
            <summary>
            DO NOT use this property on any logic. This is to be used in ECS only.
            The value is copied directly from SPO HTML so the value is unstable and out of our control.
            </summary>
        </member>
        <member name="T:Clipchamp.Exceptions.VideoScalerInitializationException">
            <summary>
            An upscale that failed before it had scalers to work with. It is an upscale failure like
            any other, because preparing the upscaler is the first thing an upscale does rather than
            something that happened to it earlier.
            </summary>
        </member>
        <member name="T:Clipchamp.Exceptions.UpscaleFailureReason">
            <summary>
            What a reason means for the user, and what to offer them in response, is decided by the
            web app, which ships far more often than this does.
            </summary>
        </member>
        <member name="T:Clipchamp.Facades.IPersistFile">
            <summary>
            Only <see cref="M:Clipchamp.Facades.IPersistFile.Save(System.String,System.Boolean)"/> is called; the others hold their places in the method table.
            </summary>
        </member>
        <member name="T:Clipchamp.Facades.MediaFoundationSourceReader">
            <summary>
            Decodes as fast as the machine allows because there is no playback clock to keep up with.
            Every call must come from the same MTA thread: the reader is an apartment-bound COM object,
            not a thread-safe service.
            </summary>
        </member>
        <member name="P:Clipchamp.Facades.MediaFoundationSourceReader.VideoFormat">
            <summary>
            How the decoded frames should be read: colour space, range, and the shape of a pixel.
            Taken from the type the file declares rather than the one decoding produces, because
            converting to NV12 describes the buffer rather than the source, dropping both what the
            samples mean and the shape they were meant to have. Copied without being interpreted,
            so an unrecognised value travels as easily as a known one.
            </summary>
        </member>
        <member name="M:Clipchamp.Facades.MediaFoundationSourceReader.ReadFrame">
            <summary>
            Returns null once the stream ends. A terminal stream error throws instead of returning
            null, because a truncated video that reports success is worse than one that fails.
            </summary>
        </member>
        <member name="M:Clipchamp.Facades.WebView2Facade.CreateSharedBuffer(System.UInt64,System.String)">
            <summary>
            Access is read-write because one buffer carries both directions: the web app writes the
            input into it and reads the output back out of it.
            </summary>
        </member>
        <member name="M:Clipchamp.Handlers.CancelUpscaleVideoHandler.Handle(Clipchamp.Messages.CancelUpscaleVideo)">
            <summary>
            Answers either way, whether or not an upscale was still there to stop. Neither answer
            proves the upscale received the stop: the first says only that handling returned.
            </summary>
        </member>
        <member name="M:Clipchamp.Handlers.DisposeWebView2InitiatedHandler.Handle(Clipchamp.Messages.DisposeWebView2Initiated)">
            <summary>
            Buffers are reached through the WebView2 that is going away, so they go with it. Work
            that was using them is stopped first, because a result it finished producing would have
            nowhere left to go.
            </summary>
        </member>
        <member name="M:Clipchamp.Handlers.ReleaseSharedBufferHandler.Handle(Clipchamp.Messages.ReleaseSharedBuffer)">
            <summary>
            Releasing always succeeds. A buffer that is already gone is still reported as released,
            because the command asks for an end state rather than for an action, and a window that
            refuses to close is left to process teardown rather than failing the caller.
            </summary>
        </member>
        <member name="M:Clipchamp.Handlers.WebAppNavigationStartedHandler.Handle(Clipchamp.Messages.WebAppNavigationStarted)">
            <summary>
            A buffer is reachable only from the page that asked for it, so a page left behind takes
            every buffer it held out of reach and no release comes back for them. A navigation the
            commercial app cancels reloads immediately afterwards, so giving them up early costs
            nothing it was going to keep.
            </summary>
        </member>
        <member name="P:Clipchamp.Loggers.Attributes.EventAttribute.Mute">
            <summary>
            When true the event is never logged, its dispatch lifecycle is never logged, and it is
            left out of the generated taxonomy, so a message that crosses the boundary many times a
            second can still be dispatched without burying everything else in the log.
            </summary>
        </member>
        <member name="M:Clipchamp.Loggers.Attributes.EventAttribute.IsMuted(System.Type)">
            <summary>Cached because this is consulted on every dispatch of every message.</summary>
        </member>
        <member name="M:Clipchamp.Loggers.Logger.Log(Clipchamp.Contracts.Dispatchers.IDispatchable,System.String,System.String,System.Int32)">
            <summary>
            Customly log a message without going through the Dispatcher.
            NOTE: Typically it is better to dispatch the message instead of only logging it.
                  Please double check if you really need to call this.
            </summary>
            <param name="obj">The message</param>
            <param name="memberName">DO NOT PROVIDE THIS. This will be auto-filled</param>
            <param name="fileName">DO NOT PROVIDE THIS. This will be auto-filled</param>
            <param name="lineNumber">DO NOT PROVIDE THIS. This will be auto-filled</param>
        </member>
        <member name="M:Clipchamp.Loggers.Logger.Log(System.Exception,System.String,System.String,System.Int32)">
            <summary>
            Log an astray.
            </summary>
            <param name="exception">The exception</param>
            <param name="memberName">DO NOT PROVIDE THIS. This will be auto-filled</param>
            <param name="fileName">DO NOT PROVIDE THIS. This will be auto-filled</param>
            <param name="lineNumber">DO NOT PROVIDE THIS. This will be auto-filled</param>
        </member>
        <member name="M:Clipchamp.Loggers.Logger.Log(System.String,System.String,System.String,System.Int32)">
            <summary>
            Log a checkpoint.
            NOTE: The provided string will not be logged and will instead be discarded.
            </summary>
            <param name="_">The description of the checkpoint (will be discarded)</param>
            <param name="memberName">DO NOT PROVIDE THIS. This will be auto-filled</param>
            <param name="fileName">DO NOT PROVIDE THIS. This will be auto-filled</param>
            <param name="lineNumber">DO NOT PROVIDE THIS. This will be auto-filled</param>
        </member>
        <member name="M:Clipchamp.Loggers.Logger.LogLifecycle(Clipchamp.Contracts.Dispatchers.IDispatchable,Clipchamp.Contracts.Dispatchers.State,System.String,System.String,System.String)">
            <summary>
            Only the context is recorded; the payload is recorded once, by whoever dispatches the
            message.
            </summary>
        </member>
        <member name="M:Clipchamp.Messages.AstrayHistory.SetScope(Clipchamp.Contracts.Dispatchers.IDispatchable)">
            <summary>
            NB: This method is not implemented as AstrayHistory inherits its Scope 
            from IAstray. It should not be updated after set in constructor.
            </summary>
            <param name="scope"></param>
        </member>
        <member name="T:Clipchamp.Messages.CancelUpscaleVideo">
            <summary>
            Asking twice, or asking for an upscale that already finished, is not an error: this only
            starts a cancellation, and the upscale it names is what reports how it ended.
            </summary>
        </member>
        <member name="P:Clipchamp.Messages.CancelUpscaleVideo.MessagePayload.MessageId">
            <summary>Identifies the upscale to stop, not this request to stop it.</summary>
        </member>
        <member name="T:Clipchamp.Messages.CancelUpscaleVideoFailed">
            <summary>
            The other half of <see cref="T:Clipchamp.Messages.CancelUpscaleVideoInitiated"/>, so how a stop was handled is
            recorded either way.
            </summary>
        </member>
        <member name="M:Clipchamp.Messages.LogHistory.SetScope(Clipchamp.Contracts.Dispatchers.IDispatchable)">
            <summary>
            NB: This method is not implemented as LogHistory inherits its Scope
            from DispatchableContext. It should not be updated after set in constructor.
            </summary>
            <param name="scope"></param>
        </member>
        <member name="P:Clipchamp.Messages.UpscaleProgressUpdated.MessagePayload.Progress">
            <summary>
            Fraction from 0 to 1 through this stage, null while the stage cannot say. What a
            stage is worth against the whole operation is left to the web app, which can
            rebalance it without a new native build.
            </summary>
        </member>
        <member name="T:Clipchamp.Messages.UpscaleStage">
             <summary>
             Named after what the operation is doing rather than how far along it is, so a stage that
             takes no time on a given input can be skipped without leaving a gap in the sequence. Every
             upscale asks for a pool, and the three preparation stages are simply skipped by one handed
             a pool that is already standing, which is the same thing happening for the same reason.
            
             The numbers are the order these occur in. The pool compares them while it reports the
             preparation it shares, so a later arrival cannot drag the reported position backwards for
             everyone waiting on it. Nothing compares the stages after preparation, which one upscale
             reaches on its own. They are written out so that inserting a stage in the middle, or
             reordering two, cannot be done without it being obvious in the diff.
             </summary>
        </member>
        <member name="P:Clipchamp.Messages.UpscaleVideo.MessagePayload.MessageId">
            <summary>
            The same value identifies the request, its shared buffer, and every message that
            belongs to it, so nothing has to be correlated across two identifiers.
            </summary>
        </member>
        <member name="P:Clipchamp.Messages.UpscaleVideo.MessagePayload.InputSizeBytes">
            <summary>
            The web app holds the source file, so only it can say how many bytes the transfer
            must carry.
            </summary>
        </member>
        <member name="M:Clipchamp.Messages.UpscaleVideoFailed.#ctor(System.Guid,System.Exception,Clipchamp.Exceptions.UpscaleFailureReason,Clipchamp.Messages.UpscaleMetrics)">
            <remarks>
            The reason says which bucket the failure belongs in. It is classified by whatever caught
            it rather than read back off the exception here, so a message stays a description of what
            is being sent and does not have to know the exception types the upscaler throws.
            </remarks>
        </member>
        <member name="T:Clipchamp.Messages.VideoScalerInitializationMetrics">
            <summary>
            What preparing the scaler pool cost. Reported as part of the upscale that needed the pool,
            because preparing one is the first thing an upscale does rather than a phase of its own.
            </summary>
        </member>
        <member name="T:Clipchamp.Messages.UpscaleMetrics">
            <summary>
            A fixed set of scalars. Nothing here grows with frame, chunk, or scaler count, and nothing
            identifies a scaler, a worker, or a file.
            </summary>
        </member>
        <member name="T:Clipchamp.Providers.DispatcherServiceProvider">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="M:Clipchamp.Providers.DispatcherServiceProvider.RegisterHandlers(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="T:Clipchamp.Providers.ViewServiceProvider">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="M:Clipchamp.Providers.ViewServiceProvider.RegisterViewModels(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="T:Clipchamp.Serializers.ResolverContexts">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="F:Clipchamp.Serializers.ResolverContexts.PolymorphismContexts">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="T:Clipchamp.Serializers.PolymorphismContext">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="P:Clipchamp.Serializers.PolymorphismContext.BaseType">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="P:Clipchamp.Serializers.PolymorphismContext.DerivedTypes">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="P:Clipchamp.Serializers.PolymorphismContext.DiscriminatorKey">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="M:Clipchamp.Serializers.PolymorphismContext.#ctor(System.Type,Clipchamp.Serializers.DerivedType[],System.String)">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="T:Clipchamp.Serializers.DerivedType">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="P:Clipchamp.Serializers.DerivedType.Type">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="P:Clipchamp.Serializers.DerivedType.Discriminator">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="M:Clipchamp.Serializers.DerivedType.#ctor(System.Type,System.String)">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="F:Clipchamp.Services.SharedBuffers.SharedBufferRepository.MaximumCapacity">
            <summary>The buffer stays committed for as long as it is open, so nothing larger than this gets a window of its own.</summary>
        </member>
        <member name="M:Clipchamp.Services.SharedBuffers.SharedBufferRepository.Create(System.Guid,System.Int64)">
            <summary>
            <paramref name="capacityHint"/> is clamped, so no caller can rely on getting it and every
            caller must still tolerate being chunked.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.SharedBuffers.SharedBufferRepository.Delete(System.Guid)">
            <summary>
            The entry is gone before the window is closed, so a window that refuses to close is
            forgotten rather than kept. The OS reclaims its memory once the web app has released it
            too, and unconditionally when this process ends.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.SharedBuffers.SharedBufferRepository.Clear">
            <summary>
            Closes every open buffer and reports what it closed, so the caller can still announce
            them. A later buffer can be created again, because the WebView2 that owns them can be
            torn down and replaced while the app keeps running.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.SharedBuffers.SharedBufferTransfer">
            <summary>
            The buffer is a window, not a container: a payload larger than it takes as many exchanges
            as it needs and one that fits takes a single exchange, and callers cannot tell the two
            apart.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.AudioMuxer">
            <summary>
            The encoder writes video alone, so the sound is taken from the source and muxed back in
            afterwards. Both halves are written again on the way through, so anything the finished file
            should still declare has to be put on the profile deliberately.
            <para>
            Colour is the exception, and it is worth knowing before changing anything here. The render
            re-decides colour from the output size and ignores what the profile asks for, so a picture
            that arrives as BT.601 leaves as BT.709 once the output is 720p or larger. The finished file
            is therefore left declaring no colour at all, and that omission is what keeps it correct:
            readers fall back to the same size-based guess the render just made. Declaring the source's
            colour here instead would label the picture as something it no longer is.
            </para>
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.FrameBufferPool">
            <summary>
            One upscaled frame is tens of megabytes, so the same buffers are reused for the whole
            operation instead of asking the allocator for a new one thirty times a second. Renting
            never waits for a buffer to come back: what bounds memory is the pipeline's own
            backpressure, and waiting here for a buffer the encoder is holding would deadlock against
            the encoder waiting for a frame.
            </summary>
        </member>
        <member name="P:Clipchamp.Services.VideoUpscaling.FrameBufferPool.HighWaterMark">
            <summary>
            The most buffers ever held at once, which multiplied by the frame size is the memory
            this operation actually needed. Nothing here bounds it, so it is worth reporting.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.FrameLoans">
             <summary>
             The frames an encoder attempt is still holding, each of which can be taken back once.
            
             The platform does not promise to say it has finished with a frame exactly once, and two
             notifications for the same frame would put one buffer back in the pool twice, where it
             would be rented to two writers at the same time. Taking a frame out of here is what settles
             which notification owns it: the others find nothing and have nothing to give back.
             </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.FrameLoans.TryTakeBack(System.Int32,System.Byte[]@)">
            <summary>
            Takes back the frame lent under this index. False means another notification about the
            same frame already took it, which the platform is allowed to send.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.FrameLoans.Abandon">
            <summary>
            The attempt is over and the pool these came from goes with it, so nothing still on loan
            needs returning.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.FrameReorderer">
            <summary>
            Scalers finish out of order, but an encoder can only be fed in order. Frames arriving early
            are held until the one before them arrives, and every index that becomes consecutive is
            released immediately rather than at the end of a batch.
            </summary>
        </member>
        <member name="P:Clipchamp.Services.VideoUpscaling.FrameReorderer.HighWaterMark">
            <summary>The most frames ever held at once, which is what the memory bound is really made of.</summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.FrameReorderer.#ctor(System.Int32,System.Int32)">
            <param name="aheadCapacity">How many frames may be held while waiting for the one to release next.</param>
            <param name="producerCount">How many workers will publish, so completion needs no separate signal.</param>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.FrameReorderer.Publish(System.Int32,System.Byte[],System.Threading.CancellationToken)">
            <summary>
            Blocks while the buffer is full, except for the frame the consumer is waiting on: that
            one is always admitted, so frames held ahead can never starve the one that would let
            them all through.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.FrameReorderer.CompleteProducer">
            <summary>
            Called once by each worker as it stops publishing. The consumer ends when every worker
            has finished and nothing is left held, so it never waits on a producer that is itself
            waiting.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.MemoryPlatform">
            <summary>
            Reports the platform's memory counters, or reports nothing when the platform will not
            supply them. A counter is only ever measured or absent, never invented: zero means "not
            measured", because no running process holds zero bytes.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.MemoryWatermark">
            <summary>
            Samples process memory for as long as it is alive and keeps the highest reading. Reading
            only at the end would miss the peak, because the pipeline releases its buffers before the
            operation reports.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.OperationScaleRetryLedger">
             <summary>
             What an upscale is willing to spend on asking a scaler the same question again.
            
             A wallet per scaler rather than per frame, because a scaler that fails once is more likely
             to fail again, and a per-frame allowance would let one unhappy scaler spend the whole
             operation retrying. Credits do not come back until the next upscale: a wallet that refilled
             would turn a scaler failing steadily into an upscale that never ends.
             </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.OperationScaleRetryLedger.TrySpend(Clipchamp.Services.VideoUpscaling.VideoScalerHandle)">
            <summary>
            Keyed by the scaler itself rather than by where it sits in the generation, so what a
            scaler has already spent follows it into the second encoder attempt.
            </summary>
        </member>
        <member name="P:Clipchamp.Services.VideoUpscaling.OperationScaleRetryLedger.MostSpentByOneScaler">
            <summary>
            Reported separately from the total because one scaler spending everything and every
            scaler spending a little are the same total and quite different machines.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.OutputValidator">
             <summary>
             Every stage in the pipeline can report success and still leave a file nobody can play, so
             the result is opened again from disk and asked what it actually contains. The pipeline says
             what to expect of it; only the file says what is there.
            
             Each check opens a reader and finishes with it before returning, because the reader is
             apartment-bound and every call on it has to come from the one thread.
             </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.OutputValidator.ValidateVideoOnly(System.String,System.Int32,System.Int32,System.Double)">
            <summary>
            Checks what the pipeline produced, before any audio is restored. The length is exactly
            the frames that were written at this point, which is the only point it is.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.OutputValidator.ValidateMuxed(System.String,System.Int32,System.Int32)">
            <summary>
            Checks the file the user is handed once the audio is back, and answers how long it
            runs. How long that is belongs to the muxer rather than to the frame count: restoring
            the audio re-encodes it, and the priming and padding that adds leave the file
            legitimately longer than the video inside it.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.UpscaleOperation">
            <summary>
            Captures a generation of scalers on the way in and keeps that same set for its whole life,
            so a pool that is rebuilt or invalidated underneath it changes nothing about the video
            being made.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.UpscaleOperation.RunPipeline(Clipchamp.Services.VideoUpscaling.UpscaleWorkspace,Clipchamp.Messages.UpscaleVideo.MessagePayload,Clipchamp.Services.VideoUpscaling.ScalerGeneration,Clipchamp.Messages.UpscaleMetrics,Clipchamp.Services.VideoUpscaling.OperationScaleRetryLedger,System.Boolean,System.Int32,System.Threading.CancellationToken)">
             <summary>
             Some hardware encoders cannot produce particular sizes and frame rates, and say so
             either by refusing or by quietly never finishing. Neither is a reason to give the whole
             upscale up while the software encoder has not been asked, so it is asked once.
            
             The second attempt repeats the decode and the scaling as well, because frames are
             pulled by the encoder rather than held anywhere they could be handed over. It upscales
             with the same scalers the first attempt captured.
             </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.UpscalePipeline">
            <summary>
            One instance runs one attempt. What it counted stays readable afterwards so that an
            attempt can describe itself even when it was stopped part way.
            </summary>
        </member>
        <member name="P:Clipchamp.Services.VideoUpscaling.UpscalePipeline.Progress">
            <summary>
            What the attempt had done when it ended. Kept rather than only returned, because an
            attempt that was stopped part way hands its caller nothing to read this from.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.UpscalePipeline.StampProgress(Clipchamp.Messages.UpscaleMetrics)">
            <summary>
            What this attempt did, whether it finished or was stopped. Reported from here because a
            stopped attempt throws instead of handing back the result its numbers would arrive in.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.UpscalePipeline.WatchForAScalerThatStopped(System.Collections.Generic.IReadOnlyList{Clipchamp.Services.VideoUpscaling.VideoScalerHandle},System.Threading.CancellationToken)">
            <summary>
            Watches for a scaler call that stopped answering, which is the one failure an upscale
            cannot notice from the inside: the call cannot be cancelled and the thread inside it
            cannot be taken back. Crossing the threshold ends the upscale and costs that scaler for
            the rest of the process. Nothing is released on the way out, because the thread still
            inside the call is what holds its surfaces, and freeing what a running call is reading
            from is worse than never freeing it at all.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.UpscalePipeline.GiveUpScalers(System.Collections.Generic.IReadOnlyList{Clipchamp.Services.VideoUpscaling.VideoScalerHandle},System.Threading.Tasks.Task[])">
            <summary>
            Gives up the scaler of every worker that never stopped. A call cannot be taken back and a
            worker between calls now will be inside another shortly, so a later upscale handed that
            scaler would be the second thread inside it. Settling waits on the decode as well, so a
            worker that has finished keeps its scaler rather than paying for whatever else was late.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.UpscalePipeline.CauseOf(System.Exception,System.Exception,System.Boolean)">
             <summary>
             Which of two failures an upscale should be told about: the one that reached the caller,
             or the first one a stage recorded on its way out.
            
             A stage that fails stops every other stage, so a cancellation reaching the caller is
             usually the consequence rather than the reason, and the recorded fault is the reason.
             A failure that already says what it was keeps saying it: the stages it just cancelled
             would otherwise replace it with the cancelling of everything else, and a reason nothing
             can act on is how a recoverable failure stops being recoverable. Conversely, an encoder
             error caused by another stage stopping its input does not replace that stage's fault.
             </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.UpscalePipeline.UnsettledFailure(System.Exception)">
             <summary>
             What an attempt whose stages would not settle failed with. Always a reason no second
             attempt is offered for, whatever surfaced first: the scalers this one is still inside
             are the ones the attempt after it would be handed.
            
             A scaler this attempt already gave up is why nothing settled, so the reason that says
             a scaler stopped answering is kept rather than replaced by the symptom it produced.
             Anything else that would not settle has no reason of its own yet, and one that says so
             is better than reporting whatever the cancelling of everything else threw.
             </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.UpscalePipeline.Upscale(Clipchamp.Services.VideoUpscaling.VideoScalerHandle,Windows.Graphics.Imaging.SoftwareBitmap,Clipchamp.Services.VideoUpscaling.UpscalePipeline.ScalerSurfaces,Windows.Media.VideoFrame,Clipchamp.Services.VideoUpscaling.FrameBufferPool,Clipchamp.Services.VideoUpscaling.OperationScaleRetryLedger,System.Threading.CancellationToken)">
             <summary>
             Asks one scaler for one frame, and asks again while it is willing to pay to.
            
             Which failure the platform names is not read, so a status this build has never heard
             of is tried again rather than treated as hopeless. A scaler that answers anything but
             success for its whole allowance, with fresh surfaces between each answer, is given up:
             handing it to the next upscale would only lose that one too.
             </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.UpscalePipeline.ScalerSurfaces">
            <summary>
            The pair of surfaces one worker scales through. Renewing destroys before it creates, so
            a surface a failed call left in an unknown state is gone before its replacement exists
            and can never be handed to another frame.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.UpscaleWorkspace">
            <summary>
            A native-only identifier leads every name, so the web app cannot predict a path before it is
            created. Disposing takes all the files rather than the one a failure stopped at.
            </summary>
        </member>
        <member name="F:Clipchamp.Services.VideoUpscaling.UpscaleWorkspace.MaximumAttempts">
            <summary>
            Kept here because the workspace is what has to clear up after every attempt, so the
            limit and the files that limit brings into being cannot drift apart.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.UpscaleWorkspace.VideoOnlyPath(System.Int32)">
            <summary>
            Each attempt writes somewhere of its own, so an attempt that failed cannot be mistaken
            for the result and a straggler still holding its file cannot spoil the one that follows.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.VideoEncoder">
            <summary>
            The encoder pulls: it asks for a sample whenever it is ready for one, which is what keeps
            the whole pipeline from running further ahead than the slowest stage.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoEncoder.CanRetryInSoftware(Clipchamp.Exceptions.UpscaleFailureReason)">
            <summary>
            Which failures a second attempt in software could get past. Everything the encoder was
            not responsible for is left alone: encoding it again the slow way would spend a second
            pass over the video to arrive at the same answer.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoEncoder.Encode(System.Collections.Generic.IEnumerable{System.Byte[]},System.String,System.Threading.CancellationToken)">
            <summary>
            <paramref name="frames"/> is walked by whichever thread the encoder asks on, one frame
            at a time, so it must be a sequence that blocks until the next frame is ready rather
            than one that ends early.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoEncoder.Close">
            <summary>
            Ends this attempt's interest in what it lent. A call already on its way in can still
            lend after this, which costs nothing: the loans, the buffers and the encoder all belong
            to the attempt that is ending, so whatever arrives late is dropped along with them.
            </summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.VideoScalerHandle">
            <summary>
            One worker owns one handle for the length of an upscale, so the serial lane each scaler
            requires follows from ownership instead of from a lock.
            </summary>
        </member>
        <member name="P:Clipchamp.Services.VideoUpscaling.VideoScalerHandle.ReuseEligible">
            <summary>False once this scaler has been given up, which cannot be undone.</summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoScalerHandle.InsideCallFor">
            <summary>
            How long this scaler has been inside the one call it cannot be interrupted in, or zero
            between calls. A call that never returns never clears it, which is the only sign there
            is that a scaler stopped answering. Written by the worker that owns this handle and
            read by whoever is watching it, so both go through Volatile: without that the watcher
            could keep reading a stamp from before the call it is trying to time.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoScalerHandle.Quarantine">
            <summary>
            Gives this scaler up for the rest of the process; a call still inside it is left to run,
            because there is no way to ask it to stop.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoScalerHandle.Scale(Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface,Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface)">
            <summary>
            Returns the platform's own status, which the caller carries into the failure it reports.
            </summary>
        </member>
        <member name="E:Clipchamp.Services.VideoUpscaling.VideoScalerPlatform.ReadyStateChanged">
            <summary>
            Raised when preparing left the device readier than it was found. Only the one change
            this type makes is announced: readiness can also fall back on its own, and nothing here
            is watching for that.
            </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoScalerPlatform.EnsureReady(System.IProgress{System.Double},System.Threading.CancellationToken)">
             <summary>
             Prepares the scaler and answers with what it found before doing so. A caller cannot ask
             afterwards, because by then everything reports ready and there is nothing left to say
             whether a model had to be downloaded and installed first.
            
             Progress is reported as a fraction from 0 to 1.
             </summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoScalerPool.Initialize(System.Threading.CancellationToken,System.Action{Clipchamp.Messages.UpscaleStage,System.Nullable{System.Double}},System.Action{Clipchamp.Messages.VideoScalerInitializationMetrics})">
            <remarks>
            The cost callback is told what preparing cost, once, when an attempt finishes either
            way. It reaches whoever is still waiting at that point, which need not be the caller
            that started it. A caller handed a pool that is already standing hears nothing, because
            it did not pay for one.
            </remarks>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoScalerPool.MovesForwards(System.ValueTuple{Clipchamp.Messages.UpscaleStage,System.Nullable{System.Double}},System.ValueTuple{Clipchamp.Messages.UpscaleStage,System.Nullable{System.Double}})">
            <summary>An unreported progress counts as zero, so it never overtakes a measured one.</summary>
        </member>
        <member name="T:Clipchamp.Services.VideoUpscaling.VideoScalerPool.Preparation">
            <summary>
            What the two stages that can install something cost, and what the scaler reported
            before this attempt touched it. Kept together because a duration on its own cannot tell
            an upscale that waited for a model to arrive from one that found it already there.
            </summary>
        </member>
        <member name="F:Clipchamp.Services.VideoUpscaling.VideoUpscalingService.Request.StoppedMs">
            <summary>When stopping was first asked for, or -1 while nothing has asked.</summary>
        </member>
        <member name="M:Clipchamp.Services.VideoUpscaling.VideoUpscalingService.Request.TryTerminate">
            <summary>
            True for the first ending only, so success, failure and cancellation cannot each
            announce one for the same upscale.
            </summary>
        </member>
        <member name="P:Clipchamp.Services.WindowService.DispatcherQueue">
            <summary>
            Caching DispatcherQueue when Window is set to workaround a bug in Window::get_DispatcherQueueImpl which causes dangling pointer to DispatcherQueue when app is closing.
            See https://microsoft.visualstudio.com/DefaultCollection/OS/_workitems/edit/54449040/
            </summary>
        </member>
        <member name="T:Clipchamp.Services.WindowsMachineLearning.WindowsMLExecutionProviderRuntime">
            <summary>
            Registration is a per-process download shared by every Windows AI feature, so it is owned
            here rather than by whichever feature happens to need it first. Concurrent callers share one
            preparation, and a failure leaves it unregistered so the next caller retries.
            </summary>
        </member>
        <member name="T:Clipchamp.ViewModels.MainViewModel">
            <inheritdoc/>
        </member>
        <member name="P:Clipchamp.ViewModels.MainViewModel.Width">
            <inheritdoc cref="F:Clipchamp.ViewModels.MainViewModel.width"/>
        </member>
        <member name="P:Clipchamp.ViewModels.MainViewModel.Height">
            <inheritdoc cref="F:Clipchamp.ViewModels.MainViewModel.height"/>
        </member>
        <member name="P:Clipchamp.ViewModels.NavigatableViewModel.Interactable">
            <summary>
            A flag to indicate whether the viewmodel is interactable (or not a loading screen)
            DO NOT OVERRIDE/MUTATE THIS FLAG!!!
            This should only be read and written by the parent viewmodel (e.g., RouterViewModel),
            unless the interactable state can only be determined during Initialize (e.g., SignInViewModel).
            </summary>
        </member>
        <member name="T:Clipchamp.ViewModels.RouterViewModel">
            <inheritdoc/>
        </member>
        <member name="P:Clipchamp.ViewModels.RouterViewModel.PageVisibility">
            <inheritdoc cref="F:Clipchamp.ViewModels.RouterViewModel.pageVisibility"/>
        </member>
        <member name="P:Clipchamp.ViewModels.RouterViewModel.IsTitleBarVisible">
            <inheritdoc cref="F:Clipchamp.ViewModels.RouterViewModel.isTitleBarVisible"/>
        </member>
        <member name="T:Clipchamp.ViewModels.SignInViewModel">
            <inheritdoc/>
        </member>
        <member name="P:Clipchamp.ViewModels.SignInViewModel.IsSigningIn">
            <inheritdoc cref="F:Clipchamp.ViewModels.SignInViewModel.isSigningIn"/>
        </member>
        <member name="P:Clipchamp.ViewModels.SignInViewModel.IsErrorMessageVisible">
            <inheritdoc cref="F:Clipchamp.ViewModels.SignInViewModel.isErrorMessageVisible"/>
        </member>
        <member name="P:Clipchamp.ViewModels.SignInViewModel.ErrorLabelTitle">
            <inheritdoc cref="F:Clipchamp.ViewModels.SignInViewModel.errorLabelTitle"/>
        </member>
        <member name="P:Clipchamp.ViewModels.SignInViewModel.ErrorLabelDescription">
            <inheritdoc cref="F:Clipchamp.ViewModels.SignInViewModel.errorLabelDescription"/>
        </member>
        <member name="P:Clipchamp.ViewModels.SignInViewModel.DetailsEnabled">
            <inheritdoc cref="F:Clipchamp.ViewModels.SignInViewModel.detailsEnabled"/>
        </member>
        <member name="P:Clipchamp.ViewModels.SignInViewModel.DetailsExpanded">
            <inheritdoc cref="F:Clipchamp.ViewModels.SignInViewModel.detailsExpanded"/>
        </member>
        <member name="T:Clipchamp.ViewModels.ViewModel">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="F:Clipchamp.ViewModels.ViewModel.AllRouteTypes">
            <summary>
            Auto-generated
            </summary>
        </member>
        <member name="T:Clipchamp.Views.App">
            <summary>
            Provides application-specific behavior to supplement the default Application class.
            </summary>
        </member>
        <member name="M:Clipchamp.Views.App.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.App.GetXamlType(System.Type)">
            <summary>
            GetXamlType(Type)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.App.GetXamlType(System.String)">
            <summary>
            GetXamlType(String)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.App.GetXmlnsDefinitions">
            <summary>
            GetXmlnsDefinitions()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppInitDescriptionView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppInitDescriptionView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppInitDescriptionView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppInitView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppInitView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppInitView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateRetryExhaustedView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateRetryExhaustedView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateRetryExhaustedView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateStepView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateStepView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateStepView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.AppUpdateView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="T:Clipchamp.Views.Controls.HyperlinkableTextBlock">
            <summary>
            A TextBlock that can display hyperlinks in its content.
            Use the Markdown-like syntax to define hyperlinks,e.g.: "Click [here](http://www.bing.com) to search on Bing".
            Only links are supported, and the string in () must be a valid URL.
            </summary>
        </member>
        <member name="T:Clipchamp.Views.DevTool">
            <summary>
            An empty window that can be used on its own or navigated to within a Frame.
            </summary>
        </member>
        <member name="M:Clipchamp.Views.DevTool.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.DevTool.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.DevTool.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.DevToolContent.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.DevToolContent.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.DevToolContent.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MainView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MainView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MainView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="T:Clipchamp.Views.MainWindow">
            <summary>
            An empty window that can be used on its own or navigated to within a Frame.
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MainWindow.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MainWindow.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MainWindow.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MessageView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MessageView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.MessageView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Clipchamp.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Clipchamp.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Clipchamp.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Close.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Close.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Close.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Error.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Error.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Error.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Info.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Info.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Info.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Microsoft.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Microsoft.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Resources.Icons.Microsoft.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Router.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Router.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Router.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.SignInView.InitializeComponent">
            <summary>
            InitializeComponent()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.SignInView.Connect(System.Int32,System.Object)">
            <summary>
            Connect()
            </summary>
        </member>
        <member name="M:Clipchamp.Views.SignInView.GetBindingConnector(System.Int32,System.Object)">
            <summary>
            GetBindingConnector(int connectionId, object target)
            </summary>
        </member>
        <member name="M:Clipchamp.Views.Utils.AutoDataTemplateSelector.FindResourceKeyUpTree(System.String,Microsoft.UI.Xaml.DependencyObject)">
            <summary>
            Tries to find the resources up the tree
            </summary>
            <param name="resourceKey">Key to find</param>
            <param name="container">Current container</param>
            <returns></returns>
        </member>
        <member name="T:Clipchamp.Views.XamlGeneratedProgram">
            <summary>
            Program class
            </summary>
        </member>
        <member name="T:Clipchamp.Clipchamp_XamlTypeInfo.XamlMetaDataProvider">
            <summary>
            Main class for providing metadata for the app or library
            </summary>
        </member>
        <member name="M:Clipchamp.Clipchamp_XamlTypeInfo.XamlMetaDataProvider.GetXamlType(System.Type)">
            <summary>
            GetXamlType(Type)
            </summary>
        </member>
        <member name="M:Clipchamp.Clipchamp_XamlTypeInfo.XamlMetaDataProvider.GetXamlType(System.String)">
            <summary>
            GetXamlType(String)
            </summary>
        </member>
        <member name="M:Clipchamp.Clipchamp_XamlTypeInfo.XamlMetaDataProvider.GetXmlnsDefinitions">
            <summary>
            GetXmlnsDefinitions()
            </summary>
        </member>
        <member name="T:Microsoft.Diagnostics.Telemetry.TelemetryEventSource">
            <summary>
            <para>
            An EventSource with extra methods and constants commonly used in Microsoft's
            TraceLogging-based ETW. This class inherits from EventSource, and is exactly
            the same as EventSource except that it always enables
            EtwSelfDescribingEventFormat and never uses traits. It also provides several
            constants and helpers commonly used by Microsoft code.
            </para>
            <para>
            Different versions of this class use different provider traits. The provider
            traits in this class are empty. As a result, providers using this class will
            not join any ETW Provider Groups and will not be given any special treatment
            by group-sensitive ETW listeners.
            </para>
            <para>
            When including this class in your project, you may define the following
            conditional-compilation symbols to adjust the default behaviors:
            </para>
            <para>
            TELEMETRYEVENTSOURCE_USE_NUGET - use Microsoft.Diagnostics.Tracing instead
            of System.Diagnostics.Tracing.
            </para>
            <para>
            TELEMETRYEVENTSOURCE_PUBLIC - define TelemetryEventSource as public instead
            of internal.
            </para>
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.Reserved44Keyword">
            <summary>
            Keyword 0x0000100000000000 is reserved for future definition. Do
            not use keyword 0x0000100000000000 in Microsoft-style ETW.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.TelemetryKeyword">
            <summary>
            Add TelemetryKeyword to eventSourceOptions.Keywords to indicate that
            an event is for general-purpose telemetry.
            This keyword should not be combined with MeasuresKeyword or
            CriticalDataKeyword.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.MeasuresKeyword">
            <summary>
            Add MeasuresKeyword to eventSourceOptions.Keywords to indicate that
            an event is for understanding measures and reporting scenarios.
            This keyword should not be combined with TelemetryKeyword or
            CriticalDataKeyword.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.CriticalDataKeyword">
            <summary>
            Add CriticalDataKeyword to eventSourceOptions.Keywords to indicate that
            an event powers user experiences or is critical to business intelligence.
            This keyword should not be combined with TelemetryKeyword or
            MeasuresKeyword.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.CostDeferredLatency">
            <summary>
            Add CostDeferredLatency to eventSourceOptions.Tags to indicate that an event
            should try to upload over free networks for a period of time before resorting
            to upload over costed networks.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.CoreData">
            <summary>
            Add CoreData to eventSourceOptions.Tags to indicate that an event
            contains high priority "core data".
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.InjectXToken">
            <summary>
            Add InjectXToken to eventSourceOptions.Tags to indicate that an XBOX
            identity token should be injected into the event before the event is
            uploaded.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.RealtimeLatency">
            <summary>
            Add RealtimeLatency to eventSourceOptions.Tags to indicate that an event
            should be transmitted in real time (via any available connection).
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.NormalLatency">
            <summary>
            Add NormalLatency to eventSourceOptions.Tags to indicate that an event
            should be transmitted via the preferred connection based on device policy.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.CriticalPersistence">
            <summary>
            Add CriticalPersistence to eventSourceOptions.Tags to indicate that an
            event should be deleted last when low on spool space.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.NormalPersistence">
            <summary>
            Add NormalPersistence to eventSourceOptions.Tags to indicate that an event
            should be deleted first when low on spool space.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.DropPii">
            <summary>
            Add DropPii to eventSourceOptions.Tags to indicate that an event contains
            PII and should be anonymized by the telemetry client. If this tag is
            present, PartA fields that might allow identification or cross-event
            correlation will be removed from the event.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.HashPii">
            <summary>
            Add HashPii to eventSourceOptions.Tags to indicate that an event contains
            PII and should be anonymized by the telemetry client. If this tag is
            present, PartA fields that might allow identification or cross-event
            correlation will be hashed (obfuscated).
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.MarkPii">
            <summary>
            Add MarkPii to eventSourceOptions.Tags to indicate that an event contains
            PII but may be uploaded as-is. If this tag is present, the event will be
            marked so that it will only appear on the private stream.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.DropPiiField">
            <summary>
            Add DropPiiField to eventFieldAttribute.Tags to indicate that a field
            contains PII and should be dropped by the telemetry client.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.HashPiiField">
            <summary>
            Add HashPiiField to eventFieldAttribute.Tags to indicate that a field
            contains PII and should be hashed (obfuscated) prior to uploading.
            </summary>
        </member>
        <member name="M:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.#ctor(System.String)">
            <summary>
            Constructs a new instance of the TelemetryEventSource class with the
            specified name. Sets the EtwSelfDescribingEventFormat option.
            </summary>
            <param name="eventSourceName">The name of the event source.</param>
        </member>
        <member name="M:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.#ctor">
            <summary>
            For use by derived classes that set the eventSourceName via EventSourceAttribute.
            Sets the EtwSelfDescribingEventFormat option.
            </summary>
        </member>
        <member name="M:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.#ctor(System.String,Microsoft.Diagnostics.Telemetry.TelemetryGroup)">
            <summary>
            Constructs a new instance of the TelemetryEventSource class with the
            specified name. Sets the EtwSelfDescribingEventFormat option.
            </summary>
            <param name="eventSourceName">The name of the event source.</param>
            <param name="telemetryGroup">The parameter is not used.</param>
        </member>
        <member name="M:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.TelemetryOptions">
            <summary>
            Returns an instance of EventSourceOptions with the TelemetryKeyword set.
            </summary>
            <returns>Returns an instance of EventSourceOptions with the TelemetryKeyword set.</returns>
        </member>
        <member name="M:Microsoft.Diagnostics.Telemetry.TelemetryEventSource.MeasuresOptions">
            <summary>
            Returns an instance of EventSourceOptions with the MeasuresKeyword set.
            </summary>
            <returns>Returns an instance of EventSourceOptions with the MeasuresKeyword set.</returns>
        </member>
        <member name="T:Microsoft.Diagnostics.Telemetry.PrivTags">
            <summary>
            <para>
            The PrivTags class defines privacy tags that can be used to specify the privacy
            category of an event. Add a privacy tag as a field with name "PartA_PrivTags".
            As a shortcut, you can use _1 as the field name, which will automatically be
            expanded to "PartA_PrivTags" at runtime.
            </para>
            <para>
            Multiple tags can be OR'ed together if necessary (rarely needed).
            </para>
            </summary>
            <example>
            Typical usage:
            <code>
            es.Write("UsageEvent", new
            {
                _1 = PrivTags.ProductAndServiceUsage,
                field1 = fieldValue1,
                field2 = fieldValue2
            });
            </code>
            </example>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.PrivTags.BrowsingHistory">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.PrivTags.DeviceConnectivityAndConfiguration">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.PrivTags.InkingTypingAndSpeechUtterance">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.PrivTags.ProductAndServicePerformance">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.PrivTags.ProductAndServiceUsage">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.PrivTags.SoftwareSetupAndInventory">
            <nodoc/>
        </member>
        <member name="T:Microsoft.Diagnostics.Telemetry.TelemetryGroup">
            <summary>
            Pass a TelemetryGroup value to the constructor of TelemetryEventSource
            to control which telemetry group should be joined.
            Note: has no effect in this version of TelemetryEventSource.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryGroup.MicrosoftTelemetry">
            <summary>
            The default group. Join this group to log normal, non-critical, non-coredata
            events.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.TelemetryGroup.WindowsCoreTelemetry">
            <summary>
            Join this group to log CriticalData, CoreData, or other specially approved
            events.
            </summary>
        </member>
        <member name="T:Microsoft.Diagnostics.Telemetry.Internal.PartA_PrivTags">
            <summary>
            The complete list of privacy tags supported for events.
            Multiple tags can be OR'ed together if an event belongs in multiple
            categories.
            Note that the PartA_PrivTags enum should not be used directly.
            Instead, use values from the PrivTags class.
            </summary>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.Internal.PartA_PrivTags.None">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.Internal.PartA_PrivTags.BrowsingHistory">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.Internal.PartA_PrivTags.DeviceConnectivityAndConfiguration">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.Internal.PartA_PrivTags.InkingTypingAndSpeechUtterance">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.Internal.PartA_PrivTags.ProductAndServicePerformance">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.Internal.PartA_PrivTags.ProductAndServiceUsage">
            <nodoc/>
        </member>
        <member name="F:Microsoft.Diagnostics.Telemetry.Internal.PartA_PrivTags.SoftwareSetupAndInventory">
            <nodoc/>
        </member>
        <member name="T:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs">
            <summary>
            A helper type providing cached, reusable <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instances
            for all properties generated with <see cref="T:CommunityToolkit.Mvvm.ComponentModel.ObservablePropertyAttribute"/>.
            </summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.Width">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "Width" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.Height">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "Height" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.PageVisibility">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "PageVisibility" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.IsTitleBarVisible">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "IsTitleBarVisible" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.IsSigningIn">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "IsSigningIn" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.IsErrorMessageVisible">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "IsErrorMessageVisible" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.ErrorLabelTitle">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "ErrorLabelTitle" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.ErrorLabelDescription">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "ErrorLabelDescription" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.DetailsEnabled">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "DetailsEnabled" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.DetailsExpanded">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangingEventArgs"/> instance for all "DetailsExpanded" generated properties.</summary>
        </member>
        <member name="T:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs">
            <summary>
            A helper type providing cached, reusable <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instances
            for all properties generated with <see cref="T:CommunityToolkit.Mvvm.ComponentModel.ObservablePropertyAttribute"/>.
            </summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.Width">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "Width" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.Height">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "Height" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.PageVisibility">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "PageVisibility" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.IsTitleBarVisible">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "IsTitleBarVisible" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.IsSigningIn">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "IsSigningIn" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.SignInButtonText">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "SignInButtonText" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.IsErrorMessageVisible">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "IsErrorMessageVisible" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.ErrorLabelTitle">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "ErrorLabelTitle" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.ErrorLabelDescription">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "ErrorLabelDescription" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.DetailsEnabled">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "DetailsEnabled" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.DetailsLinkVisible">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "DetailsLinkVisible" generated properties.</summary>
        </member>
        <member name="F:CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.DetailsExpanded">
            <summary>The cached <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> instance for all "DetailsExpanded" generated properties.</summary>
        </member>
    </members>
</doc>
