[vlc-devel] [vlc-commits] commit: Fix playback of RealVideo with B frames ( pts were not calculated properly) (Gildas Bazin )

xxcv xxcv07 at gmail.com
Fri Sep 24 00:43:44 CEST 2010


Hi,
On 24/09/2010 8:02 AM, git at videolan.org wrote:
> 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)
Does anyone know this should fix the RealVideo choppy video output?
Hey :) long time no see~
>
>> 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 */
>


Thanks
-- 
My VLC, My Way, My Style~

|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination



More information about the vlc-devel mailing list