Recent changes to wikihttps://sourceforge.net/p/kissplayer/wiki/Recent changes to wikienSun, 22 Mar 2015 00:49:17 -0000Home modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Home/<div class="markdown_content"><pre>--- v11
+++ v12
@@ -1,11 +1,8 @@
-Welcome to KISS Player wiki!
-----------------------------
-
-***This is the place where users can check the features list, known bugs and a few guides.***
+***This wiki has moved to [GitHub](https://github.com/andreldm/kissplayer/wiki).***
#Pages:#
-* ####[Hacking]####
-* ####[Coding Style]####
-* ####[Dependencies]####
-* ####[Building from Source]####
-* ####<s>[TODO List]</s><s>####
+* ####</s><s>[Hacking]</s>####
+* ####<s>[Coding Style]</s>####
+* ####<s>[Dependencies]</s>####
+* ####<s>[Building from Source]</s>####
+* ####<s>[TODO List]</s>####
</pre><s></s><s>
</s></div>AndreLDMSun, 22 Mar 2015 00:49:17 -0000https://sourceforge.net425df22b56d721c702a58a3fd49d1dfadb3c702eBuilding from Source modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Building%20from%20Source/<div class="markdown_content"><pre>--- v17
+++ v18
@@ -1,42 +1,33 @@
# Building from Source #
-I'm still working to craft a nice configure script and makefile, but it's my first time using autotools and a cross platform project. Meanwhile you can follow the instructions below.
+Currently the only option to build is via autotools generated configure and makefile. Maybe in the future premake can be used.
-I do recommend an updated linux(or mingw) install and gcc should be at least 4.6.
-First you need to install all the [Dependencies].
+I do recommend an updated linux(or mingw) install and gcc should be at least 4.8.
+**First you need to install all the [Dependencies].**
### Building on Linux ###
-On Debian/Ubuntu, the dependecies can be easily installed using the following command:
-<code>sudo apt-get install libfltk1.3-dev libtag1-dev libsqlite3-dev libpng12-dev zlib1g-dev libcurl4-nss-dev libxpm-dev libxtst-dev libXft-dev libxinerama-dev</code>
-
-The only exception is the Closed Source library FMOD Ex that can be obtained [Here](http://www.fmod.org/download/#FMODExAPIDownloads).
-Download the Linux version, extract the compressed archive.
-Copy the files in api/inc to /usr\[/local\]/include/fmodex and in api/lib to /usr\[/local\]/lib.
-
-Now we are ready to build the source code, you have these options:
-1. Install Code::Blocks, open the file KISS Linux.cbp and build the project.
-2. Use the makefile, just type: <code>make</code>
+1. <code>./autogen.sh</code> - if the repository was cloned
+2. <code>./configure</code>
+3. <code>make</code>
**Troubleshooting:**
*curl/curl.h not found:*
The libcurl from the repository might be incompatible, so download the source from the official website, build and install.
-
-*skipping incompatible .../libfmodex.so:*
-modify the makefile, where is -lfmodex should be -lfmodex64
*libfmodex64.so: cannot open shared object file: No such file or directory*
create the file /etc/ld.so.conf.d/local.conf and fill with /usr/local/lib64 or the path where FMOD libs are installed. Then run <code>sudo ldconfig</code>.
### Building on Windows ###
-In order to build the source under Windows, you'll need the MinGW with GCC and G++ compilers and maybe the MSYS if you need to compile a library. It's recommended to install them using the [Automated Installer](https://sourceforge.net/projects/mingw/files/Installer/).
+In order to build the source under Windows, you'll need the MinGW with GCC and G++ compilers and the MSYS. It's recommended to install them using the [Automated Installer](https://sourceforge.net/projects/mingw/files/Installer/).
Make sure to install MinGW in a directory where its name doesn't include any spaces(e.g. C:\\MinGW) and the bin directory(e.g. C:\\MinGW\\bin) is listed on the environment variable PATH.
-Once you have all the dependencies are [properly installed](https://sourceforge.net/p/kissplayer/wiki/Dependencies#building-the-libraries-under-mingwmsys), you can choose one of these options:
-1. Install Code::Blocks, open the file KISS Windows.cbp and build the project.
-2. Use the makefile, just type: <code>mingw32-make</code>
+Once you have all the dependencies are [properly installed](https://sourceforge.net/p/kissplayer/wiki/Dependencies#building-the-libraries-under-mingwmsys), open a MSYS Terminal and in the kissplayer source folder:
+1. <code>./autogen.sh</code> - if the repository was cloned
+2. <code>./configure</code>
+3. <code>mingw32-make</code>
**Troubleshooting:**
*undefined reference to `_imp__curl_\*':*
</pre>
</div>AndreLDMMon, 11 Aug 2014 23:11:10 -0000https://sourceforge.net446f197903dccd505bc8a79e913c8c5afa749ef9Hacking modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Hacking/<div class="markdown_content"><pre>--- v4
+++ v5
@@ -9,23 +9,42 @@
To clone the repository(anonymously):
> `hg clone http://hg.code.sf.net/p/kissplayer/code kissplayer-code`
-To clone the reposutory(with R/W access):
+To clone the repository(with R/W access):
> `hg clone ssh://[username]@hg.code.sf.net/p/kissplayer/code kissplayer-code`
Then you can start playing with the code. Once you finish working on a bug or a new feature, you should generate a patch for submission.
+
I strongly recommend using Queues, checkout [this](https://developer.mozilla.org/en/docs/Mercurial_Queues) nice article by Mozilla.
-But if you want something fast and simple, try the following:
Make sure the local repo is synchronized and clean:
> `hg in`
> `hg pull -u` (If there are commits pending)
> `hg st` (Check the repository state)
-Now create the patch(do not commit):
+Create a new patch(do not use spaces nor uppercase in patch name):
+> `hg qnew patch-name`
+
+A text editor will pop up, just let it blank and dismiss.
+As you edit the source, run hg qrefresh to update the patch. You can check the status with "hg st --rev qparent" or diff with "hg qdiff".
+
+When you finish your work, create the patch:
+> `hg qrefresh -m "A brief summary of the changes you have made."`
+> `hg export qtip >~/patch-name.patch`
+
+To remove the patches(and its changes):
+> `hg qpop`
+
+If you really want to remove it from the series:
+> `hg qdelete patch-name`
+
+
+**Not working with MQ? Here are a few hints:**
+
+To revert all non committed changes:
+> `hg revert -C -a`
+
+To create a quick patch:
> `hg diff -g > ~/patch.diff`
-
-To revert all uncommited changes(with no backups):
-> `hg revert -C -a`
To apply a patch:
> `hg patch --no-commit ~/patch.diff`
</pre>
</div>AndreLDMFri, 16 May 2014 06:05:25 -0000https://sourceforge.net2d0aca89108833d5f15ffed7aafc145ac1f79a25Home modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Home/<div class="markdown_content"><pre></pre>
</div>AndreLDMFri, 09 May 2014 16:46:05 -0000https://sourceforge.netc2aeec490dd93a1c1ed68ad6add407746015c2ecBuilding from Source modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Building%20from%20Source/<div class="markdown_content"><pre>--- v16
+++ v17
@@ -34,6 +34,10 @@
Make sure to install MinGW in a directory where its name doesn't include any spaces(e.g. C:\\MinGW) and the bin directory(e.g. C:\\MinGW\\bin) is listed on the environment variable PATH.
-Once you have all the dependencies properly installed, you have these options:
+Once you have all the dependencies are [properly installed](https://sourceforge.net/p/kissplayer/wiki/Dependencies#building-the-libraries-under-mingwmsys), you can choose one of these options:
1. Install Code::Blocks, open the file KISS Windows.cbp and build the project.
2. Use the makefile, just type: <code>mingw32-make</code>
+
+**Troubleshooting:**
+*undefined reference to `_imp__curl_\*':*
+You can either change -lcurl to -lcurldll or add #define CURL_STATICLIB before including curl.h and add -lws2_32 to linker options.
</pre>
</div>AndreLDMThu, 03 Apr 2014 04:22:21 -0000https://sourceforge.neta033fe39671a13b99500640b6b6fe0a3a550f902Dependencies modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Dependencies/<div class="markdown_content"><pre>--- v25
+++ v26
@@ -6,23 +6,16 @@
* Considering an opensource replacement - Ticket 23
* **TagLib >= 1.8** - [Link](http://taglib.github.io/)
* LGLP or MPL
- * Build using: cmake -G "MSYS Makefiles" -DWITH_MP4=ON -DWITH_ASF=ON
- * I built using MSYS, run the cmake command to see the generators list.
* **FLTK >= 1.3.2** - [Link](http://www.fltk.org/software.php)
* LGLP
* **SQLite >= 3.8.x** - [Link](http://www.sqlite.org/download.html)
* Public Domain
- * MinGW/MSYS' libtool is now complaining, this is the workaround: [Link](http://stackoverflow.com/a/20034970/3109776)
* **libpng** - [Link](http://www.libpng.org/pub/png/libpng.html)
* libpng License
* **zlib** - [Link](http://zlib.net/)
* zlib License
* **Libcurl** - [Link](http://curl.haxx.se/download.html)
* MIT/X derivate License
- * On Windows(MinGW) you might need to download the source and build it.
- * Follow instructions at docs/INSTALL
- * Take a look the 'Disabling Specific Protocols'
- * After building, move libcurl.a to mingw/lib and include/curl to mingw/include
Additional Linux Dependencies
============
@@ -34,3 +27,61 @@
* MIT/X derivate License
* **libXinerama** - [Link](http://cgit.freedesktop.org/xorg/lib/libXinerama/)
* MIT/X derivate License
+
+Building the libraries under MinGW/MSYS
+============
+* **zlib**
+ * Download the source and extract
+ * On a MSYS prompt, run cp win32/Makefile.gcc makefile
+ * Then run:
+ * export INCLUDE_PATH=/usr/local/include
+ * export LIBRARY_PATH=/usr/local/lib
+ * export BINARY_PATH=/usr/local/bin
+ * make && make install
+ * Move the bin, include and lib folders from /usr/local to mingw/
+
+* **libpng**
+ * Download the source and extract
+ * On a MSYS prompt, run cp scripts/makefile.msys makefile
+ * Then run make && make install
+ * Move the bin, include and lib folders from /usr/local to mingw/
+ * Alternatively you can build using cmake to build
+
+* **Libcurl**
+ * Download the source and extract
+ * Follow instructions at docs/INSTALL
+ * Take a look the 'Disabling Specific Protocols' section
+ * Use the windows prompt and mingw32-make
+ * After building, move lib/libcurl.a to mingw/lib and include/curl to mingw/include
+
+* **SQLite**
+ * Download the source-autoconf, not the amalgamation
+ * Run ./configure on MSYS
+ * You might need to disable your antivirus temporaly(Avast! here)
+ * Run make && make install
+ * Move the bin, include and lib folders from /usr/local to mingw/
+ * If libtool complains, check if this is your problem: [Link](http://stackoverflow.com/a/20034970/3109776)
+
+* **FLTK**
+ * Download the source and extract
+ * You might define if JPEG, PNG and ZLIB will be builtin, system shared or let configure decide
+ * Check ./configure --help
+ * Run ./configure && make && make install
+ * Alternatively you can build using cmake to build, check README.CMake.txt
+ * Move the bin, include and lib folders from /usr/local to mingw/
+
+* **TagLib**
+ * Download the source and extract
+ * Here you should use Cmake, if it's not installed, do so
+ * Using the windows prompt: cmake -G "MinGW Makefiles" -DWITH_MP4=ON -DWITH_ASF=ON
+ * Run mingw32-make && mingw32-make install
+ * Move the bin, include and lib folders from "Program Files"/taglib to mingw/
+ * You might be able to use the "MSYS Makefiles" generator as well while using MSYS
+
+* **FMOD Ex**
+ * As FMOD is not opensource, download the programmers' API for windows
+ * You can run the installer or just extract its content with 7zip
+ * On the api folder:
+ * Rename the "inc" folder to "include"
+ * Create a "bin" folder and move the dlls to it
+ * Move the bin, include and lib folders from /usr/local to mingw/
</pre>
</div>AndreLDMThu, 03 Apr 2014 04:10:02 -0000https://sourceforge.netaf16f06c0e1ea2a0bc3b26cb93c5509d850892faDependencies modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Dependencies/<div class="markdown_content"><pre>--- v24
+++ v25
@@ -21,6 +21,8 @@
* MIT/X derivate License
* On Windows(MinGW) you might need to download the source and build it.
* Follow instructions at docs/INSTALL
+ * Take a look the 'Disabling Specific Protocols'
+ * After building, move libcurl.a to mingw/lib and include/curl to mingw/include
Additional Linux Dependencies
============
</pre>
</div>AndreLDMThu, 03 Apr 2014 02:00:31 -0000https://sourceforge.netcf2cae841134b6a5401f0655fd91eafc14ee7276Dependencies modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Dependencies/<div class="markdown_content"><pre>--- v23
+++ v24
@@ -19,6 +19,8 @@
* zlib License
* **Libcurl** - [Link](http://curl.haxx.se/download.html)
* MIT/X derivate License
+ * On Windows(MinGW) you might need to download the source and build it.
+ * Follow instructions at docs/INSTALL
Additional Linux Dependencies
============
</pre>
</div>AndreLDMThu, 03 Apr 2014 01:52:19 -0000https://sourceforge.net7aa9946b1eff6ee4cf813c8381e2e8004c8edf72Building from Source modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Building%20from%20Source/<div class="markdown_content"><pre>--- v15
+++ v16
@@ -30,7 +30,7 @@
### Building on Windows ###
-In order to build the source under Windows, you'll need the MinGW compiler and maybe the MSYS if you need to compile a library. It's recommended to install them using the [Automated Installer](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/).
+In order to build the source under Windows, you'll need the MinGW with GCC and G++ compilers and maybe the MSYS if you need to compile a library. It's recommended to install them using the [Automated Installer](https://sourceforge.net/projects/mingw/files/Installer/).
Make sure to install MinGW in a directory where its name doesn't include any spaces(e.g. C:\\MinGW) and the bin directory(e.g. C:\\MinGW\\bin) is listed on the environment variable PATH.
</pre>
</div>AndreLDMThu, 03 Apr 2014 01:29:14 -0000https://sourceforge.net9676f9a48b63f17a787e796642344e8414dd2396Coding Style modified by AndreLDMhttps://sourceforge.net/p/kissplayer/wiki/Coding%20Style/<div class="markdown_content"><pre>--- v1
+++ v2
@@ -5,7 +5,7 @@
* Filename should be all lowercase and can include underscores (_), but never spaces.
#### Header File ####
-* All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be `___H_`.
+* All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be `_H_`.
* Use standard order for readability and to avoid hidden dependencies: C library, C++ library, other libraries' .h, the project's .h.
* Remove all unnecessary includes from the header and move what possible to the source file.
@@ -14,7 +14,7 @@
* Place a function's variables in the narrowest scope possible, and initialize variables in the declaration.
#### Classes ####
-* Classes names should be in camel case, ex. FooClass.
+* Classes names should be in singular and camel case, ex. FooClass, EventNext.
* Avoid doing complex initialization in constructors (in particular, initialization that can fail or that requires virtual method calls).
* Use a struct only for passive objects that carry data; everything else is a class.
* Avoid the use of friend classes.
@@ -54,5 +54,10 @@
* Avoid C++11 usage in order to keep the compatibility and portability.
* Be very cautious with macros. Prefer enums and const variables to macros.
* Do not use C++ exceptions.
+* Use inner classes and inner enums, do not pollute global namespace.
+* Don't use global variables and singletons. Use only global constants.
+* All identifiers, comments and string literals should be written in English and should be syntactically and grammatically correct.
-Source: [Google C++ Style Guide](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml)
+Sources:
+[Google C++ Style Guide](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml)
+[CppEvents Wiki](https://code.google.com/p/cpp-events/wiki/CodingRules)
</pre>
</div>AndreLDMWed, 12 Mar 2014 01:29:47 -0000https://sourceforge.net2b8e2594f7cd63c7d9bdb09c1eda3f4aa3aac423