FFMS / ffms2

An FFmpeg based source library and Avisynth/VapourSynth plugin for easy frame accurate access
Other
582 stars 105 forks source link

Compiling for x264 #228

Closed jpsdr closed 9 years ago

jpsdr commented 9 years ago

I've been wondering why only an old version from end of may 2013 (in fact i think it's rc2.18) was working with x264, when someone gave me an information. So you probably build ffms2 as static but this change [https://github.com/FFMS/ffms2/commit/7e11704ab32daffcd10c8e7f276d9e1ec147027e] in ffms.h broke linking. This __declspec(dllimport) thing shouldn't be defined during static linking.

qyot27 commented 9 years ago

The C-plugin has had that commit reverted for nearly 2 years: https://github.com/FFMS/ffms2/commit/40f7f61be6dccf0fd65c97f129ed675df4dc8cac

Rationale being, actually using the C-plugin meant building it as shared anyway, and as the revert message says, the change actually caused shared C-plugin builds to fail.

The side effect being that using the C-plugin branch to build a static library (which is mutually exclusive with the plugin wrappers; the plugin wrappers require --enable-shared and configure will error out if it's omitted) does work just like it always has.

It just sometimes lags behind in the latest commits because the C-plugin is updated on a per-pull basis, and I either wait a while for larger commit sets or for a slowdown in activity so there won't be a bunch of extraneous merge commits littering the git log.

jpsdr commented 9 years ago

Sorry... I don't realy follow precisely, my english is not bad, but here there is probably something i'm missing, because if commit have been reversed since two years, why in the the 2.21 stable release and also in the last git, it's like this :

// And now for some symbol hide-and-seek... if defined(_WIN32) // MSVC if defined(FFMS_EXPORTS) // building the FFMS2 library itself, with visible API symbols define FFMS_API(ret) FFMS_EXTERN_C declspec(dllexport) ret FFMS_CC define FFMS_DEPRECATED_API(ret) FFMS_EXTERN_C FFMS_DEPRECATED declspec(dllexport) ret FFMS_CC

If you've explained, sorry in advance, it means your explaination was what i don't totaly understood.

qyot27 commented 9 years ago

FFMS2 two active long-term branches: the master branch, which is the most visible and where all the official builds from the Releases section come from, and the _cplugin branch, which is updated less frequently (which I did explain above) and unless something big happens, mostly just merges from master. _cplugin is where the builds I supply on Doom9 come from (although the latest changes may only be in my personal repo at any given time).

Said commit was reverted in the _cplugin branch, but it remained intact in master.

When a user clones FFMS2's repo, the branch they're put on is master, so that commit is still there. If they switched to _cplugin (by issuing the command git checkout c_plugin), the commit would be treated as reverted.

jpsdr commented 9 years ago

Ok, now i've understand, thanks for the more detailed explaination. After, i think i can overcome the challenge of doing this myself by creating a branch from master on my PC with just this... ^_^.