{"id":13492,"date":"2022-10-04T16:17:26","date_gmt":"2022-10-04T14:17:26","guid":{"rendered":"https:\/\/www.linphone.org\/?post_type=actualites&#038;p=13492"},"modified":"2025-10-03T17:04:31","modified_gmt":"2025-10-03T15:04:31","slug":"error-correction-the-key-to-good-transmission","status":"publish","type":"actualites","link":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/","title":{"rendered":"Error correction, the key to good transmission"},"content":{"rendered":"<p>Our team is currently doing research and developing prototypes about the use of\u00a0<span style=\"color: #ff5e00;\"><strong>Forward Error Correction<\/strong><\/span>\u00a0for video transmissions.<\/p>\n<p><strong>Forward Error Correction (FEC)<\/strong>\u00a0[1] is a well-known technique for controlling errors in data transmission. In IP networks, errors actually translate into the loss of an entire UDP or TCP datagram, which is why\u00a0<strong>FEC<\/strong>\u00a0is also referred to as Forward Erasure Correction. The goal is then to be able to-recreate a lost packet, based on other transmitted packets and redundant information included in specific\u00a0<strong>FEC<\/strong>\u00a0packets.<\/p>\n<h2><span style=\"color: #ff5e00;\">Why are there packet losses?<\/span><\/h2>\n<p>Packet losses [2] are common in telecommunications due to the nature of transmissions: for example, a wireless network can be subject to radio frequency interference. Other causes of packet drops are temporary congestion occurring in routers.<\/p>\n<p>In the real world, it is common and usually acceptable to observe around a 1\u20122 % loss rate for many kinds of internet connectivity (xDSL, LTE, 5G, Wifi &#8230;).<\/p>\n<h2><span style=\"color: #ff5e00;\">Why are packet losses a problem?<\/span><\/h2>\n<p>In most situations of internet usage, packet losses are handled by the TCP protocol: the receiver acknowledges the received packets, and stops until the sender retransmits the lost packets.<\/p>\n<p>However, this technique is not applicable in the field of real-time communications, because it is not acceptable to stop the streaming until the retransmitted packets arrive.<\/p>\n<p>This is the reason why real-time audio and video streams are preferably transmitted over UDP protocol. Though application-level retransmissions can be implemented efficiently over UDP, they are often not suitable because of round-trip delays between the sender and receiver.<\/p>\n<p>Packet losses are well handled for audio streams thanks to Packet Loss Concealment (PLC), which makes them almost un-noticeable to the end users as long as the loss rate remains below 5%.<\/p>\n<p>However, they are far more complicated to handle for video data. Indeed, the nature of video coding means that a single loss within a video frame makes the whole frame un-decodable, and the next frames too, until a special frame called a &#8220;key-frame&#8221; is received. This is a consequence of the differential coding that is used for video compression.<\/p>\n<h2><span style=\"color: #ff5e00;\">How are packet losses handled in real-time video transmissions?<\/span><\/h2>\n<p>When a video receiver is observing a packet loss, it may notify the remote sender of the loss of information thanks to special RTCP packets (PLI &#8211; packet loss indication [3]), so that the sender can immediately generate a key-frame to let the receiver continue the rendering of the video sequence.<\/p>\n<p>This technique, which has been implemented in linphone for many years, has the drawback of freezing the video display until the said key-frame is received.<\/p>\n<p>For a medium quality video stream and with a 1% loss rate, the freeze events will not happen frequently.<\/p>\n<p>However, for a high quality (HD) video stream, the amount of data is so high that even a 0.5% loss rate will result in video freezing almost every second, causing a non-smooth, jerky effect for the end-user.<\/p>\n<h2><span style=\"color: #ff5e00;\">Why can FEC help?<\/span><\/h2>\n<p>FEC offers a solution to compensate the loss rates typically observed over the Internet. At the expense of a relatively low overhead and small latency, the redundancy information transmitted by the sender lets the receiver re-create the missing packets, as long as the loss rate remains compatible with the amount of redundancy sent by the encoder.<\/p>\n<p>As a result, video can be played smoothly, without any observable effect for the end-user.<\/p>\n<h2><span style=\"color: #ff5e00;\">How will this be handled in Linphone?<\/span><\/h2>\n<p>There are currently various FEC standard techniques and approaches documented at IETF.<\/p>\n<p>Our team has selected the Flexible Forward Error Correction scheme (flexfec) documented in RFC8627 [4], because it combines low-complexity redundancy coding (XOR based) with a high-level of flexibility for the FEC parameters, which is key to adjusting the redundancy overhead according to the observed loss rate and network bandwidth.<\/p>\n<p>The results look very\u00a0<strong>promising<\/strong>!<\/p>\n<p>We will be soon very pleased to announce a future release of linphone and linphone-sdk, incorporating an FEC algorithm for video transmission!<\/p>\n<p><span style=\"color: #ff5e00;\"><u><strong>Annex :<\/strong><\/u><\/span><\/p>\n<p>[1]\u00a0<span style=\"color: #ff5e00;\"><a style=\"color: #ff5e00;\" href=\"https:\/\/en.wikipedia.org\/wiki\/Error_correction_code#Forward_error_correction\">https:\/\/en.wikipedia.org\/wiki\/Error_correction_code#Forward_error_correc&#8230;<\/a><\/span><\/p>\n<p>[2]<span style=\"color: #ff5e00;\">\u00a0<a style=\"color: #ff5e00;\" href=\"https:\/\/en.wikipedia.org\/wiki\/Packet_loss\">https:\/\/en.wikipedia.org\/wiki\/Packet_loss<\/a><\/span><\/p>\n<p>[3]\u00a0<span style=\"color: #ff5e00;\"><a style=\"color: #ff5e00;\" href=\"https:\/\/en.wikipedia.org\/wiki\/Packet_loss_concealment\">https:\/\/en.wikipedia.org\/wiki\/Packet_loss_concealment<\/a><\/span><\/p>\n<p>[4]\u00a0<span style=\"color: #ff5e00;\"><a style=\"color: #ff5e00;\" href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc8627\">https:\/\/datatracker.ietf.org\/doc\/html\/rfc8627<\/a><\/span><\/p>\n","protected":false},"author":10,"featured_media":13493,"parent":0,"template":"","meta":{"_acf_changed":false,"inline_featured_image":false},"actualites-category":[42],"class_list":["post-13492","actualites","type-actualites","status-publish","has-post-thumbnail","hentry","actualites-category-tech"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.3.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Error correction, the key to good transmission - Linphone<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Error correction, the key to good transmission - Linphone\" \/>\n<meta property=\"og:description\" content=\"Our team is currently doing research and developing prototypes about the use of\u00a0Forward Error Correction\u00a0for video...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/\" \/>\n<meta property=\"og:site_name\" content=\"Linphone\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-03T15:04:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/linphone.gtec.pro\/wp-content\/uploads\/2024\/10\/correction_derreur_1128_x_500_px-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1128\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/\",\"url\":\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/\",\"name\":\"Error correction, the key to good transmission - Linphone\",\"isPartOf\":{\"@id\":\"https:\/\/linphone.gtec.pro\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/linphone.gtec.pro\/wp-content\/uploads\/2024\/10\/correction_derreur_1128_x_500_px-4.png\",\"datePublished\":\"2022-10-04T14:17:26+00:00\",\"dateModified\":\"2025-10-03T15:04:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#primaryimage\",\"url\":\"https:\/\/linphone.gtec.pro\/wp-content\/uploads\/2024\/10\/correction_derreur_1128_x_500_px-4.png\",\"contentUrl\":\"https:\/\/linphone.gtec.pro\/wp-content\/uploads\/2024\/10\/correction_derreur_1128_x_500_px-4.png\",\"width\":1128,\"height\":500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/linphone.gtec.pro\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Actualit\u00e9s\",\"item\":\"https:\/\/linphone.gtec.pro\/en\/actualites-archives\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Error correction, the key to good transmission\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/linphone.gtec.pro\/en\/#website\",\"url\":\"https:\/\/linphone.gtec.pro\/en\/\",\"name\":\"Linphone\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/linphone.gtec.pro\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Error correction, the key to good transmission - Linphone","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Error correction, the key to good transmission - Linphone","og_description":"Our team is currently doing research and developing prototypes about the use of\u00a0Forward Error Correction\u00a0for video...","og_url":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/","og_site_name":"Linphone","article_modified_time":"2025-10-03T15:04:31+00:00","og_image":[{"width":1128,"height":500,"url":"https:\/\/linphone.gtec.pro\/wp-content\/uploads\/2024\/10\/correction_derreur_1128_x_500_px-4.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/","url":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/","name":"Error correction, the key to good transmission - Linphone","isPartOf":{"@id":"https:\/\/linphone.gtec.pro\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#primaryimage"},"image":{"@id":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#primaryimage"},"thumbnailUrl":"https:\/\/linphone.gtec.pro\/wp-content\/uploads\/2024\/10\/correction_derreur_1128_x_500_px-4.png","datePublished":"2022-10-04T14:17:26+00:00","dateModified":"2025-10-03T15:04:31+00:00","breadcrumb":{"@id":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#primaryimage","url":"https:\/\/linphone.gtec.pro\/wp-content\/uploads\/2024\/10\/correction_derreur_1128_x_500_px-4.png","contentUrl":"https:\/\/linphone.gtec.pro\/wp-content\/uploads\/2024\/10\/correction_derreur_1128_x_500_px-4.png","width":1128,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/linphone.gtec.pro\/en\/news\/error-correction-the-key-to-good-transmission\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/linphone.gtec.pro\/en\/"},{"@type":"ListItem","position":2,"name":"Actualit\u00e9s","item":"https:\/\/linphone.gtec.pro\/en\/actualites-archives\/"},{"@type":"ListItem","position":3,"name":"Error correction, the key to good transmission"}]},{"@type":"WebSite","@id":"https:\/\/linphone.gtec.pro\/en\/#website","url":"https:\/\/linphone.gtec.pro\/en\/","name":"Linphone","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/linphone.gtec.pro\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/linphone.gtec.pro\/en\/wp-json\/wp\/v2\/actualites\/13492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linphone.gtec.pro\/en\/wp-json\/wp\/v2\/actualites"}],"about":[{"href":"https:\/\/linphone.gtec.pro\/en\/wp-json\/wp\/v2\/types\/actualites"}],"author":[{"embeddable":true,"href":"https:\/\/linphone.gtec.pro\/en\/wp-json\/wp\/v2\/users\/10"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linphone.gtec.pro\/en\/wp-json\/wp\/v2\/media\/13493"}],"wp:attachment":[{"href":"https:\/\/linphone.gtec.pro\/en\/wp-json\/wp\/v2\/media?parent=13492"}],"wp:term":[{"taxonomy":"actualites-category","embeddable":true,"href":"https:\/\/linphone.gtec.pro\/en\/wp-json\/wp\/v2\/actualites-category?post=13492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}