[MPlayer-dev-eng] [BUG] bug in vo_png?

Arpi arpi at thot.banki.hu
Tue May 14 00:40:58 CEST 2002


Hi,

> > and iyuv==i420==yv12 in the viewpoint of mplayer code
> > so remove all not only 1 of 3
> > but do not remove all, rather fix them or at leats debug why does it crash
> 
> Well, I'm not sure exactly what the right thing to do is.
> Here's a series of changes to vo_png and the errors they produce.
> 
> First, using mplayer -vo png i263.avi we get things like this:
> http://joey.yunamusic.com/mplayer/bad_color.png  (the sky should be blue)
> 
> So, I assume that the colorspace conversion inside the plugin is bad,
> and make this change to find out (forgive the non-attached patches):

try to remove this bad code:

  /* hack: swap planes for I420 ;) -- alex */
  if ((image_format == IMGFMT_IYUV) || (image_format == IMGFMT_I420))
  {
    uint8_t *src_i420[3];

    src_i420[0] = src[0];
    src_i420[1] = src[2];
    src_i420[2] = src[1];
    src = src_i420;
  }

it swaps U<->V while it shouldn't, according to DOCS/tech/colorspaces.txt

> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 1024 (LWP 18105)]
> 0x1001a9c5 in ?? () at eval.c:41
> 41      eval.c: No such file or directory.
> (gdb) bt
> #0  0x1001a9c5 in ?? () at eval.c:41
> Cannot access memory at address 0x0

it crashed inside the codec DLL.
maybe some memory alignment etc problem, somehow triggered by the 32->24
converter?

try to change this:
             image_data = malloc(image_width*image_height*3);
to:
             image_data = malloc(image_width*image_height*3+16);

afair Michael's 24bpp converters write a bit too much, pass the limits
it's workarounded in vfilter layer, it explains why does external csp
conversion work


A'rpi / Astral & ESP-team

--
Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu



More information about the MPlayer-dev-eng mailing list