// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_FILTERS_PIPELINE_CONTROLLER_H_ #define MEDIA_FILTERS_PIPELINE_CONTROLLER_H_ #include <optional> #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" #include "media/base/media_export.h" #include "media/base/pipeline.h" namespace media { class CdmContext; class Demuxer; // PipelineController wraps a Pipeline to expose the one-at-a-time operations // (Seek(), Suspend(), and Resume()) with a simpler API. Internally it tracks // pending operations and dispatches them when possible. Duplicate requests // (such as seeking twice to the same time) may be elided. // // TODO(sandersd/tguilbert): // - Expose an operation that replaces the Renderer (via Suspend/Resume). // - Expose an operation that replaces the Demuxer (via Start/Stop). This will // also implicitly replace the Renderer. // - Block invalid calls after an error occurs. class MEDIA_EXPORT PipelineController { … }; } // namespace media #endif // MEDIA_FILTERS_PIPELINE_CONTROLLER_H_