Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Programming and Hacking > Development

Reply
 
Thread Tools Search this Thread Display Modes
Old 2nd May 2014, 23:34   #41  |  Link
foxyshadis
Angel of Night
 
foxyshadis's Avatar
 
Join Date: Nov 2004
Location: Tangled in the silks
Posts: 9,559
Would you like to have this moved to the MPEG-4 GUI section, where it would get a lot more attention, or is it fine here until it's ready?
foxyshadis is offline   Reply With Quote
Old 3rd May 2014, 11:11   #42  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
This is still in early development, no encoding yet, sql database almoust complete, gui sql parser not done yet and only gui handling and text editor (some bugs with search and replace with Qscintilla still) is done. Video player needs rewrite but I think I delay it a bit and focus next qui functionalities with sql database. Also why it takes so much time is that mostly I am doing all new version using Qt and code pretty much with the gui needs rewrite with sql from scratch.

If you feel that this project would get more view there then move it. Always getting help to make MeGui crossplatform clone would be very nice. Especially someone with more experience dealing with avisynth would be very good help for this project.

Last edited by Jeroi; 3rd May 2014 at 11:16.
Jeroi is offline   Reply With Quote
Old 3rd May 2014, 13:45   #43  |  Link
Guest
Guest
 
Join Date: Jan 2002
Posts: 21,901
Until it is usable it should stay here. People go to the GUIs forum to find working solutions. Good luck with your project.
Guest is offline   Reply With Quote
Old 7th May 2014, 20:36   #44  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Here is nice peek for my changes for queve. Queve is renamed as Encoder since input is separate tab which makes encoder jobs. Another big change is removing current workers implementation and using threads spinbox to define how many threads user wants yo use for encoding. Also the start end mechanism will allocate new threads if new line is selected and started. You can then start as many encodings as you want without thread spinbox altering. When you will define threads like 4 then encoder makes 4 encoding jobs concurrent but you can start new ones with starter. Any other changes you could see as improvement?



I found one improvement again, I removed tablewidget and instead using treeview widget. Since MeXgui handles passes and audio and muxing separately it' is nice to have them subfoldered as a jobproject. So Jobs are listed as complete jobs and can be expanded to view subjobs for the jobproject. This way one single jobproject does not take too much space on the list and more separate job projects can be seen in the default view height.

While I was thinking improvements to this one big improvement hit on my mind. I am always looking a good batch prosessor for many files. So I may incorportate in future batch projects to this. This would be like batch prosess a folder and select profile and queve all. So if you are anime maker you could do three avs projects and then run batch importer and make general setup for all videos and instantly get encoder to display the jobs.

Edit:

I now decided to separate encoder from main gui to own widget form so that it has it's own class implementation and separate headers. Makes debugging more easier. Here is screenshot with tree widget in action:



And must say, I have done now first xml importer script that uses batch import from many files the xml reader srcipt was awful pain to write. Imaging one single line with sql and like 40 lines with xml. Thats the difference in api's.

Last edited by Jeroi; 8th May 2014 at 00:06.
Jeroi is offline   Reply With Quote
Old 9th May 2014, 14:44   #45  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Here is some sample code how nice Qt is to handle sql data. This is sample image of globals.h which defines all global things like defines, variables, data structs which various gui and classes need to operate:



Here you can see that I setup global memeory allocation to allocate some space in memory while program is running. It has profiles, jobs and SQL databse id defines visble to help SQL functions to store right id's when storing/updating data. Dont mind about the videoProfile, it is copy of audioProfile atm and since I think 2 video profile structs for mpeg4 and x264 and maybe x265 later on. Also those current profiles are not declared as extern yet in this image.

How ever you can see That QList<datatype> is nice method getting SQL tables sorted in a list of structs. You can then acces all the data with list[0].name and so on where 0 is list position where first struct is and then name repsenet struct variable that holds some data.

Last edited by Jeroi; 9th May 2014 at 14:53.
Jeroi is offline   Reply With Quote
Old 9th May 2014, 15:32   #46  |  Link
microchip8
ffx264/ffhevc author
 
microchip8's Avatar
 
Join Date: May 2007
Location: /dev/video0
Posts: 1,845
Quote:
Originally Posted by Jeroi View Post
Here is some sample code how nice Qt is to handle sql data. This is sample image of globals.h which defines all global things like defines, variables, data structs which various gui and classes need to operate:



