compositor: Enable HDCP for an output using weston.ini

This patch enables a user to opt for HDCP per output, by writing into
the output section of weston.ini configuration file. HDCP is always
enabled by default for the outputs.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
dev
Ankit Nautiyal 6 years ago
parent f74c35b1f4
commit 2844f8eaaf
  1. 16
      compositor/main.c
  2. 5
      include/libweston/libweston.h
  3. 18
      libweston/compositor.c
  4. 9
      man/weston.ini.man

@ -1232,6 +1232,18 @@ wet_output_set_transform(struct weston_output *output,
weston_output_set_transform(output, transform); weston_output_set_transform(output, transform);
} }
static void
allow_content_protection(struct weston_output *output,
struct weston_config_section *section)
{
int allow_hdcp = 1;
if (section)
weston_config_section_get_bool(section, "allow_hdcp", &allow_hdcp, 1);
weston_output_allow_protection(output, allow_hdcp);
}
static int static int
wet_configure_windowed_output_from_config(struct weston_output *output, wet_configure_windowed_output_from_config(struct weston_output *output,
struct wet_output_config *defaults) struct wet_output_config *defaults)
@ -1269,6 +1281,8 @@ wet_configure_windowed_output_from_config(struct weston_output *output,
free(mode); free(mode);
} }
allow_content_protection(output, section);
if (parsed_options->width) if (parsed_options->width)
width = parsed_options->width; width = parsed_options->width;
@ -1720,6 +1734,8 @@ drm_backend_output_configure(struct weston_output *output,
api->set_seat(output, seat); api->set_seat(output, seat);
free(seat); free(seat);
allow_content_protection(output, section);
return 0; return 0;
} }

@ -299,6 +299,7 @@ struct weston_output {
enum weston_hdcp_protection desired_protection; enum weston_hdcp_protection desired_protection;
enum weston_hdcp_protection current_protection; enum weston_hdcp_protection current_protection;
bool allow_protection;
void (*start_repaint_loop)(struct weston_output *output); void (*start_repaint_loop)(struct weston_output *output);
int (*repaint)(struct weston_output *output, int (*repaint)(struct weston_output *output,
@ -2458,6 +2459,10 @@ weston_head_from_resource(struct wl_resource *resource);
struct weston_head * struct weston_head *
weston_output_get_first_head(struct weston_output *output); weston_output_get_first_head(struct weston_output *output);
void
weston_output_allow_protection(struct weston_output *output,
bool allow_protection);
int int
weston_compositor_enable_touch_calibrator(struct weston_compositor *compositor, weston_compositor_enable_touch_calibrator(struct weston_compositor *compositor,
weston_touch_calibration_save_func save); weston_touch_calibration_save_func save);

@ -6036,6 +6036,7 @@ weston_output_init(struct weston_output *output,
wl_signal_init(&output->user_destroy_signal); wl_signal_init(&output->user_destroy_signal);
output->enabled = false; output->enabled = false;
output->desired_protection = WESTON_HDCP_DISABLE; output->desired_protection = WESTON_HDCP_DISABLE;
output->allow_protection = true;
wl_list_init(&output->head_list); wl_list_init(&output->head_list);
@ -6489,6 +6490,23 @@ weston_output_get_first_head(struct weston_output *output)
struct weston_head, output_link); struct weston_head, output_link);
} }
/** Allow/Disallow content-protection support for an output
*
* This function sets the allow_protection member for an output. Setting of
* this field will allow the compositor to attempt content-protection for this
* output, for a backend that supports the content-protection protocol.
*
* \param output The weston_output for whom the content-protection is to be
* allowed.
* \param allow_protection The bool value which is to be set.
*/
WL_EXPORT void
weston_output_allow_protection(struct weston_output *output,
bool allow_protection)
{
output->allow_protection = allow_protection;
}
static void static void
xdg_output_unlist(struct wl_resource *resource) xdg_output_unlist(struct wl_resource *resource)
{ {

@ -545,6 +545,15 @@ multiheaded environment with a single compositor for multiple output and input
configurations. The default seat is called "default" and will always be configurations. The default seat is called "default" and will always be
present. This seat can be constrained like any other. present. This seat can be constrained like any other.
.RE .RE
.TP 7
.BI "allow_hdcp=" true
Allows HDCP support for this output. If set to true, HDCP can be tried for the
content-protection, provided by the backends, on this output.
The content-protection can actually be realized, only if the hardwares (source
and sink) support HDCP, and the backend has the implementation of
content-protection protocol. By default, HDCP support is always allowed for an
output.
.RE
.SH "INPUT-METHOD SECTION" .SH "INPUT-METHOD SECTION"
.TP 7 .TP 7
.BI "path=" "@weston_libexecdir@/weston-keyboard" .BI "path=" "@weston_libexecdir@/weston-keyboard"

Loading…
Cancel
Save