[FFmpeg-devel] [PATCH] VC1 VDPAU: Mark missing reference frames as such.

Michael Niedermayer michaelni at gmx.at
Tue Oct 1 03:15:09 CEST 2013


On Sat, Sep 28, 2013 at 11:13:35AM +0200, Reimar Döffinger wrote:
> Currently the code passes some nonsense values as
> references instead, causing corruption with NVidia's
> and assertion failures with Mesa's implementation.
> For non-corrupted input this mostly happens in
> interlaced bitstreams, e.g.
> http://samples.mplayerhq.hu/V-codecs/WMV9/interlaced/480i30__codec_WVC1__mode_2__framerate_29.970__type_2__preproc_17.wmv.
> The != VDP_INVALID handle assert does not trigger
> (and probably is quite nonsense) because the frames
> are initialized to 0.
> 
> Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
> ---
>  libavcodec/vdpau_vc1.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavcodec/vdpau_vc1.c b/libavcodec/vdpau_vc1.c
> index 272b2d9..c6e3343 100644
> --- a/libavcodec/vdpau_vc1.c
> +++ b/libavcodec/vdpau_vc1.c
> @@ -44,14 +44,18 @@ static int vdpau_vc1_start_frame(AVCodecContext *avctx,
>  
>      switch (s->pict_type) {
>      case AV_PICTURE_TYPE_B:
> +        if (s->next_picture_ptr) {
>          ref = ff_vdpau_get_surface_id(&s->next_picture);
>          assert(ref != VDP_INVALID_HANDLE);
>          info->backward_reference = ref;
> +        }
>          /* fall-through */
>      case AV_PICTURE_TYPE_P:
> +        if (s->last_picture_ptr) {

vc1 contains quite a few NULL checks on srcy/uv, that is
picture.f.data[0]
dunno if that can be used here too

[..]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Asymptotically faster algorithms should always be preferred if you have
asymptotical amounts of data
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20131001/89a2df89/attachment.asc>


More information about the ffmpeg-devel mailing list