summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLori Anderson <lori@rkymtnhi.com>2013-11-25 15:33:08 -0700
committerLori Anderson <lori@rkymtnhi.com>2013-11-25 15:33:08 -0700
commit9b3c83377fcbb1b30b00c2e39873df7f9ec43b98 (patch)
tree3fff63000eded632ac6ffe435a9b0aa29cf11037
parent420d79a608a62294cb4799254cb87e30f1c65d23 (diff)
Changed logic so dtcpip element is setup regardless if decrypting is needed. dlnasrc will set dtcpip in "passthru-mode" for non-encrypted content. This will facilitate changing URIs with no need to link or unlink dtcpip element.
-rw-r--r--src/gstdlnasrc.c30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/gstdlnasrc.c b/src/gstdlnasrc.c
index e7b0957..b360624 100644
--- a/src/gstdlnasrc.c
+++ b/src/gstdlnasrc.c
@@ -1573,25 +1573,15 @@ dlna_src_setup_bin (GstDlnaSrc * dlna_src)
} else
GST_INFO_OBJECT (dlna_src, "Not setting URI of souphttpsrc");
- /* Setup dtcp element if necessary */
- if (dlna_src->is_encrypted) {
- GST_INFO_OBJECT (dlna_src, "Setting up dtcp");
- if (!dlna_src_setup_dtcp (dlna_src)) {
- GST_ERROR_OBJECT (dlna_src, "Problems setting up dtcp elements");
- return FALSE;
- }
- GST_INFO_OBJECT (dlna_src, "DTCP setup successful");
- } else
- GST_INFO_OBJECT (dlna_src, "No DTCP setup required");
+ /* Setup dtcp element regardless */
+ if (!dlna_src_setup_dtcp (dlna_src)) {
+ GST_ERROR_OBJECT (dlna_src, "Problems setting up dtcp elements");
+ return FALSE;
+ }
/* Create src ghost pad of dlna src so playbin will recognize element as a src */
- if (dlna_src->is_encrypted) {
- GST_DEBUG_OBJECT (dlna_src, "Getting decrypter src pad");
- pad = gst_element_get_static_pad (dlna_src->dtcp_decrypter, "src");
- } else {
- GST_DEBUG_OBJECT (dlna_src, "Getting http src pad");
- pad = gst_element_get_static_pad (dlna_src->http_src, "src");
- }
+ GST_DEBUG_OBJECT (dlna_src, "Getting decrypter src pad");
+ pad = gst_element_get_static_pad (dlna_src->dtcp_decrypter, "src");
if (!pad) {
GST_ERROR_OBJECT (dlna_src,
"Could not get pad to ghost pad for dlnasrc. Exiting.");
@@ -1650,11 +1640,13 @@ dlna_src_setup_dtcp (GstDlnaSrc * dlna_src)
return FALSE;
}
+ if (dlna_src->is_encrypted) {
g_object_set (G_OBJECT (dlna_src->dtcp_decrypter), "dtcp1host",
dlna_src->server_info->dtcp_host, NULL);
g_object_set (G_OBJECT (dlna_src->dtcp_decrypter), "dtcp1port",
dlna_src->server_info->dtcp_port, NULL);
+ }
gst_bin_add (GST_BIN (&dlna_src->bin), dlna_src->dtcp_decrypter);
@@ -1667,6 +1659,10 @@ dlna_src_setup_dtcp (GstDlnaSrc * dlna_src)
g_object_set (dlna_src->http_src, "blocksize", dlna_src->dtcp_blocksize,
NULL);
+ /* Make sure passthru mode is either disabled or enabled depending on content encryption */
+ g_object_set (dlna_src->dtcp_decrypter, "passthru-mode",
+ !dlna_src->is_encrypted, NULL);
+
return TRUE;
}