[vlc-commits] avcodec: log why picture is unsuitable for direct rendering
Rémi Denis-Courmont
git at videolan.org
Wed Jul 24 18:41:50 CEST 2013
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Jul 24 19:41:08 2013 +0300| [a8db64a589260aacdedace20ff7517f1561ec473] | committer: Rémi Denis-Courmont
avcodec: log why picture is unsuitable for direct rendering
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a8db64a589260aacdedace20ff7517f1561ec473
---
modules/codec/avcodec/video.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index 4c0dfd8..5f1931b 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -987,16 +987,33 @@ static picture_t *lavc_dr_GetFrame(struct AVCodecContext *ctx,
return NULL;
/* Check that the picture is suitable for libavcodec */
- if (pic->p[0].i_pitch < width * pic->p[0].i_pixel_pitch
- || pic->p[0].i_lines < height)
+ if (pic->p[0].i_pitch < width * pic->p[0].i_pixel_pitch)
+ {
+ msg_Dbg(dec, "plane 0: pitch too small (%d/%d*%d)",
+ pic->p[0].i_pitch, width, pic->p[0].i_pixel_pitch);
+ goto no_dr;
+ }
+
+ if (pic->p[0].i_lines < height)
+ {
+ msg_Dbg(dec, "plane 0: lines too few (%d/%d)",
+ pic->p[0].i_lines, height);
goto no_dr;
+ }
for (int i = 0; i < pic->i_planes; i++)
{
if (pic->p[i].i_pitch % aligns[i])
+ {
+ msg_Dbg(dec, "plane %d: pitch not aligned (%d%%%d)",
+ i, pic->p[i].i_pitch, aligns[i]);
goto no_dr;
+ }
if (((uintptr_t)pic->p[i].p_pixels) % aligns[i])
+ {
+ msg_Warn(dec, "plane %d not aligned", i);
goto no_dr;
+ }
}
/* Allocate buffer references */
More information about the vlc-commits
mailing list