<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="generator" content="pandoc" />
  <title></title>
  <style type="text/css">code{white-space: pre;}</style>
</head>
<body>
<p>Hi Francois,</p>
<p>On 2017-03-22 12:17, Francois Cartegnie wrote:</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> packetizer: h264: set duration also using frame rate</code></pre>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<h3 id="httpgit.videolan.orggitweb.cgivlc.gitacommith98e83f7796b56960ad916f6ab76b5b4dd591ce90">http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=98e83f7796b56960ad916f6ab76b5b4dd591ce90</h3>
</blockquote>
<pre><code>  modules/packetizer/h264.c | 21 +++++++++++++++------
  1 file changed, 15 insertions(+), 6 deletions(-)

 diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c
 index 043e3ce..b0496c5 100644
 --- a/modules/packetizer/h264.c
 +++ b/modules/packetizer/h264.c
 @@ -764,12 +764,6 @@ static block_t *OutputPicture( decoder_t *p_dec )
          }
      }

 -    if( p_sps->vui.i_time_scale && p_pic->i_length == 0 )
 -    {
 -        p_pic->i_length = CLOCK_FREQ * i_num_clock_ts *
 -                          p_sps->vui.i_num_units_in_tick / p_sps->vui.i_time_scale;
 -    }
 -
      if( p_sps->frame_mbs_only_flag == 0 && p_sps->vui.b_pic_struct_present_flag )
      {
          switch( p_sys->i_pic_struct )
 @@ -849,6 +843,21 @@ static block_t *OutputPicture( decoder_t *p_dec )
          p_sys->prevdatedpoc.num = PictureOrderCount;
      }

 +    if( p_pic->i_length == 0 )
 +    {
 +        if( p_sps->vui.i_time_scale )
 +        {
 +            p_pic->i_length = CLOCK_FREQ * i_num_clock_ts *
 +                              p_sps->vui.i_num_units_in_tick / p_sps->vui.i_time_scale;</code></pre>
</blockquote>
<p>I cannot see how the above is valid if <code>p_sps->vui.b_fixed_frame_rate == 0</code>, as such I propose the attached patch as a fixup. I would however be happy to stand corrected as learning something new is always welcomed.</p>
<p>As a disclaimer my knowledge of <code>h264</code> is solely based on reading the patches that get merged into the codebase, so I am by definition out on very thin ice when it comes to corrections. In other words, I apologize if the stated is so inaccurate that a someone with more extensive knowledge would have a tear running down their cheek.</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> +        }
 +        else
 +        {
 +            date_t next = p_sys->dts;
 +            date_Increment( &next, i_num_clock_ts );
 +            p_pic->i_length = date_Get( &next ) - date_Get( &p_sys->dts );
 +        }
 +    }
 +
  #if 0
      msg_Err(p_dec, "F/BOC %d/%d POC %d %s ref%d fn %d fp %d %d pts %ld",
                      tFOC, bFOC, PictureOrderCount,</code></pre>
</blockquote>
<p>Best Regards,<br />
Filip Roséen</p>
</body>
</html>