Run-Length Encoding for Non-Sequential Data Insertion
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Run Length Encoding (RLE) systems face inefficiencies when dealing with non-sequential data inputs, requiring additional memory for buffering and sorting, which increases hardware costs and storage requirements, particularly in applications like 2D drawing engines where touch events are not in raster order.
Innovation Solution
A non-sequential RLE method that allows element-by-element encoding in arbitrary order, reducing storage needs and hardware costs by determining the insertion position's adjacency to neighboring runs and adjusting run lengths accordingly, merging or creating new runs based on insertion values and distances.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If data is buffered to complete sequential order before RLE encoding, then encoding efficiency is improved, but memory usage and hardware costs increase
Solution Approach 1:
The patent segments the RLE encoding process into independent run identification and insertion operations. Each data element can be processed individually by identifying its insertion position and merging with adjacent runs of the same value, eliminating the need to buffer entire datasets for sequential ordering.
Solution Approach 2:
Instead of buffering data to achieve sequential order before encoding, the patent inverts the approach by allowing non-sequential insertion during encoding. The algorithm identifies insertion positions and merges elements with neighboring runs of the same value, processing data in arbitrary order while maintaining encoding efficiency.
2Loss of information
If data is buffered and sorted to sequential order, then RLE compression ratio is improved, but device complexity increases
Solution Approach 1:
The RLE encoding system performs self-service by automatically identifying insertion positions and merging elements with neighboring runs during the encoding process itself. The algorithm maintains run boundaries and values, allowing non-sequential data to be integrated without external sorting or buffering infrastructure.
Solution Approach 2:
The patent changes the operational parameters of RLE encoding from requiring sequential input to accepting non-sequential input. By modifying the encoding algorithm to identify insertion positions and merge with adjacent runs based on value matching, the system achieves compression without traditional sorting mechanisms.
3Device complexity
If traditional RLE encoding is used with non-sequential input, then implementation simplicity is maintained, but encoding accuracy and compression efficiency deteriorate
Solution Approach 1:
The patent introduces dynamic run merging capabilities where the encoding structure adapts to non-sequential input. The system dynamically identifies insertion positions, compares values with neighboring runs, and merges runs of the same value, allowing the encoding process to flexibly handle arbitrary input order while maintaining compression efficiency.
Solution Approach 2:
The patent introduces an intermediary insertion position identification mechanism that mediates between non-sequential input and the RLE encoding structure. This intermediary layer determines where each element should be inserted and facilitates merging with adjacent runs, bridging the gap between arbitrary input order and efficient compression without requiring full sequential reordering.
Data Source
AI summary
A method for updating a run length encoded (RLE) stream includes: receiving an element having an insertion value to be inserted into the RLE stream at an insertion position, the insertion value having one of a plurality of values, the RLE stream having elements arranged in runs, and each of the elements having one of the values; identifying a run containing the insertion position; determining whether the insertion value is the same as the value of the element at the insertion position; when the insertion value is different from the value of the element at the insertion position: determining whether the insertion position is adjacent to one or more matching runs of the runs, each element of the matching runs having a same value as the insertion value; and extending one of the matching runs when the insertion position is adjacent to only one of the matching runs.


