After having compiled

So, I have some good news and some bad news.
1- I got past the the ffmpeg specific errors.

Then some bad news.
1- I had to modify my version of avcodec.h. Interrogate was having problems with a this bit of code int16_t (*motion_val[2])[2], which is actually part of the macro FF_COMMON_FRAME.
The following is the error that it kept giving.

        *** Error in /home/parto/works/panda3d_cvs_build/thirdparty/linux-libs-a/ffmpeg/include/libavcodec/avcodec.h near line 856, column 29:
        syntax error, unexpected '[', expecting ')'
Error parsing file: 'movies_composite.cxx'

If you need more information on this, let me know, but it may be that interrogate may need to be modified to manage such definitions if ffmpeg keeps the in their code. I had to use a typedef to break that up for it to work.

2- I ran into some other errors that I hope are not related to my meddling, and, hopefully you can point out the problem on my end and I’ll be OK.
Here’s the error log.

g++ -o built/bin/apply_patch -Lbuilt/lib -L/usr/X11R6/lib built/tmp/apply_patch_apply_patch.o -lpanda -lpandaexpress -lp3dtool -lp3dtoolconfig -lp3pystub "-lz" "-lssl" -lpthread -ldl
built/lib/libpanda.so: undefined reference to `sws_scale'
built/lib/libpanda.so: undefined reference to `BZ2_bzDecompress'
built/lib/libpanda.so: undefined reference to `sws_getContext'
built/lib/libpanda.so: undefined reference to `sws_freeContext'
built/lib/libpanda.so: undefined reference to `BZ2_bzDecompressInit'
built/lib/libpanda.so: undefined reference to `BZ2_bzDecompressEnd'
collect2: ld returned 1 exit status

Thanks a lot!

1 - I ran into similar problems when I compiled on Windows yesterday, and since interrogate has no business with these files, I just shadowed these files in parser-inc. The latest CVS makepanda and parser-inc dirs should take care of it, you might not have the latest one.

2 - That means libswscale isn’t getting linked into libpanda. My bad, apologies. Find this line in makepanda.py:

    if (PkgSkip("FFMPEG")==0):     LibName("FFMPEG", "-lavutil")

Add this line:

    if (PkgSkip("FFMPEG")==0):     LibName("FFMPEG", "-lswscale")

(I just checked this change to CVS also.)

Then, you need to remove at least built/lib/libpanda.so to force it to relink them.

These errors still remain. They have something to do with ffmpeg, I don’t know what, because when I compile with --no-ffmpeg, it compiles just fine.

