[mythtv] Building 0.20svn on MacOS x86? Change reverted

Todd Ignasiak ignasiak at gmail.com
Sat Jul 22 12:44:19 UTC 2006


On 7/20/06, Nigel Pearson <nigel at ind.tansu.com.au> wrote:
> > But, I can confirm that when it's set to NULL it crashes every time.
>
>         Is it possible for you to run it in GDB
> and type 'where' when it crashes?
> (even better if you have time to build a debug version)

I have been traveling for a few days, so I haven't had a chance to
check this yet.  But, I do have some crash dump info, that might help
a bit.  It's crashing in the quicktime libraries.  When initially
looking into it, I found that both vlc and mplayer experienced the
same crash on Intel machines.. so it doesn't seem to be unique to
MythTV (of course, with code sharing between projects, they could all
be related).

Thread 5 Crashed:
0   ...ickTimeComponents.component      0x98e0043d YUV420To2VUY_W1x + 671
1   ...ickTimeComponents.component      0x98de371a FinalGlueBeforeTheBlit + 1529
2   ...ickTimeComponents.component      0x98de7a5a PrepareForBlitThenDoBlit + 40
3   ...ickTimeComponents.component      0x98de4207
ScalingCodecComponentDispatch + 2437
4   ...ple.CoreServices.CarbonCore      0x90cc1638 CallComponentDispatch + 34
5   ...ickTimeComponents.component      0x995941c5 ImageCodecDrawBand + 43
6   ...ickTimeComponents.component      0x98c5ab6a
BaseCodec_DecompressWorkFunction + 1033
7   ...ple.CoreServices.CarbonCore      0x90ccd75b
InvokeComponentMPWorkFunctionUPP + 22
8   ...ickTimeComponents.component      0x98c58c6f
BaseCodec_DecompressCallBack_Common + 2713
9   ...ickTimeComponents.component      0x98c5c40c Base_CDBandDecompress + 5748
10  ...ple.CoreServices.CarbonCore      0x90cc1953
CallComponentFunctionCommon + 513
11  ...ickTimeComponents.component      0x98c56f41
Base_CDComponentDispatch + 125
12  ...ickTimeComponents.component      0x98de39e0
ScalingCodecComponentDispatch + 350
13  ...ickTimeComponents.component      0x98df6bf7
YUV420CodecComponentDispatch + 87
14  ...ple.CoreServices.CarbonCore      0x90cc1638 CallComponentDispatch + 34
15  com.apple.QuickTime                 0x94439b33 ImageCodecBandDecompress + 43
16  com.apple.QuickTime                 0x94427d8f DoBandedDecompress + 15359
17  com.apple.QuickTime                 0x94423dee ICMAction + 642
18  com.apple.QuickTime                 0x94422ae6 ICMDeviceLoop + 635
19  com.apple.QuickTime                 0x9442bc35
DecompressSequenceFrameWhen + 797

> > FYI - with the plain software routine, this is one of the major CPU
> > users.   I have looked around for some MMX code for this in other
> > projects, but didn't find any.
>
>         Yes, Jeremiah hand-coded this somehow.
> If you have a look in videoout_quartz.cpp:
>
>
>      if (data->yuvConverter)
>      {
>          // 2VUY data needs no header
>          data->pixelSize = width * height * 2;
>          data->pixmapSize = data->pixelSize;
>          data->pixmap = (PlanarPixmapInfoYUV420 *) new
> char[data->pixmapSize];
>          data->pixelData = data->pixmap;
>      }
>      else
>      {
>          // YUV420 uses a descriptive header
>          data->pixelSize = (width * height * 3) / 2;
>          data->pixmapSize = sizeof(PlanarPixmapInfoYUV420) +
> data->pixelSize;
>          data->pixmap = (PlanarPixmapInfoYUV420 *) new
> char[data->pixmapSize];
>          data->pixelData = &(data->pixmap[1]);
>
>          long offset = sizeof(PlanarPixmapInfoYUV420);
>          data->pixmap->componentInfoY.offset = offset;
>          data->pixmap->componentInfoY.rowBytes = width;
>
>          offset += width * height;
>          data->pixmap->componentInfoCb.offset = offset;
>          data->pixmap->componentInfoCb.rowBytes = width / 2;
>
>          offset += (width * height) / 4;
>          data->pixmap->componentInfoCr.offset = offset;
>          data->pixmap->componentInfoCr.rowBytes = width / 2;
>      }
> ...
>          if (data->yuvConverter)
>          {
>              int frameSize = frame->width * frame->height;
>              data->yuvConverter((uint8_t *)(data->pixelData),
>                                 frame->buf,
>                                 &frame->buf[frameSize],
>                                 &frame->buf[frameSize * 5 / 4],
>                                 frame->width, frame->height,
>                                 (frame->width % 2), (frame->width % 2),
> 0);
>          }
>          else
>              memcpy(data->pixelData, frame->buf, frame->size);
>
>
>
>
> you will see it does some stuffing around with offsets
> into a bitmap array. I suspect there is an endian issue
> in some of that math, but without a real Intel machine,
> it will be tedious to work this out.


More information about the mythtv-dev mailing list