continue;
}
+ /* Sanity check (seems to be needed for some streams) */
+ if( p_sys->p_ff_pic->pict_type == FF_B_TYPE )
+ {
+ p_sys->b_has_b_frames = true;
+ }
+
/* Compute the PTS */
mtime_t i_pts = VLC_TS_INVALID;
if( p_sys->p_ff_pic->reordered_opaque != INT64_MIN )
!p_sys->p_ff_pic->reference ||
p_sys->i_pts <= VLC_TS_INVALID )
i_pts = i_ts;
+
+ /* Guess what ? The rules are different for Real Video :( */
+ if( (p_dec->fmt_in.i_codec == VLC_CODEC_RV30 ||
+ p_dec->fmt_in.i_codec == VLC_CODEC_RV40) &&
+ p_sys->b_has_b_frames )
+ {
+ i_pts = VLC_TS_INVALID;
+ if(p_sys->p_ff_pic->reference) i_pts = i_ts;
+ }
}
else
{
decoder_LinkPicture( p_dec, p_pic );
}
- /* Sanity check (seems to be needed for some streams) */
- if( p_sys->p_ff_pic->pict_type == FF_B_TYPE )
- {
- p_sys->b_has_b_frames = true;
- }
-
if( !p_dec->fmt_in.video.i_sar_num || !p_dec->fmt_in.video.i_sar_den )
{
/* Fetch again the aspect ratio in case it changed */