built/lib/libpanda.so: undefined reference to `BZ2_bzDecompress'
built/lib/libpanda.so: undefined reference to `BZ2_bzDecompressInit'
built/lib/libpanda.so: undefined reference to `BZ2_bzDecompressEnd'

At which step? It sounds like you compiled ffmpeg with bzip2 support while Panda doesn’t link into bzip2.

You were right. As it turns out, ffmpeg auto-detects bzlib, so I had to compile with --disable-bzlib.
Interrogate threw no errors with the new headers either.

Finally, I can get down to business.

Aside
Is there any form of documentation on the browser plugin. I was to work on one but I’m thinking of simply using the one that’s currently in place.

The browser plugin doesn’t work yet on Linux, only on OSX and Windows.
Currently, it’s a lot of effort to get it working - but it can be done, if you’re determined.

Or, you can just wait until 1.7.0 which will probably contain a more useful version of the browser plugin.
Just develop your Panda app, and by the time it is finished, the browser plugin will be, too. :slight_smile:

The plugin is an integral part of our MVP.
I’m quite determined, let’s see if I can get it to work.

Thanks a lot. You’ve been of great help.

The browser plugin is very much an active work in progress. I’m checking in many changes every day. It will be done soon, but it’s certainly nothing like what I would call usable now.

If you want to play with what’s in the source tree as I develop it, you’re certainly welcome to do this; and you can follow along in the posts pro-rsoft has linked above.

If you want to duplicate my work and make a browser plugin of your own, you are certainly welcome to do that as well. Seems a little silly, though.

If you don’t want to start development using Panda until you can see a working browser plugin, then you might have at least a few weeks to wait.

But, if you want to take my word for it that it will be done and polished within a couple month’s time, you can start developing your application now and trust that it will run in a browser when you want it to.

David

I would still want to work with it at it’s current development status, all I need to know is how to compile, and have it running.

I can start testing and maybe even give you feed back, agile programming. Plus, I don’t mind the hustle because I was going to build one from scratch anyway.

I agree totally, in fact, I would like to make contributions to your project in the event I make any quantifiable improvements. I don’t believe in solving problems that have been solved.

We’re a sizable team, my work is to work on the plugin and there are other people working on the other parts. You might have heard of our development framework for Eden, currently in Alpha. We also have someone working on a runtime environment, we will be talking about these when we’re ready.

I will take your word, going by panda’s track record, I expect that to be soon enough. For now, we will take what we can get.

Thanks a lot. I’ll be talking to you in those other threads.

I compiled my own version of FFMPEG for the 3rdparties folder so I could compile the latest CVS checkout of Panda on Windows XP and got the following error.

link /nologo /NOD:MFC90.LIB /NOD:MFC80.LIB /NOD:LIBCI.LIB /NOD:MSVCRTD.LIB /DEBUG  /nod:libc /nod:libcmtd /nod:atlthunk /nod:atls /DLL /MAP:NUL  /FIXED:NO /OPT:REF /STACK:4194304 /INCREMENTAL:NO  /OUT:"built/bin/libpanda.dll" /IMPLIB:built/lib/libpanda.lib /LIBPATH:"thirdparty/win-python/libs" "built/tmp/panda_panda.obj" "built/tmp/libpanda_module.obj" "built/tmp/recorder_composite.obj" "built/tmp/librecorder_igate.obj" "built/tmp/pgraphnodes_composite1.obj" "built/tmp/pgraphnodes_composite2.obj" "built/tmp/libpgraphnodes_igate.obj" "built/tmp/pgraph_nodePath.obj" "built/tmp/pgraph_composite1.obj" "built/tmp/pgraph_composite2.obj" "built/tmp/pgraph_composite3.obj" "built/tmp/pgraph_composite4.obj" "built/tmp/libpgraph_igate.obj" "built/tmp/cull_composite.obj" "built/tmp/movies_composite1.obj" "built/tmp/libmovies_igate.obj" "built/tmp/grutil_multitexReducer.obj" "built/tmp/grutil_composite1.obj" "built/tmp/grutil_composite2.obj" "built/tmp/libgrutil_igate.obj" "built/tmp/chan_composite.obj" "built/tmp/libchan_igate.obj" "built/tmp/pstatclient_composite.obj" "built/tmp/libpstatclient_igate.obj" "built/tmp/char_composite.obj" "built/tmp/libchar_igate.obj" "built/tmp/collide_composite.obj" "built/tmp/libcollide_igate.obj" "built/tmp/device_composite.obj" "built/tmp/libdevice_igate.obj" "built/tmp/dgraph_composite.obj" "built/tmp/libdgraph_igate.obj" "built/tmp/display_composite.obj" "built/tmp/libdisplay_igate.obj" "built/tmp/pipeline_composite.obj" "built/tmp/pipeline_contextSwitch.obj" "built/tmp/libpipeline_igate.obj" "built/tmp/event_composite.obj" "built/tmp/libevent_igate.obj" "built/tmp/gobj_composite1.obj" "built/tmp/gobj_composite2.obj" "built/tmp/libgobj_igate.obj" "built/tmp/gsgbase_composite.obj" "built/tmp/libgsgbase_igate.obj" "built/tmp/linmath_composite.obj" "built/tmp/liblinmath_igate.obj" "built/tmp/mathutil_composite.obj" "built/tmp/libmathutil_igate.obj" "built/tmp/parametrics_composite.obj" "built/tmp/libparametrics_igate.obj" "built/tmp/pnmimagetypes_composite.obj" "built/tmp/pnmimage_composite.obj" "built/tmp/libpnmimage_igate.obj" "built/tmp/text_composite.obj" "built/tmp/libtext_igate.obj" "built/tmp/tform_composite.obj" "built/tmp/libtform_igate.obj" "built/tmp/lerp_composite.obj" "built/tmp/liblerp_igate.obj" "built/tmp/putil_composite1.obj" "built/tmp/putil_composite2.obj" "built/tmp/libputil_igate.obj" "built/tmp/audio_composite.obj" "built/tmp/libaudio_igate.obj" "built/tmp/pgui_composite.obj" "built/tmp/libpgui_igate.obj" "built/tmp/net_composite.obj" "built/tmp/libnet_igate.obj" "built/tmp/nativenet_composite.obj" "built/tmp/libnativenet_igate.obj" "built/tmp/pandabase_pandabase.obj" built/lib/libpandaexpress.lib built/lib/libp3dtoolconfig.lib built/lib/libp3dtool.lib "built/tmp/vrpn_composite.obj" "built/tmp/libvrpn_igate.obj" "built/tmp/pnmtext_composite.obj" "built/tmp/libpnmtext_igate.obj" "wsock32.lib" "ws2_32.lib" "user32.lib" "winmm.lib" "advapi32.lib" "strmiids.lib" "quartz.lib" "odbc32.lib" "odbccp32.lib" "thirdparty/win-libs-vc9/png/lib/libpandapng.lib" "thirdparty/win-libs-vc9/jpeg/lib/libpandajpeg.lib" "thirdparty/win-libs-vc9/tiff/lib/libpandatiff.lib" "thirdparty/win-libs-vc9/zlib/lib/libpandazlib1.lib" "thirdparty/win-libs-vc9/vrpn/lib/vrpn.lib" "thirdparty/win-libs-vc9/vrpn/lib/quat.lib" "thirdparty/win-libs-vc9/nvidiacg/lib/cg.lib" "thirdparty/win-libs-vc9/openssl/lib/libpandassl.lib" "thirdparty/win-libs-vc9/openssl/lib/libpandaeay.lib" "thirdparty/win-libs-vc9/freetype/lib/freetype.lib" "thirdparty/win-libs-vc9/fftw/lib/rfftw.lib" "thirdparty/win-libs-vc9/fftw/lib/fftw.lib" "thirdparty/win-libs-vc9/ffmpeg/lib/avcodec-51-panda.lib" "thirdparty/win-libs-vc9/ffmpeg/lib/avformat-50-panda.lib" "thirdparty/win-libs-vc9/ffmpeg/lib/avutil-49-panda.lib" "thirdparty/win-libs-vc9/artoolkit/lib/libAR.lib" "thirdparty/win-libs-vc9/squish/lib/squish.lib" "thirdparty/win-libs-vc9/opencv/lib/cv.lib" "thirdparty/win-libs-vc9/opencv/lib/highgui.lib" "thirdparty/win-libs-vc9/opencv/lib/cvaux.lib" "thirdparty/win-libs-vc9/opencv/lib/ml.lib" "thirdparty/win-libs-vc9/opencv/lib/cxcore.lib"
squish.lib(squish.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
   Creating library built/lib/libpanda.lib and object built/lib/libpanda.exp
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
movies_composite1.obj : error LNK2001: unresolved external symbol _av_free_packet
grutil_composite2.obj : error LNK2001: unresolved external symbol _av_free_packet
movies_composite1.obj : error LNK2001: unresolved external symbol _avcodec_decode_video2
grutil_composite2.obj : error LNK2001: unresolved external symbol _avcodec_decode_video2
movies_composite1.obj : error LNK2001: unresolved external symbol _avcodec_decode_audio3
movies_composite1.obj : error LNK2001: unresolved external symbol _av_init_packet
movies_composite1.obj : error LNK2001: unresolved external symbol _av_register_protocol
built/bin/libpanda.dll : fatal error LNK1120: 5 unresolved externals

I think I followed all the steps required to use FFMPEG with MSVC, but it seems that does not suffice for Panda. Is there something I could do to remedy this problem?

Err, I don’t know. For the Windows build, I’ve kept backward compatibility, because I didn’t get the latest version of FFMPEG working well there.
I only had to alter the include directory of ffmpeg, not the lib directory to make it work against the latest Panda source - e-mail me for the changes.