Display Stream Compression: Difference between revisions

Content deleted Content added
created a "history" section of article and put the history into it
Added citations and DSC 1.2b info
(20 intermediate revisions by 11 users not shown)
Line 9:
| caption =
| organization = [[VESA]]
| related_standards = [[HDMI]], [[Display PortDisplayPort]]
| year_started = 2013
| website = {{URL|https://vesa.org/vesa-display-compression-codecs/dsc/}}
}}
 
'''Display Stream Compression''' ('''DSC''') is a [[Video Electronics Standards Association|VESA]]-developed [[video compression]] algorithm designed to enable increased display resolutions and frame rates over existing physical interfaces, and make devices smaller and lighter, with longer battery life.<ref name=DSC>{{cite press release |url=https://www.vesa.org/news/vesa-finalizes-requirements-for-display-stream-compression-standard/ |title=VESA Finalizes Requirements for Display Stream Compression Standard |publisher=VESA |date=24 January 2013 |access-date=20 March 2018 |archive-url=https://web.archive.org/web/20180321130439/https://www.vesa.org/news/vesa-finalizes-requirements-for-display-stream-compression-standard/ |archive-date=21 March 2018 |url-status=dead }}</ref> It is a low-latency algorithm based on [[delta modulation|delta PCM]] coding and [[YCoCg|YC{{sub|G}}C{{sub|O}}-R]] color space.<ref name=DSC /><ref name=vesa-etp200>{{cite web |url=http://www.vesa.org/wp-content/uploads/2014/04/VESA_DSC-ETP200.pdf |title=VESA Display Stream Compression |last1=Walls |first1=Frederick |last2=MacInni |first2=Sandy|date=3 March 2014 |publisher=VESA}}</ref>
 
== Effect ==
It is a low-latency algorithm based on [[delta modulation|delta PCM]] coding and [[YCoCg|YC{{sub|G}}C{{sub|O}}-R]] color space.<ref name=DSC /><ref name=vesa-etp200>{{cite web |url=http://www.vesa.org/wp-content/uploads/2014/04/VESA_DSC-ETP200.pdf |title=VESA Display Stream Compression |last1=Walls |first1=Frederick |last2=MacInni |first2=Sandy|date=3 March 2014 |publisher=VESA}}</ref> Although DSC is not mathematically [[LossyLossless compression|lossylossless]], it meets the ISO/IEC 29170 standard for "[[visually lossless]]" compression, a form of compression in which "the user cannot tell the difference between a compressed and uncompressed image".<ref>{{cite journal |last1=Walls |first1=Frederick |last2=MacInnis |first2=Alexander Sandy |title=27.4L: Late-News Paper : VESA Display Stream Compression: An Overview |journal=SID Symposium Digest of Technical Papers |date=June 2014 |volume=45 |issue=1 |pages=360–363 |doi=10.1002/j.2168-0159.2014.tb00097.x}}</ref> ISO 29170 more specifically defines an algorithm as visually lossless "when all the observers fail to correctly identify the reference image more than 75% of the trials".<ref name=ISO29170>{{cite web |title=ISO/IEC 29170-2:2015 — Information technology — Advanced image coding and evaluation — Part 2: Evaluation procedure for nearly lossless coding |url=https://www.iso.org/standard/66094.html |website=iso.org |publisher=[[ISO|International Organization for Standardization (ISO)]] |ref=ISO29170 |___location=Geneva, Switzerland |format=PDF |date=August 2015}}</ref>{{rp|18}} However, the standard allows for images that "exhibit particularly strong artefactsartifacts" to be disregarded or excluded from testing, such as engineered test images.<ref name=ISO29170 />{{rp|13,18}} Research of DSC using the ISO/IEC 29170 interleaved protocol, in which an uncompressed reference image is presented side by side with a rapidly alternating sequence of the compressed test image and uncompressed reference image,<ref name=ISO29170 />{{rp|10}} and performed with various types of images (such as people, natural and man-made scenery, text, and known challenging imagery) shows that in most images DSC satisfies the standard's criterion for visually lossless performance, although in some trials participants were able to detect the presence of compression on certain images.<ref name="Sudhama">{{cite journal |last1=Sudhama |first1=Aishwarya |last2=Cutone |first2=Matthew |last3=Hou |first3=Yuqian |last4=Goel |first4=James |last5=Dale |first5=Stolitzka |last6=Jacobson |first6=Natan |last7=Allison |first7=Robert |last8=Wilcox |first8=Laurie |title=Visually Lossless Compression of High Dynamic Range Images: A Large-Scale Evaluation |journal=SID Symposium Digest of Technical Papers |date=May 2018 |volume=49 |issue=1 |pages=1151–1154 |doi=10.1002/sdtp.12106 |url=https://static1.squarespace.com/static/565e05cee4b01c87068e7984/t/6000baf6782fa205430dc4b6/1610660599845/Sudhama_Allison_Wilcox_2018SID.pdf |access-date=4 March 2021}}</ref><ref name="Mohona">{{cite journalbook |last1=Mohona |first1=Sanjida |last2=Au |first2=Domenic |last3=Kio |first3=Onoise |last4=Robinson |first4=Richard |last5=Hou |first5=Yuqian |last6=Wilcox |first6=Laurie |last7=Allison |first7=Robert |title=Subjective2020 AssessmentTwelfth ofInternational StereoscopicConference Imageon Quality: The Impact of VisuallyMultimedia LosslessExperience Compression(QoMEX) |journalchapter=2020Subjective TwelfthAssessment Internationalof ConferenceStereoscopic onImage Quality: The Impact of MultimediaVisually ExperienceLossless (QoMEX)Compression |date=May 2020 |pages=1–6 |doi=10.1109/QoMEX48832.2020.9123129 |url=https://ieeexplore.ieee.org/document/9123129 |access-date=4 March 2021 |___location=Athlone, Ireland|isbn=978-1-7281-5965-2 |s2cid=220073001 }}</ref>
 
== Algorithm ==
DSC compression works on a horizontal line of pixels encoded using groups of three consecutive pixels for native 4:4:4 and simple 4:2:2 formats, or six pixels (three compressed containers) for native 4:2:2 and 4:2:0 formats. If RGB encoding is used, it is first converted to reversible YC{{sub|G}}C{{sub|O}}. Simple conversion from 4:2:2 to 4:4:4 can add missing chroma samples by interpolating neighboring pixels. Each luma component is coded separately using three independent substreams (four substreams in native 4:2:2 mode). Prediction step is performed using one of the three modes: modified median adaptive coding (MMAP) algorithm similar to the one used by [[JPEG-LS]], block prediction (optional for decoders due to high computational complexity, negotiated at DSC handshake), and midpoint prediction. Bit rate control algorithm tracks color flatness and buffer fullness to adjust the quantization bit depth for a pixel group in a way that minimizes compression artifacts while staying within the bitrate limits. Repeating recent pixels can be stored in 32-entry Indexed Color History (ICH) buffer, which can be referenced directly by each group in a slice; this improves compression quality of computer-generated images. Alternatively, prediction residuals are computed and encoded with [[entropy coding]] algorithm based on delta size unit-variable length coding (DSU-VLC). Encoded pixel groups are then combined into slices of various height and width; common combinations include 100% or 25% picture width, and 8-, 32-, or 108-line height.
DSC compression works on a horizontal line of pixels encoded using groups of three consecutive pixels for native 4:4:4 and simple 4:2:2 formats, or six pixels (three compressed containers) for native 4:2:2 and 4:2:0 formats.<ref name="dsc12a">{{cite web |title=VESA Display Stream Compression (DSC) Standard Version 1.2a [VESA-DSC-1.2a.pdf] |url=https://glenwing.github.io/docs/VESA-DSC-1.2a.pdf |date=18 January 2017}}</ref>
* Preprocessing:
** If RGB encoding is used, it is first converted to reversible [[YCgCo|YC{{sub|G}}C{{sub|O}}]].
** If "simple 4:2:2" is used, it is converted to 4:4:4 by adding missing chroma samples through interpolating neighboring pixels.
* Each component (1 luma, 2 chroma) is coded separately using three independent substreams (four substreams in native 4:2:2 mode). Prediction step is performed using one of the three modes: modified median adaptive coding (MMAP) algorithm similar to the one used by [[JPEG-LS]], block prediction (optional for decoders due to high computational complexity, negotiated at DSC handshake), and midpoint prediction.
* Bit rate control algorithm tracks color flatness and buffer fullness to adjust the quantization bit depth for a pixel group in a way that minimizes compression artifacts while staying within the bitrate limits.
** DSC can work in constant or variable bitrate mode. The minimum allowed bits-per-pixel (BPP) is 6&nbsp;bit/px;<ref name="dsc12a"/>{{rp|52}} the typical BPP given on VESA's website is 8&nbsp;bit/px.<ref name="VESA Codecs"/> The variable-bitrate is actually a way to temporarily disable the display link;<ref name="dsc12a"/>{{rp|125}} it only adds the possibility of choosing 0&nbsp;bit/px.<ref name="dsc12a"/>{{rp|41}}
* Repeating recent pixels can be stored in 32-entry Indexed Color History (ICH) buffer, which can be referenced directly by each group in a slice; this improves compression quality of computer-generated images. Alternatively, prediction residuals are computed and encoded with [[entropy coding]] algorithm based on delta size unit-variable length coding (DSU-VLC).
* Encoded pixel groups are then combined into slices of various height and width; common combinations include 100% or 25% picture width, and 8-, 32-, or 108-line height.
 
A modified version of DSC, ''VDC-M'', is used in [[Display Serial Interface|DSI-2]]. It allows for more compression at 6&nbsp;bit/px at the cost of higher algorithmic complexity.<ref name="VESA Codecs">{{cite web |title=VESA Display Compression Codecs |url=https://vesa.org/vesa-display-compression-codecs/ |website=VESA - Interface Standards for The Display Industry}}</ref>
Line 26 ⟶ 36:
DSC version 1.0 was released on 10 March 2014, but was soon deprecated by DSC version 1.1 released on 1 August 2014. The DSC standard supports up to a {{ratio|3:1}} compression ratio (reducing the data stream to 8 bits per pixel) with constant or variable bit rate, RGB or [[YCbCr|{{YCbCr}}]] [[chroma subsampling|4:4:4]], 4:2:2, or 4:2:0 color format, and color depth of 6, 8, 10, or 12 bits per color component.
 
DSC version 1.2 was released on 27 January 2016 and is included in version 1.4 of the DisplayPort standard; DSC '''version 1.2a''' was released on 18 January 2017.<ref>https://app.box.com/s/vcocw3z73ta09txiskj7cnk6289j356b/file/203635076004</ref> The update includes native encoding of 4:2:2 and 4:2:0 formats in six-pixel containers, 14/16 bits per color, and minor modifications to the encoding algorithm. The specification for DSC '''version 1.2b''' was published on 12 August 2021,<ref>https://app.box.com/s/vcocw3z73ta09txiskj7cnk6289j356b/file/847125003356</ref> with [[VESA]]'s website claiming that DisplayPort 1.4a was the first iteration to take advantage of the new version.<ref>https://vesa.org/vesa-display-compression-codecs/dsc/</ref> However, conflicting information on the DisplayPort website claims 1.2a is still the newest version.<ref>https://www.displayport.org/faq/#tab-display-stream-compression-dsc</ref>
 
On 4 January 2017, [[HDMI 2.1]] was announced which supports up to [[10K resolution]] and uses DSC 1.2 for video that is higher than 8K resolution with 4:2:0 [[chroma subsampling]].<ref name=HDMI21PressRelease>{{cite news |url=http://www.hdmi.org/press/press_release.aspx?prid=145 |title=HDMI Forum announces version 2.1 of the HDMI specification |publisher=HDMI.org |date=2017-01-04 |access-date=2017-01-10 |archive-date=2017-01-08 |archive-url=https://web.archive.org/web/20170108081018/http://www.hdmi.org/press/press_release.aspx?prid=145 |url-status=dead }}</ref><ref name=HDMI21Introduction>{{cite news |url=http://www.hdmi.org/manufacturer/hdmi_2_1/index.aspx |title=Introducing HDMI 2.1 |publisher=HDMI.org |access-date=2017-01-10 |archive-date=6 January 2017 |archive-url=https://web.archive.org/web/20170106195344/http://www.hdmi.org/manufacturer/hdmi_2_1/index.aspx |url-status=dead }}</ref><ref name=HDMI21January2017Anandtech>{{cite news |url=http://www.anandtech.com/show/11003/hdmi-21-announced-8kp60-48gbps-cable |archive-url=https://web.archive.org/web/20170106100230/http://www.anandtech.com/show/11003/hdmi-21-announced-8kp60-48gbps-cable |url-status=dead |archive-date=January 6, 2017 |title=HDMI 2.1 Announced|author=Anton Shilov |publisher=Anandtech |date=2017-01-05 |access-date=2017-01-10}}</ref>
 
Using DSC with HBR3 transmission rates, DisplayPort{{nbsp}}1.4 can support 8K UHD ({{resx|7680|4320}}) at 60{{nbsp}}Hz or 4K UHD ({{resx|3840|2160}}) at 120240{{nbsp}}Hz with 30{{nbsp}}bit/px RGB color and HDR.<!-- These examples are sufficient; no need to make a large list of additional formats here. A large list can already be found in the "refresh frequency limits" table later. --> 4K at 6096{{nbsp}}Hz 30{{nbsp}}bit/px RGB/HDR can be achieved without the need for DSC. On displays which do not support DSC, the maximum limits are unchanged from DisplayPort{{nbsp}}1.3 (4K 120{{nbsp}}Hz, 5K 60{{nbsp}}Hz, 8K 30{{nbsp}}Hz).<ref>{{Cite web|url=http://www.nextpowerup.com/news/26775/next-displayport-can-drive-8k-hdr-monitors/|title=Next DisplayPort Can Drive 8K HDR Monitors|website=NextPowerUp|access-date=2016-03-04|archive-url=https://web.archive.org/web/20161227131148/http://www.nextpowerup.com/news/26775/next-displayport-can-drive-8k-hdr-monitors/|archive-date=27 December 2016|url-status=dead}}</ref> <!-- need to move this out of history section into a more appropriate section -->
 
DisplayPort version 1.4a was published in April 2018.<ref name="DP 1.4a FAQ">{{cite web |title=FAQ{{Snd}} DisplayPort |url=https://www.displayport.org/faq/ |archive-url=https://web.archive.org/web/20181224123542/https://www.displayport.org/faq/ |archive-date=24 December 2018}}</ref> VESA made no official press release for this version. It updated DisplayPort's DSC implementation from DSC 1.2 to 1.2a.<ref name="DSC Display Stream Compression">{{cite web |title=DSC Display Stream Compression |url=https://vesa.org/vesa-display-compression-codecs/dsc/ |archive-url=https://web.archive.org/web/20190710163312/https://vesa.org/vesa-display-compression-codecs/dsc/|archive-date=10 July 2019}}</ref>
 
HDMI 2.1, which can also use DSC 1.2, is also capable of 8K up to 120 Hz with HDR.
 
== References ==