Derivative-based encoding for scanning mirror timing
By employing a derivative-based encoding scheme in the scanning mirror display system to compress timing information, the problems of transmission bandwidth and power consumption are solved, achieving efficient timing information transmission and system simplification.
Patent Information
- Application Number
- CN202180051206.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-08-20
- Filing Date
- 2021-05-06
- Publication Date
- 2026-01-23
- Estimated Expiration
- 2041-05-06
AI Technical Summary
In scanning mirror display systems, the bandwidth required to transmit pixel timing information is large, which leads to complex system design and increased power consumption, especially in small wearable devices.
A derivative-based coding scheme is adopted. By encoding the second derivative information of the scanning mirror, a variable-length coding scheme is used to compress timing data and reduce the number of transmitted bits.
It achieves efficient compression of timing information, improves bandwidth utilization, reduces power consumption, and simplifies system design.
Smart Images

Figure CN115885477B_ABST
Abstract
Description
Background Technology
[0001] In a scanning display system, a laser is reflected by a scanning mirror system to scan a projected image. Laser pulses are synchronized with the movement of the scanning mirrors to display the pixels of the image. In some such devices, the scanning of the mirrors can be performed via harmonic oscillations at the mirror's resonant frequency. Summary of the Invention
[0002] Examples relating to synchronizing mirror movement with the timing of light pulses in a scanning mirror display system are disclosed. One example provides a method for transmitting timing information for light samples scanned to form a displayed image on a scanning mirror display system. The method includes, for a row of light samples, encoding timing information for a first light sample of the row of light samples using a first larger number of bits to form encoded timing information for the first light sample, and transmitting intensity information for the first light sample and the encoded first timing information across a communication channel. The method further includes encoding timing information for subsequent light samples by calculating a derivative based on the timing of subsequent light samples of the row of light samples relative to a previous light sample, encoding the derivative using a second smaller number of bits to form encoded timing information for subsequent light samples, and transmitting intensity information for the subsequent light samples and the encoded timing information across a communication channel.
[0003] Another example provides a scanning mirror display system including one or more light sources, a resonant scanning mirror configured to scan light from the one or more light sources across the field of view at a variable speed that varies according to the mirror scanning angle, a communication subsystem, a logic subsystem configured to execute instructions, and a storage subsystem that holds instructions executable to transmit sample information for a mirror scan line via the communication subsystem, the sample information including timing encoded using a derivative-based encoding scheme, monitoring of encoding progress, and sending a scan line termination command at least based on a comparison of the encoding progress with the remaining time before the next mirror scan line.
[0004] This summary is provided to introduce a selection of concepts in a simplified form, which will be further described in the detailed description below. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to embodiments that address any or all of the shortcomings mentioned in any part of this disclosure. Attached Figure Description
[0005] Figure 1 An example scanning mirror display system is illustrated schematically.
[0006] Figure 2 An example scan trace is shown through an image.
[0007] Figure 3 An example of timing information for a scan line encoded using a derivative-based encoding scheme is shown.
[0008] Figure 4 An example codebook for encoding second-order derivative information using a variable-length encoding scheme is shown.
[0009] Figure 5 An example of second-order derivative timing information encoded via a variable-length encoding scheme is shown.
[0010] Figure 6 A flowchart illustrating an example method for encoding timing information is shown.
[0011] Figure 7 A flowchart of an example method for monitoring and terminating scan lines is shown.
[0012] Figure 8A and Figure 8B An example method for encoding timing information using a derivative-based encoding scheme is shown.
[0013] Figure 9 A block diagram of an example computing system is shown. Detailed Implementation
[0014] In spatial light modulation displays (such as LCD or OLED panel displays), rendered image data is provided to the display hardware as color intensity information (RGB values). Since the positions of pixels are fixed by the hardware in such a display, the position of each pixel can be inferred from the transmission sequence, where the first received data is associated with a pixel in one corner of the display, and subsequent data corresponds to pixels in a fixed pattern across the rest of the display. However, in a scanning mirror display system utilizing resonant scanning mirrors, the frequency of the scanning device may not be a perfect multiple of the display refresh rate. Thus, timing information for coordinating the light pulses of the display with the mirror position can be explicitly transmitted from the renderer to the display engine to help ensure that each pixel is displayed in the correct position.
[0015] However, due to the precision required for targets with pixel pitch (e.g., in some examples, the distance between pixels is 1 / 32 to 1 / 80), transmitting uncompressed color and timing information simultaneously can utilize a significant amount of bandwidth. Such data transmission can consume considerable power and can complicate system design (e.g., due to increased routing complexity from additional data channels) and / or silicon design complexity (e.g., increased frequency). Power considerations can also be important in wearable heads-up displays using small, lightweight batteries.
[0016] Therefore, an example of a lossless compression scheme for timing information transmitted along with color intensity information for pixels in a scanning mirror display device is disclosed. In short, timing information for at least some pixels is encoded using a derivative-based algorithm. In a resonant scanning mirror system, the mirror speed does not change drastically for most of the scan. Therefore, the second derivative of the time-varying mirror position can be relatively small for most of the scan, and thus can be compressed using a much smaller number of bits than the unencoded original timing information. Furthermore, the second derivative can be compressed using a variable-length codebook. In some examples, if this scheme is used, the compression ratio of the timing data can be 8X or greater. In some such examples, compression ratios up to 20X can be achieved. This allows color levels and timing information to be transmitted using a smaller amount of bandwidth than sending the original timing information for each pixel, which can result in relative power savings.
[0017] Figure 1 A block diagram of an exemplary scanning mirror display system 100 configured to raster scan a laser to generate an image is shown. System 100 includes digital circuitry 102 configured to receive image data from a video source 120. Digital circuitry 102 converts the received image data into mirror control information and light source control information, including intensity and timing information. Digital circuitry 102 then transmits the intensity and timing information across communication channel 104 to analog circuitry 106. Digital circuitry 102 may include, for example, a digital image processor that receives image data from video source 120. Analog circuitry 106 may include integrated light source driver circuitry that drives a scanning mirror 108 and a light source 110. Light source 110 may include any suitable light-emitting element, such as one or more lasers. Light source 110 may output light within any suitable wavelength range, such as red, green, and blue wavelengths used to generate color images. In other examples, light source 110 may output substantially monochromatic light. The scanning mirror display system may also include a memory 112 storing processing instructions, encoding schemes, and / or other instructions accessible via digital circuitry 102. In some examples, digital circuit 102 and analog circuit 106 may each include separate internal clocks, so clock synchronization information can be sent across communication channel 104.
[0018] As the scanning mirror 108 oscillates, light pulses from the light source 110 are directed to different locations on the display screen, optical components, the viewer's retina, or other image planes. In some examples, the scanning mirror 108 is a 2D scanning mirror that oscillates in two dimensions to raster scan an image horizontally and vertically. In other examples, the scanning mirror display system may include two scanning mirrors scanning in different dimensions (e.g., horizontal and vertical). In either case, one or more mirrors oscillate in a fast scanning direction (e.g., horizontal) and a slow scanning direction (e.g., vertical). When the mirrors are driven at harmonic frequencies, the fast scanning oscillations comprise an approximately sinusoidal function, while the vertical scan comprises a sawtooth function. Combined, these scanning modes allow the display system to raster scan an image line by line.
[0019] Figure 2 An example scan trace 200 for a scanning mirror display system (such as scanning mirror 108) is shown. The sinusoidal horizontal motion and sawtooth vertical motion shown in this example can be controlled, for example, by analog circuitry 106. Scan trace 200 begins at the upper left and scans the upper scan line 202A from left to right. As used herein, the term "scan line" refers to a row of pixels in the fast scanning direction. Scan trace 200 then scans the next scan line 202B from right to left, continuing back and forth until all scan lines have been scanned. Extreme values are called zero crossings. Each zero crossing provides a reference time to which all light pulses in the next scan line can be referenced. For example, zero crossing 204A provides a reference time for the light pulses of scan line 202A. Similarly, zero crossing 204B provides a reference time for the light pulses of scan line 202B.
[0020] As the mirror traverses each scan line, light pulses are output from light source 110. The timing of the light pulses is synchronized with the movement of the scanning mirror, such that each pulse is output at the corresponding position to display a pixel of the image. In other examples, the display system can operate in a mode where light pulses correspond to two or more pixels. As described in more detail below, the scanning mirror display system can dynamically change between display modes.
[0021] A light pulse can be defined by light pulse characteristics such as intensity level, pulse width (e.g., pulse duration), pulse shape, and / or other suitable pulse characteristics. In some examples, the pulse shape and width can be standard, and the transmitted intensity information can include the intensity of each color illuminating the light source 110. In other examples, the intensity information can include intensity and pulse shape information.
[0022] As described above, the scanning mirror 108 is driven by analog circuitry 106 to oscillate substantially at its resonant frequency. Due to factors such as manufacturing tolerances and batch-to-batch variance, the resonant frequency may not be a precise multiple of the image frame rate of the video content from video source 120. Furthermore, the resonant frequency of the scanning mirror 108 may vary with temperature or due to other factors. Therefore, as described above, digital circuitry 102 can determine the timing of each light pulse and transmit this timing, along with intensity information, to analog circuitry 106 to help ensure that pixels are illuminated at the correct corresponding positions. Digital circuitry 102 can determine the pixel phase, for example, based on the horizontal coordinates of the pixels within a scan line. Then, based on the resonant frequency and sinusoidal motion of the scanning mirror 108, digital circuitry 102 determines timing information for the light pulses associated with the pixels, such that light pulses are output at the appropriate time during the mirror's traversal across scan lines. In some examples, the timing information may reference the scanning mirror's most recent zero crossing.
[0023] The scanning mirror display system 100 can be configured to output video at a frame rate of 30 Hz or higher (e.g., 60 Hz). Depending on the desired image resolution, each raster-scanned image can include a large number of scan lines. For example, some 3072x1728 displays may contain 1728 horizontal scan lines, each with 3072 pixels. If the desired refresh rate is 30 Hz, the system outputs at least 51,840 scan lines per second, and approximately 159 million pixels per second. Other displays may include 1440, 1080, 720, or any other number of scan lines. In some examples, the desired refresh rate is between 90 and 120 Hz, and the system can output approximately 600 million RGB pixels per second. Due to the sinusoidal motion of the scanning mirror, two scan lines are output per cycle. For example, scan line 202A corresponds to the first half of the cycle, and scan line 202B corresponds to the second half of the cycle. Therefore, for example, a mirror frequency of 40 kHz can be used to scan approximately 80,000 lines per second.
[0024] Because the light pulses are output at specific timings synchronized with the movement of the scanning mirror, timing can be specified with a relatively high level of precision to produce accurate pixel positions in the displayed image. In some examples, timing precision can correspond to pixel placement accuracy of 62.5 picoseconds (ps). Depending on the resolution and mirror frequency, the length of a pixel can be between 2 and 5 nanoseconds (ns), i.e., the time it takes for the reflected beam to traverse the pixel. Therefore, a timing accuracy of 62.5 ps can achieve a pixel pitch of 1 / 32. nd and 1 / 80 thThe accuracy of pixel positions between them. Considering the accuracy level of the specified timing information, in some examples, the raw, unencoded timestamp may include a size between 12 and 30 bits, and in more specific examples, it may include a size between 20 and 22 bits. Therefore, power savings can be achieved by compressing the data to reduce the bandwidth used when transmitting timing information. Due to the accuracy requirements discussed above, lossless compression / decompression algorithms are beneficial.
[0025] While the raw timestamp can include a large number of bits, the time difference between light pulses can be defined with a smaller number of bits. Therefore, the timing of a pixel can be encoded as a derivative. Furthermore, in a resonant scanning mirror system, due to the mirror's harmonic oscillations, the mirror moves relatively slowly at the beginning / end of a scan line and faster in the middle of the line. In the middle of the scan line, the mirror's speed can vary only to a relatively small degree. Thus, the second derivative of the timing data representing the mirror's acceleration can be defined using fewer bits across most of the scan line. Moreover, using a lossless variable-length encoding scheme to encode the second derivative can provide a further reduction in bit length.
[0026] Figure 3 An example timestamp encoding scheme 300 using first and second derivatives is illustrated schematically. The raw timestamp 302 represents the absolute timestamp value. Figure 3 The numbers used are arbitrary and for illustrative purposes only, and may not depict the actual timing values to be transmitted. Timing values can be represented in any suitable timing unit, such as picoseconds, nanoseconds, or clock cycles, as well as other possible units. Any suitable number of bits can be used to achieve the desired numerical accuracy. In an illustrative example, 22 bits are used to represent the value of the original timestamp, including 16 bits indicating the integer unit of time and 6 bits indicating the fractional unit of time. Any suitable smaller number of bits can be used to represent the first derivative 304. For example, depending on the mirror frequency, 8 to 12 bits can be used to represent each first derivative value. Further fewer bits can be used for the second derivative value, as described below.
[0027] As shown in the original timestamp 302, the first timestamp value of the first sample in the scan row can be explicitly sent as an absolute timestamp value using a larger number of bits. The first derivative 304 represents the rate of change of absolute timing values between adjacent samples. Therefore, the second timestamp "1115" can be encoded as a first derivative instead of being sent as the original timestamp. The first derivative of the second sample is calculated as "115", representing the difference between the original timestamps of the first and second samples. The first derivative 304 can be represented using a smaller number of bits. Next, the third timestamp can be encoded based on the rate of change of timing of the third sample relative to the rate of change of timing of the second sample and sent as a second derivative 306. Therefore, the second derivative 306 represents the difference between the values of the first derivative 304. For example, the second derivative for the third sample is shown as "-3", representing the difference between the first derivatives of the second and third samples.
[0028] In some cases, first derivative values may exist that cannot be correctly represented using a small number of bits. Furthermore, gaps may exist between optical pulses, requiring escape from the derivative mode. Thus, some first derivative values can be reserved as special command codes to, for example, change the encoding (e.g., by switching to a different codebook) or escape the encoding. For example, a first derivative value of 1 can be reserved for a command code because this value is unlikely to appear during encoding. As an illustrative example, a first derivative value of 1 could include an escape code to exit first derivative encoding. Such an escape code thus indicates to the receiving device (i.e., analog circuit 106) that the next timestamp value will include the original timestamp using a larger bit length instead of the encoded first derivative.
[0029] The receiver (e.g., analog circuit 106) can decode the timing information by appropriately calculating the first or second anti-derivative to recover the encoded timing value. Subsequent values can also be interpreted as second derivatives, except when a command indicating restoration to the first derivative, the original timestamp, or other encoding is accepted.
[0030] In some examples, the second derivative 306 can be encoded using a lossless variable-length encoding scheme. Figure 4 Example codebook 400 employing this variable-length encoding scheme is depicted. Codebook 410 is an example encoding scheme based on variable-length Huffman codes. Here, the increasingly frequent +1 and -1 values are encoded using 2-bit codes "00" and "01", respectively. In some examples, frequent values can be encoded using 1 bit. Other less frequent values can be represented by a larger bit length. Bandwidth savings can be achieved by allocating frequent second-order derivative values to shorter codes. For example, if the original timestamp comprises 30 bits and the encoded second-order derivative values comprise an average bit length of 1.5 bits, a compression ratio of up to 20X can be achieved.
[0031] Example codebook 420 also utilizes variable-length Huffman codes. Compared to codebook 410, codebook 420 is a larger codebook and can encode more values. For example, the second derivative values ±4 and ±5 cannot be encoded by codebook 410 but can be encoded by codebook 420. However, codebook 420 includes a larger bit depth than codebook 410. For example, the value “+1” is encoded using the 3-bit code “000” in codebook 420. Therefore, encoding “+1” via codebook 420 requires a higher bit count than codebook 410.
[0032] Codebooks 410 and 420 each include an "ESC" command code that instructs the receiver to escape an encoding scheme and / or expect information in a different format to be transmitted. If the second derivative value cannot be encoded using the codebook, this method can instead utilize the ESC command code to recover the original timestamp, first derivative, or other encoding scheme. The codebook may include other such command codes not listed herein.
[0033] Codebook 400 may also include supplementary codebooks, such as supplementary codebook 430. The Huffman codebook can be derived from any suitable Huffman tree. Alternative codebooks can be constructed and customized using specific video image data types (e.g., user interface or text display), specific display modes, or other specific purposes, and the scanning display system can be configured to switch between codebooks based on various factors. For example, different codebooks can be used for mirrors with different resonant frequency ranges. Furthermore, codebooks can be dynamically switched based on display modes (e.g., different codebooks can be used for a reduced-resolution mode where adjacent pixels are combined into a single pixel). As another example, switching between codebooks can be based on the frequency encoding of sending multiple scan line termination commands. For example, if the frequency of scan line termination commands for each scan line is higher than a threshold, the scanning display device can switch to a second encoding scheme using a second codebook that includes a higher bit count than the first codebook, resulting in a high frequency of scan line termination commands. The codebook can include any suitable number of value code pairs encoded using any suitable bit length. For example, while codebook 410 has a maximum bit length of 4 bits, supplementary codebook 430 may include a Huffman codebook with a maximum bit length of 8 bits.
[0034] Figure 5 An example is depicted, comprising a Huffman code sequence comprising a second derivative 500 encoded as a second derivative value 502 via codebook 410. A variable-length encoding scheme encodes the original timestamp relative to the bit length of the example above, allowing significant compression to be achieved.
[0035] Figure 6A flowchart illustrating an example method 600 for encoding timing information of optical pulses in a scanning mirror display system is shown. As described above, the encoding of the timing information can be lossless to maintain the target accuracy of the timing values. At 602, method 600 begins scanning a line. At 604, timing information for the first sample is encoded as a raw timestamp using a first number of bits (e.g., between 20 and 22 bits). At 606, method 600 determines whether the first derivative of the timing for the next sample can be encoded using a smaller number of bits. For example, the bit length of the first derivative can be limited to 10 bits. If not, method 600 includes sending an escape code as described above at 608, and then explicitly sending the timing information for the next sample as a raw timestamp. On the other hand, if the encoded first derivative would fit a smaller bit length, method 600 proceeds to 610.
[0036] At 610, method 600 encodes the timing information of the next sample as a first derivative using a smaller bit length. Continuing, method 600 attempts to encode the subsequent timing information as an encoded second derivative, where the number to be encoded is appropriate. Therefore, at 612, method 600 checks whether the second derivative can be encoded using a variable-length codebook. For example, codebook 410 can encode second derivative values from -3 to +3, while values outside this range cannot be represented using codebook 410. If the value cannot be correctly encoded, method 600 sends an escape code at 614 and then returns to 606. If the second derivative can be properly encoded, method 600 proceeds to 616 and encodes the timing of the next sample as a second derivative using a variable-length codebook.
[0037] At 618, if more samples need to be encoded, and at 620 it is determined that encoding of the scan line should continue (e.g., samples are adapted to bandwidth allocation for the scan line), then method 600 returns to 612 to check if the timing of the next sample can be encoded as a second derivative. If the timing information remains properly encoded, method 600 continues to encode the sample timing information as a second derivative using a variable-length codebook.
[0038] On the other hand, if the scan line encoding is complete and it is determined at 618 that no more samples need to be sent, method 600 includes sending a scan line completion code at 622 and a scan line termination code at 624. In other examples, any other suitable code may be sent to indicate the end of the scan line. Method 600 then proceeds from 624 to 626 and begins encoding the next scan line.
[0039] On the other hand, if it is determined at 620 that the encoding of the scan line should not continue (e.g., if the allocated bandwidth is exceeded by the continued encoding and transmission of sample data of the scan line), method 600 can determine at 620 not to continue and instead terminate the encoding process. In this case, method 600 can send a scan line termination code at 624 instead of a scan line completion code. This can indicate to the receiver that the scan line is not complete.
[0040] As mentioned above regarding process 620, in some cases, the encoded timing information for a scan line may not be suitable for the bandwidth allocation of that scan line. For example, if the encoded timing information includes a large number of escape codes and encoded first-order derivative values and / or raw timing values, rather than second-order derivative values encoded with a shorter bit length, the compression ratio of the encoded timing information may not be high enough considering the allocated bandwidth. Thus, Figure 7 A flowchart is shown to describe an example method for monitoring and terminating the coding process.
[0041] Figure 7 An example method 700 for monitoring encoding progress and terminating encoding if one or more trigger conditions are met is illustrated schematically. For example, method 700 can be implemented on a scanning mirror display system 100. At 702, method 700 includes receiving video image data. For example, image data can be received from a video source 120. Next, at 704, method 700 begins converting the image data into laser control information and mirror control information. At 706, method 700 includes monitoring bandwidth while encoding timing information and transmitting sample intensity and encoded timing data. In some examples, at 708, the method may receive zero-crossing timing information for each scan line, which may include receiving a reference time from an analog circuit driver 106. In other examples, the zero-crossing timing may be transmitted less frequently and / or may be known based on the resonant scanning frequency of the mirror.
[0042] Monitoring bandwidth at 706 may include monitoring the compression ratio at 710. At 712, method 700 includes determining whether the encoding is appropriate for the bandwidth allocation for the current scan line. This may include, for example, comparing the encoding progress with the remaining time before the next scan begins. This comparison may also be based on known encoding latency. Procedure 712 may also include comparing the compression ratio with a threshold compression ratio. If at 712 the method determines that the encoding will be appropriate for the bandwidth allocation, the method loops from 714 to 706 until the scan is complete, at which point method 700 includes sending a scan line completion code at 716. Procedure 716 may also include sending a scan line termination code at 718. In other examples, any other suitable line termination code may be used. The method then proceeds to 724 to begin encoding the next scan line, then to 706 to encode and monitor the encoding progress of the next scan line.
[0043] On the other hand, if it is determined at 712 that the strength and encoded timing information of the current scan line will not fit the bandwidth allocated to the scan line, method 700 terminates the encoding of the scan line at 720. At this point, the encoded strength and timing information across the communication channel has been sent to the receiver, and any remaining information is discarded. At 722, method 700 sends a scan line termination code, which indicates to the receiver that a new scan line will be transmitted. Then, at 724, the method begins encoding the next scan line and returns to 706 to encode and monitor the encoding progress of the next scan line.
[0044] Figure 8 illustrates a flowchart depicting an example method 800 for transmitting timing information for light samples in a scanning mirror display system. As an example, method 800 can be implemented on a scanning mirror display system 100. Method 800 includes receiving video image data at 802. Method 800 also includes, at 804, encoding timing information for a first light sample for a light sample row using a first, larger number of bits to form encoded timing information for the first light sample. In some examples, a reference time for generating the timing information for the first light sample is received from another device, such as analog circuitry 106. Thus, at 806, method 800 may include receiving a reference time indicating the start of a scanning row of the scanning mirror via a communication channel, such that the timing information for the first sample is based at least on the reference time.
[0045] Continuing, method 800 includes, at 812, transmitting intensity information and encoded first timing information for the first optical sample across the communication channel. In some examples, method 800 includes, at 812, transmitting information across the communication channel including transmitting information between a digital chip and an analog chip. In some examples, at 814, transmitting information across the communication channel includes transmitting information between digital circuitry and analog circuitry (e.g., a digital image processor and a laser driver circuit).
[0046] Method 800 further includes, at 816, receiving intensity information and encoded first timing information at a receiving device (e.g., analog circuit as described above), decoding the first timing information, and controlling the light source based on the received information.
[0047] Method 800 further includes, at 820, encoding timing information for subsequent optical samples of the optical sample row by calculating a derivative of the timing information, and using a second, smaller number of bits to encode the derivative to form the encoded timing information for the subsequent optical samples. As shown at 822, the subsequent optical sample may be a second optical sample immediately following the first optical sample. In such an instance, the derivative may be a first derivative. As shown at 824, the subsequent optical sample may also be a third (or fourth, or later) optical sample. In this case, method 800 includes encoding the timing for the subsequent optical sample by calculating a second derivative, and using a third, smaller number of bits to encode the second derivative. In some such examples, as shown at 824, encoding the second derivative includes encoding the second derivative via Huffman codes or other variable-length codebooks.
[0048] continue Figure 8B Method 800 further includes, at 830, transmitting intensity information and encoded timing information for subsequent optical samples across the communication channel. Method 800 also includes, at 832, receiving the intensity information and encoded timing information at a receiving device (e.g., analog circuitry), decoding the encoded timing signal for subsequent optical samples, and controlling the pixels of the light pulses emitted by the light source to display the image based on the decoding of the intensity information and timing information. If the subsequent sample immediately follows the original timestamp, the method can treat the encoded timing information as a first derivative and decode the encoded timing information for the subsequent sample using the inverse derivative; for example, the method can add a derivative value to the previous timestamp to recover the original timestamp for the subsequent sample. If the subsequent sample immediately follows a sample encoded using the first derivative, the method can treat the encoded timing information for the subsequent sample as a second derivative and decode the timing information using a codebook and / or calculating a second inverse derivative to recover the original timestamp for the subsequent sample.
[0049] As described above, in some examples, method 800 also includes sending an escape code at 836 that indicates the next sample will include timing information indicating an absolute timestamp. This can occur, for example, when it is determined that the derivative will not fit the bit length for the derivative.
[0050] Furthermore, in some examples, at 838, timing information is encoded using a first codebook, and method 800 also includes, at least based on the frequency of sending multiple scan line termination commands, switching to a second codebook, the second codebook including a higher bit count than the first codebook, and using the second codebook to encode timing.
[0051] Furthermore, in some examples, method 800 includes, at 840, monitoring the compression ratio, and when it is detected that multiple encoded samples of a scan line will not fit the bandwidth allocation of the scan line, sending a scan line termination code, and then sending the strength information of the first sample of the next scan line and the timing of the first encoded sample.
[0052] In some embodiments, the methods and processes described herein can be attached to a computing system of one or more computing devices. In particular, such methods and processes can be implemented as computer applications or services, application programming interfaces (APIs), libraries, and / or other computer program products.
[0053] Figure 9 A non-limiting embodiment of a computing system 900 that can implement one or more of the methods and processes described above is illustrated schematically. The computing system 900 is shown in a simplified form. The computing system 900 may take one or more of the following forms: personal computer, server computer, tablet computer, home entertainment computer, network computing device, gaming device, mobile computing device, mobile communication device (e.g., smartphone), and / or other computing device. Figure 9 It can represent, for example, combination. Figure 1 The scanning mirror display system 100 is a computing system.
[0054] The computing system 900 includes a logic subsystem 902 and a storage subsystem 904. The computing system 900 may optionally include a display subsystem 906, an input subsystem 908, a communication subsystem 910, and / or... Figure 9 Other components not shown.
[0055] The logic subsystem 902 includes one or more physical devices configured to execute instructions. For example, a logic machine may be configured to execute instructions that are part of one or more applications, services, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform tasks, implement data types, transform the state of one or more components, achieve technical effects, or otherwise obtain desired results.
[0056] A logic machine may include one or more processors configured to execute software instructions. Additionally or alternatively, a logic machine may include one or more hardware or firmware logic machines configured to execute hardware or firmware instructions. The processor of the logic machine may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and / or distributed processing. The various components of the logic machine may optionally be distributed across two or more separate devices that can be remotely located and / or configured for coordinated processing. Aspects of the logic machine may be virtualized and executed by remotely accessible, networked computing devices configured in a cloud computing configuration.
[0057] Storage subsystem 904 includes one or more physical devices configured to hold instructions executable by a logic machine to implement the methods and processes described herein. If such methods and processes are implemented, the state of storage subsystem 904 can be transformed, for example, to maintain different data.
[0058] Storage subsystem 904 may include removable and / or built-in devices. Storage subsystem 904 may include optical storage (e.g., CD, DVD, HD-DVD, Blu-ray disc, etc.), semiconductor storage (e.g., RAM, EPROM, EEPROM, etc.), and / or magnetic storage (e.g., hard disk drive, floppy disk drive, magnetic tape drive, MRAM, etc.). Storage subsystem 904 may include volatile, non-volatile, dynamic, static, read / write, read-only, random access, sequential access, location-addressable, file-addressable, and / or content-addressable devices.
[0059] It should be understood that the storage subsystem 904 includes one or more physical devices. However, aspects of the instructions described herein may alternatively be propagated by a communication medium (e.g., electromagnetic signals, optical signals, etc.) that is not maintained by the physical device for a finite duration.
[0060] Various aspects of the logic subsystem 902 and the storage subsystem 904 can be integrated together into one or more hardware logic components. For example, such hardware logic components may include field-programmable gate arrays (FPGAs), application-specific integrated circuits (PASICs / ASICs), application-specific standard products (PSSPs / ASPs), system-on-a-chip (SOCs), and complex programmable logic devices (CPLDs).
[0061] When included, display subsystem 906 can be used to present a visual representation of the data held by storage subsystem 904. This visual representation may take the form of a graphical user interface (GUI). Since the methods and processes described herein change the data stored in the storage machine and thus transform the state of the storage computer, the state of display subsystem 906 can also be translated into a visual representation of the changes in the underlying data. Display subsystem 906 may include one or more display devices utilizing any type of technology. For example, display subsystem 906 may include scanning mirror display system 100. Such display devices may be combined with logical subsystem 902 and / or storage subsystem 904 in a shared enclosure, or such display devices may be peripheral display devices.
[0062] When included, the input subsystem 908 may include or interact with one or more user input devices (such as a keyboard, mouse, touchscreen, or game controller). In some embodiments, the input subsystem may include or interact with selected Natural User Input (NUI) components. Such components may be integrated or peripheral, and the translation and / or processing of input actions may be handled onboard or offboard. Example NUI components may include microphones for speech and / or voice recognition; infrared, color, stereo, and / or depth cameras for machine vision and / or gesture recognition; head trackers, eye trackers, accelerometers, and / or gyroscopes for motion detection and / or intent recognition; and electric field sensing components for assessing brain activity.
[0063] When included, the communication subsystem 910 can be configured to communicatively couple the computing system 900 to one or more other computing devices. The communication subsystem 910 may include wired and / or wireless communication devices compatible with one or more different communication protocols. As a non-limiting example, the communication subsystem can be configured to communicate via a wireless telephone network or a wired local area network or wide area network or a wireless local area network or wide area network. In some embodiments, the communication subsystem may allow the computing system 900 to send messages to and / or receive messages from other devices via a network such as the Internet.
[0064] Another example provides a method for transmitting timing information for light samples in a scanning mirror display system, the light samples being scanned to form a displayed image. The method includes: encoding timing information for a first light sample in a row of light samples using a first, larger number of bits to form encoded timing information for the first light sample; transmitting intensity information and the encoded first timing information for the first light sample across a communication channel; calculating a derivative based on the timing of subsequent light samples in the row of light samples and the position of the subsequent light samples relative to the previous light samples, encoding timing information for subsequent light samples, and encoding the derivative using a second, smaller number of bits to form encoded timing information for subsequent light samples; and transmitting the intensity information and encoded timing information for subsequent light samples across the communication channel. The method may additionally or alternatively include wherein the subsequent light sample is a second light sample immediately following the first light sample, and wherein the derivative is a first derivative. In some such examples, the method may additionally or alternatively include encoding timing for a third light sample by calculating a second derivative, and encoding the second derivative using a third, smaller number of bits. In some such examples, encoding the second derivative may additionally or alternatively include encoding the second derivative via Huffman coding. In some such examples, the Huffman coding may additionally or alternatively include a codebook having a maximum bit length between 8 and 12 bits. In some such examples, the method may additionally or alternatively include transmitting escape codes indicating that the next sample will include timing information indicating an absolute timestamp. In some such examples, transmitting information across a communication channel may include transmitting information between digital and analog circuitry. In some such examples, the method may additionally or alternatively include receiving a reference time indicating the start of a mirror scan line via a communication channel, and wherein the timing information for the first sample is based at least on the reference time. In some such examples, the light samples correspond to pixels of the displayed image, and the timing information for the light samples corresponds to pixel position precision between 1 / 16 and 1 / 80 of the pixel-to-pixel spacing. In some such examples, intensity and timing information for a first light sample and intensity and encoded timing information for subsequent light samples are transmitted from digital circuitry to analog circuitry. The method may additionally or alternatively include receiving intensity and timing information for the first light sample and intensity and encoded timing information for a second light sample at the analog circuitry, wherein receiving the encoded timing information includes a second, smaller number of bits indicating to the analog circuitry that the encoded timing information includes encoded derivatives. In some such examples, the method may additionally or alternatively include decoding the encoded timing information for subsequent light samples and controlling the light source based on the decoding of the intensity and timing information.
[0065] Another example provides a scanning mirror display system, including: a light source; a resonant scanning mirror configured to scan light from the light source across a field of view at a variable speed, the variable speed varying according to the mirror scanning angle; a logic subsystem configured to execute instructions; a communication subsystem; and a storage subsystem including instructions executable by the logic subsystem to explicitly encode a first sample timing using a first number of bits to form an encoded first sample timing; transmitting intensity information for the first sample and the encoded first sample timing across a communication channel via the communication subsystem; and encoding a second sample based on the first sample timing relative to a second sample timing. The timing is a first derivative to form an encoded second sample timing, which is encoded using a second number of bits less than the first number of bits; intensity information for the second sample and the encoded second sample timing are transmitted via a communication subsystem; a third sample timing is encoded as a second derivative based on the rate of change of the second sample timing relative to the rate of change of the third sample timing to form an encoded third sample timing, which is encoded using a third number of bits less than the second number of bits; and intensity information for the third sample and the encoded third sample timing are transmitted via a communication channel. In some such examples, the scanning mirror display system may additionally or alternatively include executable instructions to encode a fourth sample timing as a second derivative based on the rate of change of the third sample timing relative to the rate of change of the fourth sample timing. In some such examples, the scanning mirror display system may additionally or alternatively include executable instructions to monitor the compression ratio and, upon detecting that multiple encoded samples for a scan line will not fit the bandwidth allocation for the scan line, send a scan line termination code, and then send intensity information and the encoded first sample timing for the first sample of the next scan line. In some such examples, the scanning mirror display system may additionally or alternatively include executable instructions to encode third sample timing using Huffman codebooks. In some such examples, the storage subsystem stores multiple codebooks, and the codebooks are selected based on one or more of the frequency of the resonant scanning mirror or the scanning modes of the scanning mirror display system.
[0066] Another example provides a scanning mirror display system including one or more light sources; a resonant scanning mirror configured to scan light from the one or more light sources across a field of view at a variable speed, the variable speed varying according to the mirror scanning angle; a communication subsystem; a logic subsystem configured to execute instructions; a storage subsystem holding instructions executable to transmit sample information for a mirror scan line via the communication subsystem, the sample information including timing encoded using a derivative-based encoding scheme, monitoring encoding progress, determining, at least based on a comparison of the encoding progress with the remaining time before the next mirror scan line, that the sample information for the mirror scan line will not fit the bandwidth allocated to the mirror scan line, and, in response, sending a scan line termination command. In some such examples, the scanning mirror display system may additionally or alternatively include instructions executable to further determine, based on known encoding delays, that the sample information for the mirror scan line will not fit the bandwidth allocated to the mirror scan line. In some such examples, the derivative-based encoding scheme is a first encoding scheme including a first codebook, and the instructions can also be executed to change to a second encoding scheme at least based on the frequency of sending multiple scan line termination commands. The second encoding scheme is a derivative-based encoding scheme including a second codebook, which includes a higher bit count than the first codebook, and timing is encoded using the second encoding scheme. In some such examples, the first codebook uses a first bit length for encoding the second derivative, and the second codebook uses a second bit length for encoding the second derivative, the second bit length being greater than the first bit length.
[0067] It should be understood that the configurations and / or methods described herein are exemplary in nature, and these specific embodiments or examples should not be considered limiting, as many variations are possible. The specific embodiments or methods described herein may represent one or more of any number of processing strategies. Therefore, the various actions shown and / or described may be performed in the order shown and / or described, in another order, in parallel, or omitted. Similarly, the order of the above processes may be changed.
[0068] The subject matter of this disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems and configurations disclosed herein, as well as any and all equivalents thereof.
Claims
1. A method for transmitting timing information for an optical sample on a scanning mirror display system, the optical sample being scanned to form a displayed image, the method comprising: For each optical sample row, a first relatively large number of bits are used to encode timing information for a first optical sample in the optical sample row to form encoded timing information for the first optical sample. Intensity information for the first light sample and the encoded first timing information are transmitted across the communication channel; Timing information for the subsequent light samples is encoded by calculating the derivative based on the timing of the subsequent light samples relative to the previous light samples in the light sample row, and the derivative is encoded using a second, smaller number of bits to form the encoded timing information for the subsequent light samples. as well as Intensity information and encoded timing information for the subsequent light sample are transmitted across the communication channel.
2. The method of claim 1, wherein the subsequent light sample is a second light sample immediately following the first light sample, and wherein the derivative is the first derivative.
3. The method according to claim 2, further comprising: Timing for the third light sample is encoded by calculating the second derivative, and the second derivative is encoded using a third, smaller number of bits.
4. The method of claim 3, wherein encoding the second derivative comprises encoding the second derivative via Huffman codes.
5. The method of claim 4, wherein the Huffman code comprises a codebook having a maximum bit length between 8 bits and 12 bits.
6. The method of claim 1, further comprising sending an escape code, the escape code indicating that the next sample will include timing information indicating an absolute timestamp.
7. The method of claim 1, wherein transmitting information across a communication channel includes transmitting information between digital circuits and analog circuits.
8. The method according to claim 1, further comprising: The reference time for the start of the indicator mirror scan line is received via the communication channel, and the timing information for the first light sample is based at least on the reference time.
9. The method of claim 1, wherein the light sample corresponds to a pixel of the displayed image, and wherein the timing information for the light sample corresponds to a pixel position accuracy between 1 / 16 and 1 / 80 of the pixel-to-pixel spacing.
10. The method of claim 1, wherein the intensity information and timing information for the first light sample and the intensity information and encoded timing information for the subsequent light samples are transmitted from a digital circuit to an analog circuit, the method further comprising: The analog circuit receives the intensity information and timing information for the first light sample, and the intensity information and encoded timing information for the subsequent light samples. The receiving of encoded timing information includes: the second fewer number of bits instructing the analog circuit that the encoded timing information includes encoded derivatives.
11. The method of claim 10, further comprising: Decoding is performed on the encoded timing information for the subsequent optical samples, and The light source is controlled based on the decoding of the intensity information and the timing information.
12. A scanning mirror display system, comprising: light source; A resonant scanning mirror is configured to scan light from the light source across the field of view at a variable speed, the variable speed varying according to the mirror scanning angle; The logic subsystem is configured to execute instructions; Communication subsystem; as well as The storage subsystem includes instructions that can be executed by the logic subsystem to: The first sample timing is explicitly encoded using a first number of bits to form the encoded first sample timing; The intensity information for the first sample and the timing of the encoded first sample are transmitted across the communication channel via the communication subsystem. Based on the second sample timing relative to the first sample timing, the second sample timing is encoded as a first derivative to form an encoded second sample timing, which is encoded using a second number of bits less than the first number of bits; The intensity information for the second sample and the timing of the encoded second sample are transmitted via the communication subsystem; Based on the rate of change of the second sample timing relative to the rate of change of the third sample timing, the third sample timing is encoded as a second derivative to form an encoded third sample timing, wherein the encoded third sample timing is encoded using a third number of bits less than the second number of bits. as well as The intensity information of the third sample and the timing of the encoded third sample are transmitted via the communication channel.
13. The scanning mirror display system according to claim 12, wherein the instruction can also be executed to: encode the fourth sample timing as a second derivative based on the rate of change of the third sample timing relative to the rate of change of the fourth sample timing.
14. The scanning mirror display system of claim 12, wherein the instructions are further executable to: monitor the compression ratio, and when it is detected that a plurality of encoded samples for a scan line will not fit the bandwidth allocation for the scan line, send a scan line termination code, and then send intensity information and encoded first sample timing for the next scan line.
15. The scanning mirror display system of claim 12, wherein the instructions are executable to: encode the timing of the third sample using a Huffman codebook.
16. The scanning mirror display system of claim 15, wherein the storage subsystem stores a plurality of codebooks, and wherein the codebooks are selected based on one or more of the frequency of the resonant scanning mirror or the scanning mode of the scanning mirror display system.
17. A scanning mirror display system, comprising: One or more light sources; A resonant scanning mirror is configured to scan light from one or more light sources across a field of view at a variable speed, the variable speed varying according to the mirror scanning angle; Communication subsystem; The logic subsystem is configured to execute instructions; The storage subsystem holds instructions, and the held instructions are executable. The communication subsystem transmits sample information for the mirror scan lines, the sample information including timing encoded using a derivative-based encoding scheme. Monitor coding progress, Based at least on a comparison of the encoding progress with the remaining time before the next mirror scan line, it is determined that the sample information for the mirror scan line will not be suitable for the bandwidth allocated to the mirror scan line. In response, a scan line termination command is sent.
18. The scanning mirror display system of claim 17, wherein the instructions are executable to: further determine, based on known encoding delays, that the sample information for the mirror scan line will not fit the bandwidth allocated for the mirror scan line.
19. The scanning mirror display system according to claim 17, wherein the derivative-based encoding scheme is a first encoding scheme including a first codebook. The instructions can also be executed to: change to a second encoding scheme, at least based on the frequency of sending multiple scan line termination commands, the second encoding scheme being a derivative-based encoding scheme including a second codebook, the second codebook including a higher bit count than the first codebook, and Use the second encoding scheme to encode timing.
20. The scanning mirror display system of claim 19, wherein the first codebook uses a first bit length for encoding the second derivative, and wherein the second codebook uses a second bit length for encoding the second derivative, the second bit length being greater than the first bit length.
Citation Information
Patent Citations
Synchronizing scanning display with video
US20190373140A1