コード例 #1
0
        /// <summary>
        /// Creates a new instance of <see cref="Mp3AudioEncoderLame"/>.
        /// </summary>
        /// <param name="channelCount">Channel count.</param>
        /// <param name="sampleRate">Sample rate (in samples per second).</param>
        /// <param name="outputBitRateKbps">Output bit rate (in kilobits per second).</param>
        /// <remarks>
        /// Encoder expects audio data in 16-bit samples.
        /// Stereo data should be interleaved: left sample first, right sample second.
        /// </remarks>
        public Mp3AudioEncoderLame(int channelCount, int sampleRate, int outputBitRateKbps)
        {
            Contract.Requires(channelCount == 1 || channelCount == 2);
            Contract.Requires(sampleRate > 0);
            Contract.Requires(SupportedBitRates.Contains(outputBitRateKbps));

            if (lameFacadeType == null)
            {
                throw new InvalidOperationException("LAME DLL is not loaded. Call SetLameDllLocation first.");
            }

            lame = (ILameFacade)Activator.CreateInstance(lameFacadeType);
            lame.ChannelCount    = channelCount;
            lame.InputSampleRate = sampleRate;
            lame.OutputBitRate   = outputBitRateKbps;

            lame.PrepareEncoding();

            formatData = FillFormatData();
        }
コード例 #2
0
        /// <summary>
        /// Creates a new instance of <see cref="Mp3AudioEncoderLame"/>.
        /// </summary>
        /// <param name="channelCount">Channel count.</param>
        /// <param name="sampleRate">Sample rate (in samples per second).</param>
        /// <param name="outputBitRateKbps">Output bit rate (in kilobits per second).</param>
        /// <remarks>
        /// Encoder expects audio data in 16-bit samples.
        /// Stereo data should be interleaved: left sample first, right sample second.
        /// </remarks>
        public Mp3AudioEncoderLame(int channelCount, int sampleRate, int outputBitRateKbps)
        {
            Contract.Requires(channelCount == 1 || channelCount == 2);
            Contract.Requires(sampleRate > 0);
            Contract.Requires(SupportedBitRates.Contains(outputBitRateKbps));

            if (lameFacadeType == null)
            {
                throw new InvalidOperationException("LAME DLL is not loaded. Call SetLameDllLocation first.");
            }

            lame = (ILameFacade)Activator.CreateInstance(lameFacadeType);
            lame.ChannelCount = channelCount;
            lame.InputSampleRate = sampleRate;
            lame.OutputBitRate = outputBitRateKbps;

            lame.PrepareEncoding();

            formatData = FillFormatData();
        }
コード例 #3
0
        /// <summary>
        /// Creates a new instance of <see cref="Mp3LameAudioEncoder"/>.
        /// </summary>
        /// <param name="channelCount">Channel count.</param>
        /// <param name="sampleRate">Sample rate (in samples per second).</param>
        /// <param name="outputBitRateKbps">Output bit rate (in kilobits per second).</param>
        /// <remarks>
        /// Encoder expects audio data in 16-bit samples.
        /// Stereo data should be interleaved: left sample first, right sample second.
        /// </remarks>
        public Mp3LameAudioEncoder(int channelCount, int sampleRate, int outputBitRateKbps)
        {
            Argument.IsInRange(channelCount, 1, 2, nameof(channelCount));
            Argument.IsPositive(sampleRate, nameof(sampleRate));
            Argument.Meets(SupportedBitRates.Contains(outputBitRateKbps), nameof(outputBitRateKbps));

            lock (lameFacadeSync)
            {
                if (lameFacadeType is null)
                {
                    throw new InvalidOperationException("LAME DLL is not loaded. Call SetLameDllLocation first.");
                }

                lame = (ILameFacade)Activator.CreateInstance(lameFacadeType);
            }

            lame.ChannelCount    = channelCount;
            lame.InputSampleRate = sampleRate;
            lame.OutputBitRate   = outputBitRateKbps;

            lame.PrepareEncoding();

            formatData = FillFormatData();
        }