Esempio n. 1
0
        private Packet DecryptPacketOnIemeThread(EncryptedPacket packet, CancellationToken token)
        {
            // Do padding only for Widevine with keys shorter then 16 bytes
            // Shorter keys need to be zero padded, not PCKS#7
            if (DrmType == EmeUtils.DrmType.Widevine && packet.Iv.Length < 16)
            {
                packet.Iv = PadIv(packet.Iv);
            }

            var pHandleArray = new HandleSize[1];
            var ret          = CreateParamsAndDecryptData(packet, ref pHandleArray, token);

            if (ret == eCDMReturnType.E_SUCCESS)
            {
                return(new DecryptedEMEPacket(thread)
                {
                    Dts = packet.Dts,
                    Pts = packet.Pts,
                    StreamType = packet.StreamType,
                    IsKeyFrame = packet.IsKeyFrame,
                    Duration = packet.Duration,
                    HandleSize = pHandleArray[0]
                });
            }

            Logger.Error($"Decryption failed: {packet.StreamType} - {ret}");
            throw new DrmException($"Decryption failed: {packet.StreamType} - {ret}");
        }
Esempio n. 2
0
 public void CleanHandle()
 {
     HandleSize = new HandleSize();
 }