// 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.hardware.mediacodec;

using zx;

/// This protocol is used by a client to run the amlogic video decoder tests.
@for_deprecated_c_bindings
protocol Tester {
    /// Takes a directory handle from the client and installs that as /tmp in the driver so that debugging files can be written there.
    SetOutputDirectoryHandle(resource struct {
        handle zx.handle:CHANNEL;
    });

    /// Runs the full suite of tests. Test output will go to klog.
    RunTests() -> (struct {
        result zx.status;
    });
};
