chromium/third_party/blink/renderer/modules/webcodecs/gpu_factories_retriever.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBCODECS_GPU_FACTORIES_RETRIEVER_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBCODECS_GPU_FACTORIES_RETRIEVER_H_

#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"

namespace media {
class GpuVideoAcceleratorFactories;
}  // namespace media

namespace blink {

OutputCB;

// Retrieves an instance of GpuVideoAcceleratorFactories ready
// for accelerated video encoding.
// Specifically
//   1. It gets GPU factories from the main thread when called from a worker
//   2. Makes sure that GPU factories already know about supported encoding
//      profiles.
void RetrieveGpuFactoriesWithKnownEncoderSupport(OutputCB callback);

// Retrieves an instance of GpuVideoAcceleratorFactories ready
// for accelerated video decoding.
// Specifically
//   1. It gets GPU factories from the main thread when called from a worker
//   2. Makes sure that GPU factories already know about supported decoding
//      profiles.
void RetrieveGpuFactoriesWithKnownDecoderSupport(OutputCB callback);

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBCODECS_GPU_FACTORIES_RETRIEVER_H_