AcoustID.Chromaprint.CombinedBuffer.Read C# (CSharp) Метод

Read() публичный Метод

Read a number of values from the combined buffer.
public Read ( short buffer, int offset, int length ) : int
buffer short Buffer to write into.
offset int Offset to start reading.
length int Number of values to read.
Результат int
        public int Read(short[] buffer, int offset, int length)
        {
            int n = length, pos = offset + m_offset;

            if (pos < m_size[0] && pos + length > m_size[0])
            {
                // Number of shorts to be read from first buffer
                int split = m_size[0] - pos;

                // Number of shorts to be read from second buffer
                n = Math.Min(length - split, m_size[1]);

                // Copy from both buffers
                Array.Copy(m_buffer[0], pos, buffer, 0, split);
                Array.Copy(m_buffer[1], 0, buffer, split, n);

                // Correct total length
                n += split;
            }
            else
            {
                if (pos >= m_size[0])
                {
                    pos -= m_size[0];
                    // Number of shorts to be read from second buffer
                    n = Math.Min(length, m_size[1] - pos);

                    // Read from second buffer
                    Array.Copy(m_buffer[1], pos, buffer, 0, n);
                }
                else
                {
                    // Read from first buffer
                    Array.Copy(m_buffer[0], pos, buffer, 0, n);
                }
            }

            return n;
        }

Usage Example

Пример #1
0
        public void Consume(short[] input, int length)
        {
            // Special case, just pre-filling the buffer
            if (m_buffer_offset + length < m_frame_size)
            {
                Array.Copy(input, 0, m_buffer, m_buffer_offset, length);
                m_buffer_offset += length;
                return;
            }

            // Apply FFT on the available data
            CombinedBuffer combined_buffer = new CombinedBuffer(m_buffer, m_buffer_offset, input, length);

            while (combined_buffer.Size >= m_frame_size)
            {
                combined_buffer.Read(m_input, 0, m_frame_size);
                m_lib.ComputeFrame(m_input, m_frame.Data);

                m_consumer.Consume(m_frame);
                combined_buffer.Shift(m_increment);
            }

            // Copy the remaining input data to the internal buffer
            combined_buffer.Flush(m_buffer);

            m_buffer_offset = combined_buffer.Size;
        }
All Usage Examples Of AcoustID.Chromaprint.CombinedBuffer::Read