mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-18 14:26:43 +00:00
qtdemux: Add error if file has playready drm
This commit is contained in:
parent
18ef4f18d0
commit
318cd39c3e
1 changed files with 29 additions and 1 deletions
|
@ -2144,6 +2144,10 @@ qtdemux_parse_uuid (GstQTDemux * qtdemux, const guint8 * buffer, gint length)
|
|||
0x9C, 0x71, 0x99, 0x94,
|
||||
0x91, 0xE3, 0xAF, 0xAC
|
||||
};
|
||||
static guint8 playready_uuid[] = {
|
||||
0xd0, 0x8a, 0x4f, 0x18, 0x10, 0xf3, 0x4a, 0x82,
|
||||
0xb6, 0xc8, 0x32, 0xd8, 0xab, 0xa1, 0x83, 0xd3
|
||||
};
|
||||
guint offset;
|
||||
|
||||
/* counts as header data */
|
||||
|
@ -2167,8 +2171,27 @@ qtdemux_parse_uuid (GstQTDemux * qtdemux, const guint8 * buffer, gint length)
|
|||
|
||||
qtdemux_handle_xmp_taglist (qtdemux, taglist);
|
||||
|
||||
} else if (memcmp (buffer + offset, playready_uuid, 16) == 0) {
|
||||
int len;
|
||||
const gunichar2 *s_utf16;
|
||||
char *contents;
|
||||
|
||||
len = GST_READ_UINT16_LE (buffer + offset + 0x30);
|
||||
s_utf16 = (const gunichar2 *) (buffer + offset + 0x32);
|
||||
contents = g_utf16_to_utf8 (s_utf16, len / 2, NULL, NULL, NULL);
|
||||
GST_ERROR_OBJECT (qtdemux, "contents: %s", contents);
|
||||
|
||||
g_free (contents);
|
||||
|
||||
GST_ELEMENT_ERROR (qtdemux, STREAM, DECRYPT,
|
||||
(_("Cannot play stream because it is encrypted with PlayReady DRM.")),
|
||||
(NULL));
|
||||
} else {
|
||||
GST_DEBUG_OBJECT (qtdemux, "Ignoring unknown uuid");
|
||||
GST_DEBUG_OBJECT (qtdemux, "Ignoring unknown uuid: %08x-%08x-%08x-%08x",
|
||||
GST_READ_UINT32_LE (buffer + offset),
|
||||
GST_READ_UINT32_LE (buffer + offset + 4),
|
||||
GST_READ_UINT32_LE (buffer + offset + 8),
|
||||
GST_READ_UINT32_LE (buffer + offset + 12));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5311,6 +5334,11 @@ qtdemux_parse_node (GstQTDemux * qtdemux, GNode * node, const guint8 * buffer,
|
|||
qtdemux_parse_container (qtdemux, node, buffer + 0x34, end);
|
||||
break;
|
||||
}
|
||||
case FOURCC_uuid:
|
||||
{
|
||||
qtdemux_parse_uuid (qtdemux, buffer, end - buffer);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (!strcmp (type->name, "unknown"))
|
||||
GST_MEMDUMP ("Unknown tag", buffer + 4, end - buffer - 4);
|
||||
|
|
Loading…
Reference in a new issue