[vlc-commits] commit: Fix playback of RealVideo with B frames ( pts were not calculated properly) (Gildas Bazin )
git at videolan.org
git at videolan.org
Fri Sep 24 00:02:16 CEST 2010
vlc | branch: master | Gildas Bazin <gbazin at videolan.org> | Thu Sep 23 22:22:39 2010 +0100| [f3ad50e8a846bd4de3c36a31bae26c1042b52c7c] | committer: Gildas Bazin
Fix playback of RealVideo with B frames (pts were not calculated properly)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f3ad50e8a846bd4de3c36a31bae26c1042b52c7c
---
modules/codec/avcodec/video.c | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index 9313dca..4e3904b 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -619,6 +619,12 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
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 )
@@ -632,6 +638,15 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
!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
{
@@ -707,12 +722,6 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
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 */
More information about the vlc-commits
mailing list