<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 11 (filtered)">
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 69.6pt 2.0cm 69.6pt;}
div.Section1
        {page:Section1;}
-->
</style>
</head>
<body lang=DE link=blue vlink=purple>
<div class=Section1>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'>Hello everyone,</span></font></p>
<p class=MsoPlainText><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;color:navy'> </span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'>Concerning “error
concealment”:</span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'>I think the terms “error
concealment” and “error robustness” are mixed up a little bit
in many discussions. In the case of slices it’s more “error
robustness” in a sense that a decoder can better handle errors in a
bitstream. Here, destroyed areas in a video-frame (due to packet-loss) get
SMALLER. The fact that they are smaller also leads to more possibilities for
concealment. </span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'>let me shortly explain
why I think slices are „good“:</span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'>In general, if ANY error occurred
in the bitstream, the decoder will lose sync. To regain sync again THE ONLY
POSSIBILITY is to search for the next header structure in the bitstream. If no
slices are present this header will be the next frame-header. The consequence
is: the decoder will lose the complete rest of the frame which might correspond
to many network-packets. Even worse, if the error-rate is high enough, that a
packet-loss occurs on average in every frame, than the decoder will (almost)
never be able to decode the bottom parts of the video. And don’t be missleaded
here, for instance in mobile applications this is very well possible. You only
have to have a large distance to you base-station and and you will experience a
lot of packet-losses. </span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'>Slices are constructed in
a way, that each slice is independently decodable. So, if for instance every
slice corresponds to 1 row of macroblocks, only 16 lines in a video-frame would
be missing if a slice got lost. These 16 lines can easily be CONCEALD (most
simple) by putting the content of the last frame into the current frame. Also
some estimated motion could be used to replace the missing parts by some
content of the last frame…</span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoPlainText><font size=2 color=navy face=Arial><span lang=EN-GB
style='font-size:10.0pt;font-family:Arial;color:navy'>Maybe this group was not
so much aware of the problems that occur in error prone environments, but I
tell you: error resilience is an important area!! As a consequence I would
propose to reintroduce the concept of slices into x264 and handle it independently
of threading. </span></font></p>
<p class=MsoPlainText><font size=2 color=blue face="Courier New"><span
lang=EN-GB style='font-size:10.0pt;color:blue'> </span></font></p>
<p class=MsoPlainText><font size=2 color=navy face="Courier New"><span
lang=EN-GB style='font-size:10.0pt;color:navy'>Regards, </span></font></p>
<p class=MsoPlainText><font size=2 color=navy face="Courier New"><span
lang=EN-GB style='font-size:10.0pt;color:navy'> Peter</span></font></p>
<p class=MsoPlainText><font size=2 color=navy face="Courier New"><span
lang=EN-GB style='font-size:10.0pt;color:navy'> </span></font></p>
<p class=MsoPlainText><font size=2 color=blue face="Courier New"><span
lang=EN-GB style='font-size:10.0pt;color:blue'> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> -----Ursprüngliche Nachricht-----</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Von: Guillaume Poirier [mailto:gpoirier@mplayerhq.hu]</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Gesendet: Mittwoch, 17. Januar 2007 10:39</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> An: x264-devel@videolan.org</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Betreff: [x264-devel] Re: Slices in x264</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Hi Måns,</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Måns Rullgård wrote:</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > Guillaume Poirier <gpoirier@mplayerhq.hu> writes:</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> ></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> ></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>Hi,</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>List, Peter wrote:</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>Hello everyone,</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>I am new to this group although experienced with
H.264. I tried to use</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>the x264 encoder to prepare sequences for an
error-resilience test.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>I was very surprised, when I discovered, that x264 CAN
NOT produce</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>slices! Slices are the basic tool to cope with
packet-losses over</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>IP-based networks (without retransmission), and in
fact can make a huge</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>difference for subjective quality, in particular at
high loss-rates.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>Very basic indeed. _I_ think it's better to add more
advanced parity</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>(which allow the errors to be recovered) infos somewhere
in the</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>transport layer stream than using slices.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> ></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> ></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > Using error correcting coding at the transmission layer
substantially</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > increases the bitrate. With slices a transmission error will
ruin the</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > rest of the slice, while other slices still decode properly.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > Sometimes a little damage here and there is acceptable if it
means you</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > can keep the bitrate down. Besides, you don't always have
control</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > over the transmission encoding.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> ></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > Put another way, slices limit the scope of the damage caused
by</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > whatever transmission errors make it through your error
correction</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > layers.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> ></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > Anyone who has watched digital TV should appreciate the
usefulness of</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > slices.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Mmmm. I guess I did not understand what "error
concealment" meant. My</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> dictionary translates it to "dissimulation des erreurs"
which more or</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> less translates back in English as "error hiding", which
by my book</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> means that if an error occurs, it doesn't show, up to a certain
amount</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> of errors you can't recover.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> As far as I understand, slices don't allow that, that's why I
thought</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> that better error correction blocks was the solution.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> But now that I understand what "error concealment"
means, and I see</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> that slices seem like the right tool for that job.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Sorry for the trouble. I'm learning smth new every day :-)</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>Did I miss something here, or is it true that x264 can
only produce 1</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>>slice per frame???</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>It used until r609 to but it was replaced by a much better
and faster</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> >>multi-threaded encoding mode.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> ></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> ></span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > Multithreaded encoding and slices are really distinct
features.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> > Slices may be desired, as the OP says, with or without
multithreading.</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Loren, Out of curiosity, did you remove sliced encoding support</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> because it was too deeply "interleaved" with
multi-threaded support,</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> so your new multi-threaded encoding mode had to make sliced
encoding</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> go away? Or are there other reasons?</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> Guillaume</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> </span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> --</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> This is the x264-devel mailing-list</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>> To unsubscribe, go to: http://developers.videolan.org/lists.html</span></font></p>
<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'> </span></font></p>
</div>
</body>
</html>