genesys: Remove no longer used ImageBufferGenesysUsb

merge-requests/244/head
Povilas Kanapickas 2020-05-23 10:39:11 +03:00
rodzic d172b9cc4d
commit ec5af18239
3 zmienionych plików z 0 dodań i 108 usunięć

Wyświetl plik

@ -74,7 +74,6 @@ class Image;
// image_buffer.h
class ImageBuffer;
class ImageBufferGenesysUsb;
// image_pipeline.h
class ImagePipelineNode;

Wyświetl plik

@ -107,77 +107,4 @@ bool ImageBuffer::get_data(std::size_t size, std::uint8_t* out_data)
return got_data;
}
ImageBufferGenesysUsb::ImageBufferGenesysUsb(std::size_t total_size,
std::size_t buffer_size,
ProducerCallback producer) :
remaining_size_{total_size},
buffer_size_{buffer_size},
producer_{producer}
{}
bool ImageBufferGenesysUsb::get_data(std::size_t size, std::uint8_t* out_data)
{
const std::uint8_t* out_data_end = out_data + size;
auto copy_buffer = [&]()
{
std::size_t bytes_copy = std::min<std::size_t>(out_data_end - out_data, available());
std::memcpy(out_data, buffer_.data() + buffer_offset_, bytes_copy);
out_data += bytes_copy;
buffer_offset_ += bytes_copy;
};
// first, read remaining data from buffer
if (available() > 0) {
copy_buffer();
}
if (out_data == out_data_end) {
return true;
}
// now the buffer is empty and there's more data to be read
do {
if (remaining_size_ == 0)
return false;
auto bytes_to_read = get_read_size();
buffer_offset_ = 0;
buffer_end_ = bytes_to_read;
buffer_.resize(bytes_to_read);
producer_(bytes_to_read, buffer_.data());
if (remaining_size_ < bytes_to_read) {
remaining_size_ = 0;
} else {
remaining_size_ -= bytes_to_read;
}
copy_buffer();
} while(out_data < out_data_end);
return true;
}
std::size_t ImageBufferGenesysUsb::get_read_size()
{
std::size_t size = buffer_size_;
// never read an odd number. exception: last read
// the chip internal counter does not count half words.
size &= ~1;
// Some setups need the reads to be multiples of 256 bytes
size &= ~0xff;
if (remaining_size_ < size) {
size = remaining_size_;
/*round up to a multiple of 256 bytes */
size += (size & 0xff) ? 0x100 : 0x00;
size &= ~0xff;
}
return size;
}
} // namespace genesys

Wyświetl plik

@ -85,40 +85,6 @@ private:
std::vector<std::uint8_t> buffer_;
};
// This class is similar to ImageBuffer, but preserves historical peculiarities of buffer handling
// in the backend to preserve exact behavior
class ImageBufferGenesysUsb
{
public:
using ProducerCallback = std::function<void(std::size_t size, std::uint8_t* out_data)>;
ImageBufferGenesysUsb() {}
ImageBufferGenesysUsb(std::size_t total_size, std::size_t buffer_size,
ProducerCallback producer);
std::size_t remaining_size() const { return remaining_size_; }
void set_remaining_size(std::size_t bytes) { remaining_size_ = bytes; }
std::size_t available() const { return buffer_end_ - buffer_offset_; }
bool get_data(std::size_t size, std::uint8_t* out_data);
private:
std::size_t get_read_size();
std::size_t remaining_size_ = 0;
std::size_t buffer_size_ = 0;
std::size_t buffer_offset_ = 0;
std::size_t buffer_end_ = 0;
std::vector<std::uint8_t> buffer_;
ProducerCallback producer_;
};
} // namespace genesys
#endif // BACKEND_GENESYS_IMAGE_BUFFER_H