Author Topic: Building for Windows  (Read 416 times)

nemach

  • Newbie
  • *
  • Posts: 5
Building for Windows
« on: March 25, 2020, 01:24:39 PM »
Hi - newbie question...

I'd like to do some scripted video editing with python and am missing the keyframe finding feature in the tinypy implementation mentioned here:
https://avidemux.org/smif/index.php/topic,18446.0.html

As a C/C++ dev, I'm quite happy to have a go at extending the functionality, but I'd like a few pointers for Windows development. Is there an up-to-date Wiki guide on how to build from scratch on Windows? I've tried to follow the mingw plug-in build instructions from the old wiki (https://www.avidemux.org/admWiki/doku.php?id=build:devel_2.6) but am getting link problems. Are the 2.7.5 Windows lib files compatible with mingw?

TBH, I'd prefer to use MSVC++ anyway - can a newer version than v.6 be used?

Apologies if this is all documented elsewhere - if so, please just point me in the right direction! If it really is pointless trying to build on Windows with newer versions, then I guess I can persevere with cross-compiling from a Ubuntu VM.

Neil

eumagga0x2a

  • Moderator
  • Hero Member
  • *****
  • Posts: 3948
Re: Building for Windows
« Reply #1 on: March 25, 2020, 01:45:40 PM »
Is there an up-to-date Wiki guide on how to build from scratch on Windows?

No, unfortunately not. I can't help either because I didn't manage to build Avidemux with Visual Studio 2017 ~ a year ago and didn't have time and impetus to give it a new try with Visual Studio 2019.

Quote
I've tried to follow the mingw plug-in build instructions from the old wiki (https://www.avidemux.org/admWiki/doku.php?id=build:devel_2.6) but am getting link problems. Are the 2.7.5 Windows lib files compatible with mingw?

No, you must use VC++. As long as you just work on plugins, https://www.avidemux.org/admWiki/doku.php?id=build:devel_2.6_msvc + https://avidemux.org/smif/index.php/topic,18849.msg87315.html#msg87315 should work, but you probably need a debug build, not possible with the official VC++ Avidemux nightlies.

Quote
TBH, I'd prefer to use MSVC++ anyway - can a newer version than v.6 be used?

Current nightlies are built with MSVC++ 2019.

Debugging doesn't work with MingW builds. Currently, the only choice is either Linux (gcc, maybe also clang) or Windows with MSVC++.

nemach

  • Newbie
  • *
  • Posts: 5
Re: Building for Windows
« Reply #2 on: March 25, 2020, 02:07:11 PM »
Great tips - thanks for your help.

After I worked out that the lib formats of my installed version of avidemux looked wrong for a mingw64 build, I installed the win64 version (as opposed vsWin64), and at least I've managed to build and link the test plugin now.

I'll have a look at the links you sent and see if I've got time to get things working. Is there any way to see the nightly build config just to copy it locally? It's a shame it's not in a public CI pipeline (or is it?!).

Thanks again.
Neil

eumagga0x2a

  • Moderator
  • Hero Member
  • *****
  • Posts: 3948
Re: Building for Windows
« Reply #3 on: March 25, 2020, 02:31:22 PM »
Is there any way to see the nightly build config just to copy it locally?

Regarding native builds on Windows, I fear, I really can't help. You might try to contact Mean.

Regarding cross-builds, I never attempted to look into installer, but apart from that everything is pretty well documented with a few outdated bits as MXE doesn't provide a current enough version of x265 and this lib should be built and installed manually. If you have questions, please ask, I'll try to answer if I am able to.

Adding an ability to seek to keyframes to tinyPy scripting is definitely wanted and on my todo list. Would require a few simple modifications to the editor and the script engine.

nemach

  • Newbie
  • *
  • Posts: 5
Re: Building for Windows
« Reply #4 on: March 25, 2020, 05:21:33 PM »
Let me start getting the build environment going, and then I'll see if I can work out where changes are needed. Maybe I'll come back if I need to verify I'm looking in the right areas.

eumagga0x2a

  • Moderator
  • Hero Member
  • *****
  • Posts: 3948
Re: Building for Windows
« Reply #5 on: March 25, 2020, 10:10:53 PM »
Does it mean that you would like to implement the necessary changes yourself? Else I have a patch to add getCurrentPts(), getPrevKFramePts(), getNextKFramePts() methods to pyEditor and seekKeyFrame(int) to pyAdm class as well as to optimize ADM_Composer::seekKeyFrame(int) ready for commit. Just say how you would prefer to proceed.

nemach

  • Newbie
  • *
  • Posts: 5
Re: Building for Windows
« Reply #6 on: March 26, 2020, 06:20:14 AM »
Well I was planning to have a go at implementing I it myself, but I don't want to reinvent the wheel. So if you already have a patch that would be great. But is this a complete solution or just part of it? If it's complete, why isn't it on master?

eumagga0x2a

  • Moderator
  • Hero Member
  • *****
  • Posts: 3948
Re: Building for Windows
« Reply #7 on: March 26, 2020, 06:45:22 AM »
I really don't want to keep you from starting to contribute to the project, it was more a mid-air collision as once you reminded me about that topic I started immediately (and I was using a computer where I can't work on the stuff in Avidemux I was actually trying to accomplish).

But is this a complete solution or just part of it?

It depends on your needs, probably incomplete. The changes would allow to get the PTS of the currently displayed (nextFrame() in pyEditor doesn't update the currently displayed picture), to query the PTS of the previous or next keyframe and to seek to an integer number of keyframes prior or past the current position. What else would be needed?

Quote
If it's complete, why isn't it on master?

I just didn't want to go ahead without asking. I started once you reminded me about that old intention, there was no action on my part before.
« Last Edit: March 26, 2020, 06:47:03 AM by eumagga0x2a »

eumagga0x2a

  • Moderator
  • Hero Member
  • *****
  • Posts: 3948
Re: Building for Windows
« Reply #8 on: March 26, 2020, 06:57:01 AM »
Err, I see that Editor().nextFrame() does update the current PTS, just doesn't refresh the preview.

eumagga0x2a

  • Moderator
  • Hero Member
  • *****
  • Posts: 3948
Re: Building for Windows
« Reply #9 on: March 26, 2020, 07:32:57 AM »
Seeking to keyframes and e.g. saving the picture as a JPEG image works with CLI too, so this is not tied to the GUI.

eumagga0x2a

  • Moderator
  • Hero Member
  • *****
  • Posts: 3948
Re: Building for Windows
« Reply #10 on: March 26, 2020, 08:16:36 AM »
Pushed as [editor] Optimize ADM_Composer::seekKeyFrame, [editor] Expose the method to query the next keyframe pts to scripting and [tinyPy] Extend API.

It would be a major contribution to Avidemux if you could figure out and document the steps necessary to create a functional MSVC++ native build environment similar to what is available for cross-building.

nemach

  • Newbie
  • *
  • Posts: 5
Re: Building for Windows
« Reply #11 on: March 26, 2020, 03:08:33 PM »
That's great - thanks for pushing your updates!

I'm working on the MSVC 2019 build and making some progress now. Will report on how things develop...