[mythtv-users] Re: FreeBSD, Was: Third Attempt At Installing MythTV

Carl Fongheiser carlfongheiser at gmail.com
Sat May 7 15:49:35 UTC 2005


> Thank you, however I started there and came across two problems.  First
> and foremost was that my system wasn't stable on that setup.  The second
> is the port files build MythTV 0.17 which has some bug regarding
> daylight savings time, making everything in the guide one hour off.
> Google searches showed the problem was resolved in 0.18.  I tried to
> compile 0.18 on my own but kept getting errors.  I don't recall exactly
> but I think the errors had something to do with paths on FreeBSD not as
> expected.  Obviously someone with more skills and knowledge than I could
> have worked around those.  But at that point I decided to try a Linux
> distro as that's what Myth was written for.

There is a minor problem building MythTV 0.18 on FreeBSD, but nothing horrible.
If you edit libs/libmyth/DisplayResX.cpp, and add:

#include <sys/types.h>

to the top, it will build fine.

There's another problem you'll run into if you are using a FreeBSD box
as a frontend for another box that records in NuppelVideo or MPEG4
format.  Basically, the automatic array allocation in the MP3 decoder
thread exceeds the thread's stack limit. Here's a patch for that
(ignore the timestamps, BTW; I had to shuffle some files around to
make the diff):

--- libs/libmythtv/nuppeldecoder.cpp.orig       Sat May  7 10:45:07 2005
+++ libs/libmythtv/nuppeldecoder.cpp    Sat May  7 10:46:08 2005
@@ -1055,8 +1055,8 @@
                     StoreRawData(strm);
 
                 int lameret = 0;
-                short int pcmlbuffer[audio_samplerate * 4];
-                short int pcmrbuffer[audio_samplerate * 4];
+               short int *pcmlbuffer = new short int[audio_samplerate * 4];
+               short int *pcmrbuffer = new short int[audio_samplerate * 4];
                 int packetlen = frameheader.packetlength;
 
                 do
@@ -1073,10 +1073,14 @@
                     {
                         VERBOSE(VB_IMPORTANT, QString("lame decode
error: %1, exiting").arg(lameret));
                         errored = true;
+                       delete [] pcmlbuffer;
+                       delete [] pcmrbuffer;
                         return false;
                     }
                     packetlen = 0;
                 } while (lameret > 0);
+               delete [] pcmlbuffer;
+               delete [] pcmrbuffer;
             }
             else
             {



Carl Fongheiser


More information about the mythtv-users mailing list