/*
* *****************************************************************************
* Copyright (C) 2014-2022 Dennis Sheirer
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
* ****************************************************************************
*/
package io.github.dsheirer.buffer;
import io.github.dsheirer.sample.complex.ComplexSamples;
import io.github.dsheirer.sample.complex.InterleavedComplexSamples;
import java.util.Iterator;
/**
* A buffer of raw samples copied from native (ie outside of the JVM) memory into the JVM heap and
* convertible to an iterable stream of interleaved or non-interleaved sample instances.
*/
public interface INativeBuffer
{
/**
* Provides an iterator that converts the raw samples to complex samples format with separate (non-interleaved) I and Q sample arrays.
*/
Iterator iterator();
/**
* Provides an iterator that converts the raw samples to interleaved complex samples format.
*/
Iterator iteratorInterleaved();
/**
* Total number of complex samples for this buffer
*/
int sampleCount();
/**
* Timestamp for this buffer
* @return millis since epoch
*/
long getTimestamp();
}