コード例 #1
0
ファイル: Dispatcher.cs プロジェクト: davidfowl/ServerStack
 public Dispatcher(ILogger <Dispatcher <T> > logger,
                   IFrameDecoder <T> decoder,
                   IOutputProducerFactory producerFactory)
 {
     _logger          = logger;
     _decoder         = decoder;
     _producerFactory = producerFactory;
 }
コード例 #2
0
ファイル: FrameBuilder.cs プロジェクト: RabbitTeam/Rpc
        public FrameBuilder(IFrameEncoder encoder, IFrameDecoder decoder)
        {
            if (encoder == null)
                throw new ArgumentNullException("encoder");
            if (decoder == null)
                throw new ArgumentNullException("decoder");

            this.Encoder = encoder;
            this.Decoder = decoder;
        }
コード例 #3
0
ファイル: FrameBuilder.cs プロジェクト: popotans/Rpc
        public FrameBuilder(IFrameEncoder encoder, IFrameDecoder decoder)
        {
            if (encoder == null)
            {
                throw new ArgumentNullException("encoder");
            }
            if (decoder == null)
            {
                throw new ArgumentNullException("decoder");
            }

            this.Encoder = encoder;
            this.Decoder = decoder;
        }
コード例 #4
0
        protected IFrameDecoder retrieveDecoder(Header header, Bitstream stream, int layer)
        {
            IFrameDecoder decoder = null;

            // REVIEW: allow channel output selection type
            // (LEFT, RIGHT, BOTH, DOWNMIX)
            switch (layer)
            {
            case 3:
                if (l3decoder == null)
                {
                    l3decoder = new LayerIIIDecoder(stream,
                                                    header, filter1, filter2,
                                                    output, OutputChannels.Both);
                }

                decoder = l3decoder;
                break;

            case 2:
                if (l2decoder == null)
                {
                    l2decoder = new LayerIIDecoder();
                    l2decoder.create(stream,
                                     header, filter1, filter2,
                                     output, OutputChannels.Both);
                }
                decoder = l2decoder;
                break;

            case 1:
                if (l1decoder == null)
                {
                    l1decoder = new LayerIDecoder();
                    l1decoder.create(stream,
                                     header, filter1, filter2,
                                     output, OutputChannels.Both);
                }
                decoder = l1decoder;
                break;
            }

            if (decoder == null)
            {
                throw new DecoderException(Errors.UNSUPPORTED_LAYER);
            }

            return(decoder);
        }
コード例 #5
0
ファイル: Decoder.cs プロジェクト: swak/UltimaXNA
        protected internal virtual IFrameDecoder RetrieveDecoder(Header header, Bitstream stream, int layer)
        {
            IFrameDecoder decoder = null;

            // REVIEW: allow channel output selection type
            // (LEFT, RIGHT, BOTH, DOWNMIX)
            switch (layer)
            {
            case 3:
                if (m_L3Decoder == null)
                {
                    m_L3Decoder = new LayerIIIDecoder(stream, header, m_LeftChannelFilter, m_RightChannelFilter, m_Output,
                                                      (int)OutputChannelsEnum.BOTH_CHANNELS);
                }

                decoder = m_L3Decoder;
                break;

            case 2:
                if (m_L2Decoder == null)
                {
                    m_L2Decoder = new LayerIIDecoder();
                    m_L2Decoder.Create(stream, header, m_LeftChannelFilter, m_RightChannelFilter, m_Output,
                                       (int)OutputChannelsEnum.BOTH_CHANNELS);
                }
                decoder = m_L2Decoder;
                break;

            case 1:
                if (m_L1Decoder == null)
                {
                    m_L1Decoder = new LayerIDecoder();
                    m_L1Decoder.Create(stream, header, m_LeftChannelFilter, m_RightChannelFilter, m_Output,
                                       (int)OutputChannelsEnum.BOTH_CHANNELS);
                }
                decoder = m_L1Decoder;
                break;
            }

            if (decoder == null)
            {
                throw NewDecoderException(DecoderErrors.UNSUPPORTED_LAYER, null);
            }

            return(decoder);
        }
コード例 #6
0
ファイル: Decoder.cs プロジェクト: swak/UltimaXNA
        /// <summary>
        ///     Decodes one frame from an MPEG audio bitstream.
        /// </summary>
        /// <param name="header">
        ///     Header describing the frame to decode.
        /// </param>
        /// <param name="stream">
        ///     Bistream that provides the bits for the body of the frame.
        /// </param>
        /// <returns>
        ///     A SampleBuffer containing the decoded samples.
        /// </returns>
        public virtual ABuffer DecodeFrame(Header header, Bitstream stream)
        {
            if (!m_IsInitialized)
            {
                Initialize(header);
            }

            int layer = header.layer();

            m_Output.ClearBuffer();

            IFrameDecoder decoder = RetrieveDecoder(header, stream, layer);

            decoder.DecodeFrame();

            m_Output.WriteBuffer(1);

            return(m_Output);
        }
コード例 #7
0
        /**
         * Decodes one frame from an MPEG audio bitstream.
         *
         * @param header		The header describing the frame to decode.
         * @param bitstream		The bistream that provides the bits for te body of the frame.
         *
         * @return A SampleBuffer containing the decoded samples.
         */
        public Obuffer decodeFrame(Header header, Bitstream stream)
        {
            if (!initialized)
            {
                initialize(header);
            }

            int layer = header.layer();

            output.clear_buffer();

            IFrameDecoder decoder = retrieveDecoder(header, stream, layer);

            decoder.decodeFrame();

            output.write_buffer(1);

            return(output);
        }
コード例 #8
0
 /// <summary>
 /// Construct a new <see cref="FrameBuilder"></see> class's instance.
 /// </summary>
 /// <param name="encoder">Frame encoder.</param>
 /// <param name="decoder">Frame decoder.</param>
 /// <exception cref="ArgumentNullException"></exception>
 public FrameBuilder(IFrameEncoder encoder, IFrameDecoder decoder)
 {
     this.Encoder = encoder ?? throw new ArgumentNullException($"{nameof(encoder)}");
     this.Decoder = decoder ?? throw new ArgumentNullException($"{nameof(decoder)}");
 }