// Copyright 2017 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.

#ifndef SRC_CAMERA_DRIVERS_USB_VIDEO_VIDEO_UTIL_H_
#define SRC_CAMERA_DRIVERS_USB_VIDEO_VIDEO_UTIL_H_

#include <zircon/hw/usb/video.h>

#include <usb/usb.h>

__BEGIN_CDECLS

// The probe stage of the stream negotiation process.
//   usb: the device protocol.
//   vs_interface_num: the number of the interface to direct the request to.
//   proposal: the desired streaming parameters, such as which format to use.
//   out_result: the new negotiated streaming parameters returned from the
//   device.
zx_status_t usb_video_negotiate_probe(usb_protocol_t* usb, uint8_t vs_interface_num,
                                      usb_video_vc_probe_and_commit_controls* proposal,
                                      usb_video_vc_probe_and_commit_controls* out_result);

// The commit state of the stream negotiation process.
//   usb: the device protocol.
//   vs_interface_num: the number of the interface to direct the request to.
//   ctrls: used to configure the hardware, should be the result of
//          usb_video_negotiate_probe.
zx_status_t usb_video_negotiate_commit(usb_protocol_t* usb, uint8_t vs_interface_num,
                                       usb_video_vc_probe_and_commit_controls* ctrls);

__END_CDECLS

#endif  // SRC_CAMERA_DRIVERS_USB_VIDEO_VIDEO_UTIL_H_