Here you can see that I setup global memeory allocation to allocate some space in memory while program is running. It has profiles, jobs and SQL databse id defines visble to help SQL functions to store right id's when storing/updating data. Dont mind about the videoProfile, it is copy of audioProfile atm and since I think 2 video profile structs for mpeg4 and x264 and maybe x265 later on. Also those current profiles are not declared as extern yet in this image.

How ever you can see That QList<datatype> is nice method getting SQL tables sorted in a list of structs. You can then acces all the data with list[0].name and so on where 0 is list position where first struct is and then name repsenet struct variable that holds some data.
Funny that you use Windows to develop an app for Linux/UNIX
__________________
ffx264 || ffhevc || ffxvid || microenc
microchip8 is offline   Reply With Quote
Old 9th May 2014, 15:39   #47  |  Link
LoRd_MuldeR
Software Developer
 
LoRd_MuldeR's Avatar
 
Join Date: Jun 2005
Location: Last House on Slunk Street
Posts: 13,249
Quote:
Originally Posted by froggy1 View Post
Funny that you use Windows to develop an app for Linux/UNIX
I think the goal of this project is to create a cross-platform (Windows, Linux, OS X, etc) port/rewrite of MeGUI, not specifically a Linux/Unix one

So, ideally, it should run equally well on all supported platforms. And it shouldn't matter which platform is used for development...
__________________
Go to https://standforukraine.com/ to find legitimate Ukrainian Charities 🇺🇦✊

Last edited by LoRd_MuldeR; 9th May 2014 at 15:41.
LoRd_MuldeR is offline   Reply With Quote
Old 9th May 2014, 15:54   #48  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Quote:
Originally Posted by LoRd_MuldeR View Post
I think the goal of this project is to create a cross-platform (Windows, Linux, OS X, etc) port/rewrite of MeGUI, not specifically a Linux/Unix one

So, ideally, it should run equally well on all supported platforms. And it shouldn't matter which platform is used for development...
Yes you can develop this project in windows, OsX, Linux with QtCreator. The easiest method is unix based osses since you can download qt5-sdk which includes Qt creator pre build with gnu.

You need qscintilla and ffmpeg atm with current develop files. Qscintilla needed to build from source. FFmpeg that has avisynth support build and dev files
Jeroi is offline   Reply With Quote
Old 9th May 2014, 16:17   #49  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Few fundamentals, I think making public structs for gui is good idea to handle gui updating and such. But for tasks like jobs, if there is is 100 jobs in a memory, it starts to take toll in memory. So would direct sql fetching be more better method for jobs?

What do you think?

I mean when encoder starts to encode, it fetches next available job data from sql database and process it. This would be more Functional aproach to data handling rather than Object oriented.

Edit:

I see now that public Qlists are stupid thing, I can fetch the list in a function and print the text to boxes. I use only memory when running the function to print data to gui. Updater can run the function again and again to fetct new stuff added to db.

Last edited by Jeroi; 9th May 2014 at 16:31.
Jeroi is offline   Reply With Quote
Old 9th May 2014, 16:59   #50  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Here is my changes to gui:



What do you guys like?

Last edited by Jeroi; 9th May 2014 at 17:16.
Jeroi is offline   Reply With Quote
Old 9th May 2014, 17:19   #51  |  Link
microchip8
ffx264/ffhevc author
 
microchip8's Avatar
 
Join Date: May 2007
Location: /dev/video0
Posts: 1,845
Quote:
Originally Posted by LoRd_MuldeR View Post
I think the goal of this project is to create a cross-platform (Windows, Linux, OS X, etc) port/rewrite of MeGUI, not specifically a Linux/Unix one

So, ideally, it should run equally well on all supported platforms. And it shouldn't matter which platform is used for development...
Totally forgot about that. Always thought MeXgui was targeted at Linux/UNIX only (maybe because of the X in its name referring to UNIX-like systems)

Excuse my mistake
__________________
ffx264 || ffhevc || ffxvid || microenc

Last edited by microchip8; 9th May 2014 at 17:21.
microchip8 is offline   Reply With Quote
Old 9th May 2014, 17:45   #52  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Quote:
Originally Posted by froggy1 View Post
Totally forgot about that. Always thought MeXgui was targeted at Linux/UNIX only (maybe because of the X in its name referring to UNIX-like systems)

