kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Remove no longer used ImageBufferGenesysUsb
rodzic
d172b9cc4d
commit
ec5af18239
|
@ -74,7 +74,6 @@ class Image;
|
|||
|
||||
// image_buffer.h
|
||||
class ImageBuffer;
|
||||
class ImageBufferGenesysUsb;
|
||||
|
||||
// image_pipeline.h
|
||||
class ImagePipelineNode;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue