blob: 28f05de012fbec8b4149301b80ff282c41a97ba1 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.media;
using zx;
[Discoverable, ForDeprecatedCBindings]
protocol ProfileProvider {
/// Register a thread as a media thread. This notifies the media subsystem
/// that this thread should have an elevated scheduling profile applied to
/// it in order to meet audio or video deadlines.
///
/// `name` is the name of the component requesting the profile.
/// `period` is the suggested interval to be scheduled at.
///
/// Returns the period and capacity that was applied, if a deadline profile
/// was selected. Returns 0 if no deadline profile was selected.
RegisterHandler(zx.handle:THREAD thread_handle, string:64 name, zx.duration period)
-> (zx.duration period, zx.duration capacity);
/// Register a thread as a media thread. This notifies the media subsystem that this thread
/// should have an elevated scheduling profile applied to it in order to meet audio or video
/// deadlines.
///
/// `name` is the name of the component requesting the profile. `period` is the suggested
/// interval to be scheduled at. If `period` is 0, then the server will select an appropriate
/// interval in an implemenation dependent way. `capacity` is the suggested CPU capacity to
/// reserve for `thread_handle`. For example, with a 0.1 capacity, 10% of a core will be
/// reserved for the thread. For heterogeneous systems, this capacity should be planned against
/// the highest performance processor(s) in the system.
///
/// Returns the period and capacity that was applied, if a deadline profile was selected.
/// Returns 0 if no deadline profile was selected.
[Transitional]
RegisterHandlerWithCapacity(zx.handle:THREAD thread_handle, string:64 name, zx.duration period, float32 capacity)
-> (zx.duration period, zx.duration capacity);
};