Excuse my mistake
It stands for:

Mencoder Cross Gui. But I think the Mencoder part is just for legacy reasons.
Jeroi is offline   Reply With Quote
Old 12th May 2014, 11:07   #53  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Here is my current work with Encoder:



I am doing this as separate dialog atm to debug of my code for it. Atm job's are created manually without SQL fetching and other way it is similar code than in Encoder.cpp will hold. It uses foreach(job c, joblist) and makes dynamic updating to the list. Also I added dynamic combobox to the Status. I will add direct editable options for all values like encoder and outputname.

Also since Qt support translations I am doing code that supports program translating. MeXgui will have option to add translating po files to make it native language for user.

Edit:

Finally got my code to work wiht TreeView. Now the jobs are printed as child also if they belong to group job. Added also by default the colum size is modified as how width is the data in colums. So biggest width rules the treeview colum size.


Last edited by Jeroi; 12th May 2014 at 12:21.
Jeroi is offline   Reply With Quote
Old 12th May 2014, 23:38   #54  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
I hade some troubles with the queve that there was no easy method to select a job. I found solution at last to add sql Id and subId to the jobQueve and make those columns hidden. Now I can fetch the id and subId from those colums if I want to make SQL joblist edit or delete and encoder worker methods via sql id's. Methods always deletes stuff from sql joblist first and then see if sql delete worked then only removes job from queve. So I am doing all the way dynamic updating to sql table and reading the table to view the jobqueve. ID's makes sql handling so easy.
Jeroi is offline   Reply With Quote
Old 13th May 2014, 02:05   #55  |  Link
macromizer
Guest
 
Posts: n/a
Just so you know since you've misspelled the term both in the GUI text in your screenshots and in your posts the term is queue not queve.
  Reply With Quote
Old 13th May 2014, 16:12   #56  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Just for giggles, playing arround with try catch block and demostartion of sql throw error when there is no sql database available at program root:


Last edited by Jeroi; 13th May 2014 at 16:16.
Jeroi is offline   Reply With Quote
Old 13th May 2014, 23:10   #57  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Compared to MeGUI job handler that has quite bad line handling the MeXgui jobGueue will handle bit differently:

- When using move up, move down the encoder will move whole Job to up or down with all child jobs intact.
- Unlike megui moving child jobs are not allowed. Only toplevel Jobs may be moved up down. It does check if your selected line is child then it choses parent and moves it up or down.
- By default whole job is deleted. This is because normally you will not delete anything on the Job. How ever I may allow audio line removing if there is more that 1 audio tracks in future.

At the moment right control buttons are working. Moving to start threading encoding. First encoding thread is handler that starts child threads that talk with the handler and handler will controll jobQueve signals and slots.

Edit:
I will drop JobX names and add Jobname box to current meXgui input tab. By default it Fetches job name from from sql but user can spesify what ever jobname they want. Till example:

Jobname Naruto10 and jobqueve uses those names as job name. since all jobs have unique id anyway and subId for childs all handling is used with id's anyway.

Last edited by Jeroi; 14th May 2014 at 15:00.
Jeroi is offline   Reply With Quote
Old 28th May 2014, 02:44   #58  |  Link
djcj
Registered User
 
Join Date: Jun 2013
Location: Germany
Posts: 44
AvxSynth and Vapoursynth didn't work very well on Linux when I was testing them, so working with avs2pipemod on OSX and Linux might be more reliable, and you could use exactly the same plugins on all systems. An automated installation could be done by extracting a pre-configured prefix (including plugins and other things) and then use winetricks to install vcrun6:
Code:
#!/bin/sh
mkdir -p "$HOME/.local/share/wineprefixes" &&
cp -rf avisynth_260_alpha5 "$HOME/.local/share/wineprefixes" &&
./winetricks prefix=avisynth_260_alpha5 vcrun6sp6
djcj is offline   Reply With Quote
Old 21st January 2022, 16:35   #59  |  Link
Jeroi
Registered User
 
Join Date: Feb 2008
Location: Finland
Posts: 141
Long time no see

Hi I run softwarer company nowdays and my time has not been in developing this for years.

What should we start change:
Avisynth++

What more? I think source can compile to x64 when written working in qt. How ever megui has improved surely lot...
Jeroi is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 14:01.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.