コード例 #1
0
ファイル: HcaWriter.cs プロジェクト: soneek/VGAudio
        protected override void SetupWriter(AudioData audio)
        {
            var encodingConfig = new CriHcaParameters
            {
                Progress     = Configuration.Progress,
                Bitrate      = Configuration.Bitrate,
                LimitBitrate = Configuration.LimitBitrate
            };

            if (Configuration.Quality != CriHcaQuality.NotSet)
            {
                encodingConfig.Quality = Configuration.Quality;
            }

            var hcaFormat = audio.GetFormat <CriHcaFormat>(encodingConfig);

            Hca       = hcaFormat.Hca;
            AudioData = hcaFormat.AudioData;

            if (Configuration.EncryptionKey != null)
            {
                CriHcaEncryption.Crypt(Hca, AudioData, Configuration.EncryptionKey, false);

                Hca.EncryptionType = Configuration.EncryptionKey.KeyType;
            }
        }
コード例 #2
0
        protected override IAudioFormat ToAudioStream(HcaStructure structure)
        {
            if (structure.EncryptionKey != null)
            {
                CriHcaEncryption.Decrypt(structure.Hca, structure.AudioData, structure.EncryptionKey);
            }

            return(new CriHcaFormatBuilder(structure.AudioData, structure.Hca).Build());
        }
コード例 #3
0
        private static CriHcaKey FindKey(HcaStructure structure)
        {
            switch (structure.Hca.EncryptionType)
            {
            case 0:
                return(null);

            case 1:
                return(new CriHcaKey(CriHcaKey.Type.Type1));

            case 56:
                return(CriHcaEncryption.FindKey(structure.Hca, structure.AudioData) ??
                       throw new InvalidDataException("Cannot find key to decrypt HCA file."));

            default:
                return(null);
            }
        }