<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="IncrediMail 1.0" name=GENERATOR></HEAD>
<BODY style="BACKGROUND-POSITION: 0px 0px; FONT-SIZE: 12pt; MARGIN: 5px 10px 10px; FONT-FAMILY: Arial" bgColor=#ffffff background="" scroll=yes ORGYPOS="0">
<TABLE id=INCREDIMAINTABLE cellSpacing=0 cellPadding=2 width="100%" border=0>
<TBODY>
<TR>
<TD id=INCREDITEXTREGION style="FONT-SIZE: 12pt; CURSOR: auto; FONT-FAMILY: Arial" width="100%">
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV id=IncrediOriginalMessage><I>-------Original Message-------</I></DIV>
<DIV>&nbsp;</DIV>
<DIV id=receivestrings>
<DIV dir=ltr style="FONT-SIZE: 11pt" <i><B>From:</B></I> <A href="mailto:x264-devel@videolan.org">x264-devel@videolan.org</A></DIV>
<DIV dir=ltr style="FONT-SIZE: 11pt" <i><B>Date:</B></I> 01/17/07 07:41:30</DIV>
<DIV dir=ltr style="FONT-SIZE: 11pt" <i><B>To:</B></I> <A href="mailto:x264-devel@videolan.org">x264-devel@videolan.org</A></DIV>
<DIV dir=ltr style="FONT-SIZE: 11pt" <i><B>Subject:</B></I> [x264-devel] Re: AW: Re: Slices in x264</DIV></DIV>
<DIV>&nbsp;</DIV>
<DIV>On Wednesday 17 January 2007 12:30, List, Peter wrote:</DIV>
<DIV>&gt; &gt; -----Ursprüngliche Nachricht-----</DIV>
<DIV>&gt; &gt; Von: <A href="mailto:x264-devel-bounce@videolan.org">x264-devel-bounce@videolan.org</A> [mailto:x264-devel-</DIV>
<DIV>&gt; &gt; <A href="mailto:bounce@videolan.org">bounce@videolan.org</A>] Im Auftrag von Tobias Bergmann</DIV>
<DIV>&gt; &gt; Gesendet: Mittwoch, 17. Januar 2007 11:17</DIV>
<DIV>&gt; &gt; An: <A href="mailto:x264-devel@videolan.org">x264-devel@videolan.org</A></DIV>
<DIV>&gt; &gt; Betreff: [x264-devel] Re: Slices in x264</DIV>
<DIV>&gt; &gt;</DIV>
<DIV>&gt; &gt; Guillaume Poirier wrote:</DIV>
<DIV>&gt; &gt; &gt; Måns Rullgård wrote:</DIV>
<DIV>&gt; &gt; &gt;&gt; Guillaume Poirier &lt;<A href="mailto:gpoirier@mplayerhq.hu">gpoirier@mplayerhq.hu</A>&gt; writes:</DIV>
<DIV>&gt; &gt; &gt;&gt; Using error correcting coding at the transmission layer</DIV>
<DIV>&gt; &gt; &gt;&gt; substantially increases the bitrate.&nbsp;&nbsp;With slices a transmission</DIV>
<DIV>&gt; &gt; &gt;&gt; error will ruin the rest of the slice, while other slices still</DIV>
<DIV>&gt; &gt; &gt;&gt; decode properly. Sometimes a little damage here and there is</DIV>
<DIV>&gt; &gt; &gt;&gt; acceptable if it means you can keep the bitrate down.&nbsp;&nbsp;Besides, you</DIV>
<DIV>&gt; &gt; &gt;&gt; don't always have control over the transmission encoding.</DIV>
<DIV>&gt; &gt; &gt;&gt;</DIV>
<DIV>&gt; &gt; &gt;&gt; Put another way, slices limit the scope of the damage caused by</DIV>
<DIV>&gt; &gt; &gt;&gt; whatever transmission errors make it through your error correction</DIV>
<DIV>&gt; &gt; &gt;&gt; layers.</DIV>
<DIV>&gt; &gt; &gt;&gt;</DIV>
<DIV>&gt; &gt; &gt;&gt; Anyone who has watched digital TV should appreciate the usefulness</DIV>
<DIV>&gt; &gt; &gt;&gt; of slices.</DIV>
<DIV>&gt; &gt; &gt;</DIV>
<DIV>&gt; &gt; &gt; Mmmm. I guess I did not understand what "error concealment" meant. My</DIV>
<DIV>&gt; &gt; &gt; dictionary translates it to "dissimulation des erreurs" which more or</DIV>
<DIV>&gt; &gt; &gt; less translates back in English as "error hiding", which by my book</DIV>
<DIV>&gt; &gt; &gt; means that if an error occurs, it doesn't show, up to a certain</DIV>
<DIV>&gt; &gt; &gt; amount of errors you can't recover.</DIV>
<DIV>&gt; &gt; &gt;</DIV>
<DIV>&gt; &gt; &gt; As far as I understand, slices don't allow that, that's why I thought</DIV>
<DIV>&gt; &gt; &gt; that better error correction blocks was the solution.</DIV>
<DIV>&gt; &gt; &gt;</DIV>
<DIV>&gt; &gt; &gt; But now that I understand what "error concealment" means, and I see</DIV>
<DIV>&gt; &gt; &gt; that slices seem like the right tool for that job.</DIV>
<DIV>&gt; &gt; &gt;</DIV>
<DIV>&gt; &gt; &gt; Sorry for the trouble. I'm learning smth new every day :-)</DIV>
<DIV>&gt; &gt;</DIV>
<DIV>&gt; &gt; What slices support as-is is spatial "error containment". Together with</DIV>
<DIV>&gt; &gt; a defined I frame interval (or at least intra-mb interval) temporal</DIV>
<DIV>&gt; &gt; "error containment" is provided as well.</DIV>
<DIV>&gt; &gt;</DIV>
<DIV>&gt; &gt; If I get it right, the new method tries to "fix" parts of the broken</DIV>
<DIV>&gt; &gt; stream based on surrounding motion vectors. That could be called "error</DIV>
<DIV>&gt; &gt; concealment" but has nothing to do with slices.</DIV>
<DIV>&gt; &gt;</DIV>
<DIV>&gt; &gt; A better tool instead of slices is that completely coded macroblock</DIV>
<DIV>&gt; &gt; which resets the stream. It can be placed as often as needed depending</DIV>
<DIV>&gt; &gt; on current line quality (if there is a feedback on that).</DIV>
<DIV>&gt;</DIV>
<DIV>&gt; I guess by "completely coded" you mean Intra coded macroblocks. The</DIV>
<DIV>&gt; problem here is that artefacts due to bitstream errors usually get</DIV>
<DIV>&gt; smeared over the whole picture. In other words you can not fix one wrong</DIV>
<DIV>&gt; macroblock with one correct intra-macroblock. Errors DON'T get smeared</DIV>
<DIV>&gt; over slice boundaries though. An Intra-Slice once in a while DOES fix the</DIV>
<DIV>&gt; problem for that slice!</DIV>
<DIV>&nbsp;</DIV>
<DIV>Errors do get smeared over slice boundaries in subsequence pictures that use</DIV>
<DIV>the error picture for reference. There is no clause that states that motion</DIV>
<DIV>vectors cannot cross slice boundaries in the picture that they are</DIV>
<DIV>referencing. So to force update using an intra slice in any picture after</DIV>
<DIV>the next one in decoding order you need to determine how much the error</DIV>
<DIV>could have travelled. This gets quite complicated I would imagine.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Of course, you could design the encoder to use the same fixed arrangement of</DIV>
<DIV>slices in every picture and not cross those slice boundaries with motion</DIV>
<DIV>vectors. That would make the forced update as simple as you describe. But</DIV>
<DIV>you would lose the ability to create slices that fit efficiently into a</DIV>
<DIV>single network packet and you would lose some coding efficiency, possibly</DIV>
<DIV>quite a lot.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Cheers,</DIV>
<DIV>-Ryan</DIV>
<DIV>&nbsp;</DIV>
<DIV>--</DIV>
<DIV>This is the x264-devel mailing-list</DIV>
<DIV>To unsubscribe, go to: <A href="http://developers.videolan.org/lists.html">http://developers.videolan.org/lists.html</A></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>--</DIV>
<DIV>No virus found in this incoming message.</DIV>
<DIV>Checked by AVG.</DIV>
<DIV>Version: 7.5.433 / Virus Database: 268.16.13/632 - Release Date: 01/16/2007 4:36 PM</DIV>
<DIV>&nbsp;</DIV>
<DIV>.</DIV></TD></TR>
<TR>
<TD id=INCREDIFOOTER width="100%">
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width="100%"></TD>
<TD id=INCREDISOUND vAlign=bottom align=middle></TD>
<TD id=INCREDIANIM vAlign=bottom align=middle></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><SPAN id=IncrediStamp><SPAN dir=ltr><A href="http://www.incredimail.com/index.asp?id=54475"><IMG alt="Add FUN to your email - CLICK HERE!" hspace=0 src="http://www2.incredimail.com/contents/stamps/imstp_emo_en.gif" align=baseline border=0></A></SPAN></SPAN></BODY></HTML>