[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