#include <X11/Xlib.h>
#include <memory>
-#include <string.h>
+#include <string>
+#include <vector>
struct VADisplayWithCleanup {
~VADisplayWithCleanup();
bool can_use_zerocopy = true; // For H.264 encoding in Nageru.
int drm_fd = -1;
};
-std::unique_ptr<VADisplayWithCleanup> va_open_display(const std::string &va_display); // Can return nullptr on failure.
+
+struct ConfigRequest {
+ std::string name; // For error texts only.
+ uint32_t rt_format, fourcc;
+
+ // Output.
+ VAConfigID *config_id;
+ VAImageFormat *image_format;
+};
+std::unique_ptr<VADisplayWithCleanup> try_open_va(
+ const std::string &va_display, const std::vector<VAProfile> &desired_profiles, VAEntrypoint entrypoint,
+ const std::vector<ConfigRequest> &desired_configs, VAProfile *chosen_profile, std::string *error); // Can return nullptr on failure.
#endif // !defined(_VA_DISPLAY_H)