<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title></title>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
body {
margin: 5px 5px 5px 5px;
background-color: #ffffff;
}
/* ========== Text Styles ========== */
hr { color: #000000}
body, table /* Normal text */
{
font-size: 9pt;
font-family: 'Courier New';
font-style: normal;
font-weight: normal;
color: #000000;
text-decoration: none;
}
span.rvts1 /* Heading */
{
font-size: 10pt;
font-family: 'Arial';
font-weight: bold;
color: #0000ff;
}
span.rvts2 /* Subheading */
{
font-size: 10pt;
font-family: 'Arial';
font-weight: bold;
color: #000080;
}
span.rvts3 /* Keywords */
{
font-size: 10pt;
font-family: 'Arial';
font-style: italic;
color: #800000;
}
a.rvts4, span.rvts4 /* Jump 1 */
{
font-size: 10pt;
font-family: 'Arial';
color: #008000;
text-decoration: underline;
}
a.rvts5, span.rvts5 /* Jump 2 */
{
font-size: 10pt;
font-family: 'Arial';
color: #008000;
text-decoration: underline;
}
span.rvts6
{
font-size: 8pt;
font-family: 'arial';
font-style: italic;
color: #c0c0c0;
}
a.rvts7, span.rvts7
{
font-size: 8pt;
font-family: 'arial';
color: #0000ff;
text-decoration: underline;
}
/* ========== Para Styles ========== */
p,ul,ol /* Paragraph Style */
{
text-align: left;
text-indent: 0px;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
}
.rvps1 /* Centered */
{
text-align: center;
}
--></style>
</head>
<body>
<p>x264 crashs when encoding video that have height or width equal 32 (or height equal 16 + interlaced) and use b-frames. Crash occure in function 'x264_slicetype_frame_cost' at:</p>
<p><br></p>
<p> ...</p>
<p> if( b_intra_penalty )</p>
<p> {</p>
<p> // arbitrary penalty for I-blocks after B-frames</p>
<p> int nmb = (h->sps->i_mb_width - 2) * (h->sps->i_mb_height - 2);</p>
<p> i_score += i_score * frames[b]->i_intra_mbs[b-p0] / (nmb * 8); // <- division by zero</p>
<p> }</p>
<p> ...</p>
<p><br></p>
<p>Also if height or width will be equal 16 then this calculation will be incorrect ('nmb' will be negative). So all places in code that use 'sps->i_mb_width' or 'sps->i_mb_height' must be checked for errors when this variables are small.</p>
</body></html>