Advertisement
Guest User

Untitled

a guest
Jun 8th, 2017
582
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 39.21 KB | None | 0 0
  1. From 4c3b3d92f68b822e88b4a40491f973c9a855f943 Mon Sep 17 00:00:00 2001
  2. From: Gerasim Troeglazov <3dEyes@gmail.com>
  3. Date: Wed, 7 Jun 2017 00:54:42 +0100
  4. Subject: Add Haiku support
  5.  
  6.  
  7. diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef
  8. new file mode 100644
  9. index 0000000..2702ac8
  10. --- /dev/null
  11. +++ b/haiku/QMPlay2.rdef
  12. @@ -0,0 +1,42 @@
  13. +resource app_signature "application/x-vnd.QMPlay2";
  14. +resource app_flags B_MULTIPLE_LAUNCH;
  15. +resource app_version {
  16. +   major  = 15,
  17. +   middle = 10,
  18. +   minor  = 03,
  19. +
  20. +   /* Application "variety" can be set to one of the following:
  21. +   *   B_APPV_DEVELOPMENT,
  22. +   *   B_APPV_ALPHA,
  23. +   *   B_APPV_BETA,
  24. +   *   B_APPV_GAMMA,
  25. +   *   B_APPV_GOLDEN_MASTER,
  26. +   *   B_APPV_FINAL
  27. +   */
  28. +   variety = B_APPV_DEVELOPMENT,
  29. +   internal = 0,
  30. +
  31. +   short_info = "QMPlay2",
  32. +   long_info = "QMPlay2 © 2010-2015 Błażej Szczygieł"
  33. +};
  34. +
  35. +resource file_types message {
  36. +   "types" = "video",
  37. +   "types" = "audio"
  38. +};
  39. +
  40. +resource vector_icon array {
  41. +   $"6E63696602012C165AF20314D77803000DB4D0B47BB4D0B47BB5A4B493B717B5"
  42. +   $"6DB659B515BCBFB846C814BDF0C26CBB17C8CEBE53CA3FBF23C99BBE9CCA9ABF"
  43. +   $"6BCA35C053CA92C00FC985C0E0C7E7C196C8ADC12DC276C452B78EC9BFBD01C7"
  44. +   $"06B6C1CA20B523CAD9B601CAA4B4ACCAF9B426CA1EB421CA9DB41FC965B46DC7"
  45. +   $"FBB44EC8B0B561C2E0B4A9B879B57FBD9BB485B770B428B55FB438B66BB41CB4"
  46. +   $"F6B4D0B47BB466B48CB4D0B47B0209B627B6EDB6A3B714B640B838B6A7BACAB6"
  47. +   $"89B97FB6F3BD1FB6E1C1D3B6F0BF7BB6D1C408B623C864B659C633B71AC816B8"
  48. +   $"DBC716B7F4C787BC65C561C369C1D7BFF0C3ADC4D7C11DC7BDBFBFC64EC075C7"
  49. +   $"1DBF3FC5A7BE96C65EBEEFC0EEBC47B790B783BC40B9E3B71CB7480209B627B6"
  50. +   $"EDB640B838B6A3B714B790B783B71CB748BC40B9E3C5A7BE96C0EEBC47C65EBE"
  51. +   $"EFC7BDBFBFC71DBF3FC64EC075C369C1D7C4D7C11DBFF0C3ADB8DBC716BC65C5"
  52. +   $"61B7F4C787B623C864B71AC816B659C633B6E1C1D3B6D1C408B6F0BF7BB6A7BA"
  53. +   $"CAB6F3BD1FB689B97F020A00020001000A01010200"
  54. +};
  55. diff --git a/src/gui/gui.pro b/src/gui/gui.pro
  56. index 7abeac2..c350ca2 100644
  57. --- a/src/gui/gui.pro
  58. +++ b/src/gui/gui.pro
  59. @@ -10,8 +10,14 @@ android {
  60.  
  61.  TARGET = QMPlay2
  62.  
  63. -QMAKE_LIBDIR += ../../app/lib
  64. -DESTDIR = ../../app/bin
  65. +haiku {
  66. +   DESTDIR = ../../app
  67. +   QMAKE_LIBDIR += ../../app/lib
  68. +}
  69. + else {
  70. +   QMAKE_LIBDIR += ../../app/lib
  71. +   DESTDIR = ../../app/bin
  72. +}
  73.  !android: LIBS += -lrt #For glibc < 2.17
  74.  LIBS += -lqmplay2
  75.  
  76. diff --git a/src/modules/AudioCD/AudioCD.pro b/src/modules/AudioCD/AudioCD.pro
  77. index 0a02c90..100db72 100644
  78. --- a/src/modules/AudioCD/AudioCD.pro
  79. +++ b/src/modules/AudioCD/AudioCD.pro
  80. @@ -3,8 +3,14 @@ CONFIG += plugin
  81.  
  82.  QT += widgets
  83.  
  84. -DESTDIR = ../../../app/lib/qmplay2/modules
  85. -QMAKE_LIBDIR += ../../../app/lib
  86. +haiku {
  87. +   DESTDIR = ../../../app/modules
  88. +   QMAKE_LIBDIR += ../../../app/lib
  89. +}
  90. + else {
  91. +   DESTDIR = ../../../app/lib/qmplay2/modules
  92. +   QMAKE_LIBDIR += ../../../app/lib
  93. +}
  94.  
  95.  CONFIG += link_pkgconfig
  96.  PKGCONFIG += libcdio libcddb
  97. diff --git a/src/modules/AudioFilters/AudioFilters.pro b/src/modules/AudioFilters/AudioFilters.pro
  98. index 85f71a5..75e4ab3 100644
  99. --- a/src/modules/AudioFilters/AudioFilters.pro
  100. +++ b/src/modules/AudioFilters/AudioFilters.pro
  101. @@ -3,9 +3,15 @@ CONFIG += plugin
  102.  
  103.  QT += widgets
  104.  
  105. -DESTDIR = ../../../app/lib/qmplay2/modules
  106. -QMAKE_LIBDIR += ../../../app/lib
  107. -
  108. +haiku {
  109. +   DESTDIR = ../../../app/modules
  110. +   QMAKE_LIBDIR += ../../../app/lib
  111. +}
  112. + else {
  113. +   DESTDIR = ../../../app/lib/qmplay2/modules
  114. +   QMAKE_LIBDIR += ../../../app/lib
  115. +}
  116. +
  117.  android: LIBS += -lavcodec -lavutil
  118.  else {
  119.     CONFIG += link_pkgconfig
  120. diff --git a/src/modules/Extensions/Extensions.pro b/src/modules/Extensions/Extensions.pro
  121. index 930f141..f4854f8 100644
  122. --- a/src/modules/Extensions/Extensions.pro
  123. +++ b/src/modules/Extensions/Extensions.pro
  124. @@ -3,8 +3,14 @@ CONFIG += plugin
  125.  
  126.  QT += widgets
  127.  
  128. -DESTDIR = ../../../app/lib/qmplay2/modules
  129. -QMAKE_LIBDIR += ../../../app/lib
  130. +haiku {
  131. +   DESTDIR = ../../../app/modules
  132. +   QMAKE_LIBDIR += ../../../app/lib
  133. +}
  134. + else {
  135. +   DESTDIR = ../../../app/lib/qmplay2/modules
  136. +   QMAKE_LIBDIR += ../../../app/lib
  137. +}
  138.  
  139.  LIBS += -lqmplay2
  140.  
  141. diff --git a/src/modules/FFmpeg/FFmpeg.pro b/src/modules/FFmpeg/FFmpeg.pro
  142. index 7939af0..2bbd1da 100644
  143. --- a/src/modules/FFmpeg/FFmpeg.pro
  144. +++ b/src/modules/FFmpeg/FFmpeg.pro
  145. @@ -3,8 +3,14 @@ CONFIG += plugin
  146.  
  147.  QT += widgets
  148.  
  149. -DESTDIR = ../../../app/lib/qmplay2/modules
  150. -QMAKE_LIBDIR += ../../../app/lib
  151. +haiku {
  152. +   DESTDIR = ../../../app/modules
  153. +   QMAKE_LIBDIR += ../../../app/lib
  154. +}
  155. + else {
  156. +   DESTDIR = ../../../app/lib/qmplay2/modules
  157. +   QMAKE_LIBDIR += ../../../app/lib
  158. +}
  159.  
  160.  android: LIBS += -lavformat -lavcodec -lswscale -lavutil
  161.  else {
  162. @@ -27,7 +33,7 @@ DEPENDPATH += . ../../qmplay2/headers
  163.  HEADERS += FFmpeg.hpp FFDemux.hpp FFDec.hpp FFDecSW.hpp FFReader.hpp FFCommon.hpp FormatContext.hpp OggHelper.hpp OpenThr.hpp
  164.  SOURCES += FFmpeg.cpp FFDemux.cpp FFDec.cpp FFDecSW.cpp FFReader.cpp FFCommon.cpp FormatContext.cpp OggHelper.cpp OpenThr.cpp
  165.  
  166. -unix:!android {
  167. +unix:!android:!haiku {
  168.     PKGCONFIG += libavdevice
  169.     DEFINES   += QMPlay2_libavdevice
  170.  
  171. diff --git a/src/modules/Inputs/Inputs.pro b/src/modules/Inputs/Inputs.pro
  172. index 387d1bc..fba4df2 100644
  173. --- a/src/modules/Inputs/Inputs.pro
  174. +++ b/src/modules/Inputs/Inputs.pro
  175. @@ -3,8 +3,14 @@ CONFIG += plugin
  176.  
  177.  QT += widgets
  178.  
  179. -DESTDIR = ../../../app/lib/qmplay2/modules
  180. -QMAKE_LIBDIR += ../../../app/lib
  181. +haiku {
  182. +   DESTDIR = ../../../app/modules
  183. +   QMAKE_LIBDIR += ../../../app/lib
  184. +}
  185. + else {
  186. +   DESTDIR = ../../../app/lib/qmplay2/modules
  187. +   QMAKE_LIBDIR += ../../../app/lib
  188. +}
  189.  
  190.  LIBS += -lqmplay2
  191.  
  192. diff --git a/src/modules/MediaKit/MediaKit.cpp b/src/modules/MediaKit/MediaKit.cpp
  193. new file mode 100644
  194. index 0000000..1647325
  195. --- /dev/null
  196. +++ b/src/modules/MediaKit/MediaKit.cpp
  197. @@ -0,0 +1,65 @@
  198. +#include <MediaKit.hpp>
  199. +#include <MediaKitWriter.hpp>
  200. +
  201. +MediaKit::MediaKit() :
  202. +   Module( "MediaKit" )
  203. +{
  204. +   moduleImg = QImage( ":/MediaKit" );
  205. +
  206. +   init( "WriterEnabled", true );
  207. +   init( "Delay", 0.2 );
  208. +}
  209. +
  210. +QList< MediaKit::Info > MediaKit::getModulesInfo( const bool showDisabled ) const
  211. +{
  212. +   QList< Info > modulesInfo;
  213. +   if ( showDisabled || getBool( "WriterEnabled" ) )
  214. +       modulesInfo += Info( MediaKitWriterName, WRITER, QStringList( "audio" ) );
  215. +   return modulesInfo;
  216. +}
  217. +void *MediaKit::createInstance( const QString &name )
  218. +{
  219. +   if ( name == MediaKitWriterName && getBool( "WriterEnabled" ) )
  220. +       return new MediaKitWriter( *this );
  221. +   return NULL;
  222. +}
  223. +
  224. +MediaKit::SettingsWidget *MediaKit::getSettingsWidget()
  225. +{
  226. +   return new ModuleSettingsWidget( *this );
  227. +}
  228. +
  229. +QMPLAY2_EXPORT_PLUGIN( MediaKit )
  230. +
  231. +/**/
  232. +
  233. +#include <QDoubleSpinBox>
  234. +#include <QGridLayout>
  235. +#include <QCheckBox>
  236. +#include <QLabel>
  237. +
  238. +ModuleSettingsWidget::ModuleSettingsWidget( Module &module ) :
  239. +   Module::SettingsWidget( module )
  240. +{
  241. +   enabledB = new QCheckBox( tr( "Włączony" ) );
  242. +   enabledB->setChecked( sets().getBool( "WriterEnabled" ) );
  243. +
  244. +   QLabel *delayL = new QLabel( tr( "Opóźnienie" ) + ": " );
  245. +
  246. +   delayB = new QDoubleSpinBox;
  247. +   delayB->setRange( 0.01, 1.0 );
  248. +   delayB->setSingleStep( 0.01 );
  249. +   delayB->setSuffix( " " + tr( "sek" ) );
  250. +   delayB->setValue( sets().getDouble( "Delay" ) );
  251. +
  252. +   QGridLayout *layout = new QGridLayout( this );
  253. +   layout->addWidget( enabledB, 0, 0, 1, 2 );
  254. +   layout->addWidget( delayL, 1, 0, 1, 1 );
  255. +   layout->addWidget( delayB, 1, 1, 1, 1 );
  256. +}
  257. +
  258. +void ModuleSettingsWidget::saveSettings()
  259. +{
  260. +   sets().set( "WriterEnabled", enabledB->isChecked() );
  261. +   sets().set( "Delay", delayB->value() );
  262. +}
  263. diff --git a/src/modules/MediaKit/MediaKit.hpp b/src/modules/MediaKit/MediaKit.hpp
  264. new file mode 100644
  265. index 0000000..16920f6
  266. --- /dev/null
  267. +++ b/src/modules/MediaKit/MediaKit.hpp
  268. @@ -0,0 +1,31 @@
  269. +#include <Module.hpp>
  270. +
  271. +class MediaKit : public Module
  272. +{
  273. +public:
  274. +   MediaKit();
  275. +private:
  276. +   QList< Info > getModulesInfo( const bool ) const;
  277. +   void *createInstance( const QString & );
  278. +
  279. +   SettingsWidget *getSettingsWidget();
  280. +};
  281. +
  282. +/**/
  283. +
  284. +#include <QCoreApplication>
  285. +
  286. +class QDoubleSpinBox;
  287. +class QCheckBox;
  288. +
  289. +class ModuleSettingsWidget : public Module::SettingsWidget
  290. +{
  291. +   Q_DECLARE_TR_FUNCTIONS( ModuleSettingsWidget )
  292. +public:
  293. +   ModuleSettingsWidget( Module & );
  294. +private:
  295. +   void saveSettings();
  296. +
  297. +   QCheckBox *enabledB;
  298. +   QDoubleSpinBox *delayB;
  299. +};
  300. diff --git a/src/modules/MediaKit/MediaKit.png b/src/modules/MediaKit/MediaKit.png
  301. new file mode 100644
  302. index 0000000000000000000000000000000000000000..36cb89c5e5200c5b613e4cf005b772df61aef49c
  303. GIT binary patch
  304. literal 5396
  305. zcmV+v73=DWP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF000!*Nkl<Zc%1E<
  306. zd6ZmLoyR}#zE`iRy1J{=omA4@>1<6FprHd1$Uua_7y$_eS%QE%L=ndUbzGUafkzy0
  307. z5K$OpK;(=98j&Cv0xD}p1ci`D!UV`lmhMivtC#AkuH~(F{<yDRS1-X%!12r(e&^iN
  308. z^<Lfg>VCh!<^JyP-iCMN9eGFoKa2J^{{5-INx%uf9AG-o2*iOHPz16-C$JUR1Uv)0
  309. z4)}kA@xEmdz^TAZC=l{6+g{*0V8&Y=(EpYNq<~KVA46#xfD;$A^5ILDFn9KJCQhuS
  310. zzCKB9Z8bI3Rd}AnvTQ8dp;&b2+@EIC=IuPZW*tvHy}tYk7x)k0TR_j@4D7E>Kojsq
  311. z;8Q>qz(+1QgAXh{h52o>X_?hX#Lz(-ISj4huQu%3_az;jy{uXLdp`ZSn<^h#jB<}d
  312. zlD`%Kao|h9SAx%6ckK!;Uj80tAJG(ak$+)GmEc7{QpGi}uRYB@_x*;ifAh}r!&d>f
  313. zAId=g8U&nyGRqc#?_Pg77hZ5GGpD5(0<Gegl+d5<r)OW9^qvD`_NN(WPgCj}z$+Co
  314. zlS!&3)l)a4kx4VB(s;ylCO0>r2_qmxfD}CP*dJJS!M~J$|69Pd;~nhVNkAO99{3!<
  315. z)nB-fPyf@|Oq)6}04zcJNa@qHx0@X=ZDrdN>&b2Z(-^Nx;Z@HCq6oJOt+XZlX2Q{@
  316. zbNoeTan#9eM9e6lgC=<G`R6%$@yc?yaa+RMMZhfJAz*$g1$W=RlC#fTfUXC?@o{a3
  317. z?HhNp@mJ5%vteEMpj&l1J=2%ao0?0ywuyA@L^6pQbTdMYX^@B-)ZtKD7+^xCgW5MX
  318. zl6dhhCd`?_`@eh{lczPJEJ5S7wLj<Ri|#JJdR#H#?I7Tk0Q}@jKXfYBU2_2~GgBa4
  319. zz{mGIwyxjCpMLUNayvFFI${gxobwU3H5|_$>!y+xItY!Fp%c{w2~#H;(L(~NB05zO
  320. zotPmoghrK9VB*V9G2!uRxahXeGr74DG#v)|S@VNSIQKi@*i!t3*+GAc;4c8y0JXP&
  321. z|1z#wxs=J1;vh?aO?qD^Pu#MG|Nhy}u=~4k>dt2S!f*4)30Lya<W{!Ek`&5;O=u)E
  322. z4MPYtp<(KRs4g%KK}1*05E{A=h)9&ujH9uRUP|X3w=n<AqtJB?qH*TcO~5Fu=b2Xk
  323. zl}!Ei%>cX=3%D4#56~aH?@G>F)`q6JAYDAyWy@2W*m&o?cs@AhiR?T5YW_6!B)VKd
  324. zcgZDf```sZQPTno5TFZcOr2`e7}EkG0WpTq&@`y(*v^Gj_t19Qe9#OS=x5*B%b9)!
  325. zpz?&-z@CGFI9v<309Xa+k3D!5%a$IAh6R);W;6WpN5A8ZUq1qXck=agU3xuTP4gJ^
  326. zHS(^+@g!LfH4Q+hhJ?^SD1f@qh#5MjA&5tGOkH5=0z;_pgr=HTJCTm3x3lPEsU`+9
  327. zN^Q?JCRKOwn~exmD!uOQB;XX3*+(8*{g1r=jF!OU^W+Y6^Wyi{klVHqE!Ilp;}77T
  328. zz8s=)Y)?{fCAKRmdJ@Bz6v{CYK+_ZfnnqM;L<|uU5H$o5QFZ~<gwW754Gr+?8fev@
  329. zqq;V#-ZfaFA@VXmP&$|e+{!@`4{?a#X8{ib(be~Ug!jL18puJA17!E^<JDVNA$zxC
  330. zHeN{bE5D)YU8j<a8YCiuWK^d<rc+}Isw0A^p$&IH3F$G0Xb9Cw4{{-0BLrT4yfmqq
  331. z*S0tyiy#Y7*F<wYEN%nT0&CvE038Yeaa6QV-Tu90oPW+tkU8-C$?x08-v4|A!%1V#
  332. zz7pfJKO)jF4O7>MM>LYA0zWwsp(d(R6H&n}rO;H6Aji~`9`w;PrF8*lBiMU>`w<}X
  333. ziiAWQA>h1)VTZ+U2Lb;I%)fMb8!IlIgGLtoEOt6g&o7=J;-&Fte2(4^-GCFX#gh_U
  334. z(=dca)X<a_n1ZJ2NN5F0okJkX;B7gY1rd_Ku;oFSGi%B$rF~fd-2>pbS>fZy9t@N*
  335. zPVi>{pHHRWy04x<JX!$1h?mckdH9bQUK%&`NjARk>%>Kj8b<+$>WYAvA*eCI@g-T?
  336. zCzXhhvwa2)LE4ev2PmW*3XJ|}5_C-)W&R+MzK>f|4}K0b3xs;MsXpv<P!|{v0dZ7r
  337. z&)v72P0I`o<N(qwQG8+xdcK`P{2U%Q?yD572r1ny4;S#&T&`>Q5sjp;Gb!$qwR8rm
  338. z3^FB;l<t%Ev?1V9jw*HNLPOUybd6EwF9WWeNKC~eVjv;_#3Et0CJrLwA>d0u%hjK4
  339. z<Lo8%;Aa5~cT+psfvsr9Jnn72mKUrTsk|FL<oJ?$41^{zb&aSl@FFlNZjiHm`br)X
  340. zVmbr1r)F!9Fc79HT)?O>eNEFwn7`7#=lkeF1O#|09{{351SAiafF{(Emd{+#f-VL@
  341. zmhjU#<exX93wSE=ZSJRms-p6{lIvr6mF8=JDZ+s0NkK!xAZvLHSRR>@hvoRBy`b0=
  342. zfOjigAT<5q_(Sa@C7$gl|3`wQzOS%=_~8=pMIip&Z?@6g=&SkOv*Cqp2n}`{EBS)H
  343. z0ITFu<Lg+yWKsqAAtDqBQC*`dB1oD#Q)?m&SRTCvm+q3QR4glEL51i+s8;^3;8$wj
  344. z_B`UnTtI*iC0ji=l;xBThk(hbN)8t;n-oOYBJAox>rLZpZQP_^M0+`-^F3_WSEa0=
  345. zmE1~aHV{!kL}=7R1&(hpIT2xE-le8cPK^mkNN8|$m4=9FxF{<S49%Jn@O+8qs|A;l
  346. z?Nj5!2TPeiuJG0fxE!duZsj~?HUs{k(*Da^(KJ}6eSy131`%A6_BB#cquZAheTnT!
  347. zY<Fbg)}SUTh#7*~C^RMvvb83?1sA*Iv0{qHX>;NnJ0r=Y2{DAG;kqu_e34x}Hh<2T
  348. z?3A^k_I=;S^*n6XV`i)~$Vh##iU4GW2<SXi0tBjn$;Ic@1*T=g?hF(m&sp4{{he~g
  349. zuvRNcJE#SY5BL%*Afn*P&>eJPP;CmTB7%lQguLUE%;q?KdWn{%B*|oySWLrnT^!%X
  350. zwr%WUo`l`ck%b;a)@19%6L5U6JrB!vDA+cq9JLi>;QYA^0DZX-&)!2NU=c9qqsvpw
  351. zo=IT-7QD6#G*~AtW1VJJ_-cjkdXV;2P)oT!gN`4%gXQ|zo@8oGgc?&PhRvjo7dR$j
  352. zQ5#L+c^<Z{{8!U7JkO(8ERxM;>FevGr>BQPdplmQgV(YU%W<(?7ss+VX2vsWj2@8L
  353. z1wii*0oxCifMo#Zystjcz6HH`7z9T<k=u<0q|iv07c*hZsvyEuZlNqfl5>X74inrS
  354. zc0Y4Jsbm$-lqp!2MX{(%*Rm|6lsJyV;NT$HY?hv$9y&TYXm4+)>(5)LYG}psAaB{!
  355. zckCo0_5dbioiLBsK4kbC4wZnV0P|Z>;H3i{fS%$N{iCcm;vgj{LE!&#L;@qjIV$bQ
  356. z&>B2XGH7}9ba$bzyOUH+lp3><LZLt`77M`(Awuov^LhIE`snKFqO-G;&dyG{4jf=Y
  357. z`!3x2W(p;X%bGR@;{-Cw4Qv<gSr_67HxkA}z*OL<6WgF=ItsjR!vR2tb;gO*XhP-d
  358. zK3Gzc5@o=?TG5pW3Ee`HF8Sa&6bl7-=0>JO3MBL?<n#Fue5q6-5>b=4<2dB=d9v9o
  359. z>2#WOI!$+XH(gy_^z`)LbnYfvm7+M1<?OQ`Qop5H(3b{aR~Kwlp71J4ed8wJB!CYu
  360. zPZ2R3kTw(m&!nUu!voP7#HB_gNK{OzOx%_d%hOaA7tRbaEC?edX<JhN(rTQpZRG3f
  361. zLhbs#PpMQQ7K@>28d6G1r4qSZj!Y&)e}6yebei7YUIqpR=<Dml$Yv<z^0dCOnONjm
  362. zAO!<}3L$KIBgFIQ!N4DkfOi4RorMCA1-W{NM0vwF3rv%!?-NC3YeoP#;!8}uk_;J=
  363. zp@@*AI=8}xdnhH76bc3U`}+Z9_StL}!!Qs+;JPk_LV<ifPbQNYMnpcJ$FeLkwh!4s
  364. zZuo~af%enG^t^V+>xZZqCjoN+Ce}mfSH%QGbarb;Qf2DIe3hCxK~VF2iS7HizQmJ~
  365. zxG!;ii6bSp=hN(i<$JK<Asok{P$;15I({(CB@zh?!$8+{JkP^*U5dqGXa%`kj={k}
  366. za=9GobUGNO$(il1(opw+x*P<8sJ~-B+_x^o^8-{K@aypsFdd-2w&ISPgb3_0rctdM
  367. zxD}~tIcIl$A3yl)cybge#g4t?Ha$eH;<cXVg^^weMXK-nIF1t%Wm#6J^&#*;q=s9r
  368. zxO?cjlQ1t?^{l$p+}uoid%FqTk8<tJ;~}6CpthD^dP{>$f@!lSGKsjR<BdT8=pg}R
  369. zf?QvQ#O&{Wopd@)DwQIa%VFDgXzF@J(q6Uz$8oT2do*x>wk6y!>vigDf{J$mrF{){
  370. zcf&QS)b09uRS;-zZ;t}E0jG_JfH*)+RRA8qs70D3x<w79HoAyZNeC#H82R1a*PjOn
  371. zNw6#n%d&_@qodwu1-bkv;ANS68Y`9s8=^kS_l5fWz;o($OG^u&NN8_w2X!vtB;du$
  372. zSB*tL48Ze(D+xrBxY0UvjB%BbM-qbc*|m9Sm#Pw2DwP`Z{z0W>0lUBaGP>5T#@369
  373. z`~vp%z|}uh-Qw|~6>v*S3%hph0yvLx5Ksh?mYpV1en+ed>Boq;<0~OXQ02a|*u^5W
  374. z?;5l3xIkCPC(pl-8B@Nhz?Xmwpo8ndZEJ`6Rk~F<w*XEa`M$9T$O2OWD^y~d=$?+@
  375. z51|@$rh%Yh6G$ahTGTu^qC=3D72n~GPpuqEzxxOgJoXaYxLSQ~Zf+j-oMD78TSmTf
  376. zER}Ww6f0NIF%3OxQZF0~p$eV4Hnd5hhxe4`jbPVC1mBrvjOMme-wJkUJ(ZU~vl6Wg
  377. zJ{OE$hn-#UiGLsJnn)yuJz8N6wTzIl2-phH*;R4JC_=1;X+|#C#tQ&4v_)0fw4mHy
  378. zVK2;GeE#9UR?@nd-aDUFfmx!Q)KjA`xbTf1L!~DrlgUc0SBf|C##jVw2H3Qv;*Qn{
  379. zkvKEWzTp5z)ac5hs@oD@1{E9MW9o@Z4h3>3Eh}yyd&kq%*PtT46Tr|w3i!#Ru<FU7
  380. z{%vh-)YjHwnr29X7e;hO1)Q-6cn09%-+^CV-T6;~p>agj{xJtxF6Wm)`%+bFJWn;p
  381. z^{8o{!=lf8?+}nL;Odn(v*U`dP!nUw@5^Hn@ZeK$)xQmY?D*r4r>?G!>gsCZ@i>NI
  382. z;JRV8dQ@FtEIWA}*!$$OOz$`V)0$9uHhY+ss3Mgq(e1^`(8E%I3|R0hh(Jng&qGRy
  383. z?Rv~O<D-bWMqa=FCem9sjt#tZ2^_PSJr}&f^wbxE>QV&(02(~@dszPE;g4Q&$tBF2
  384. zH;;}EwJ0cOmzhka+~uY55a0tp1-`N7aky$laMyVl5u3{ywcEJ2?^p#`As+?W3rxQZ
  385. zT>8GM+_*l8qZZM6^?cI%c2VqZCzsEulDJU?iF$rFa~JQO`(t!-mojyO@@|M4nSjTh
  386. zg{4;wAM~O{i#Ye(bHk#F5F%V$ZQHi3-0ks^U=MacVg|4SF!sI((;86hi_4JFW&FJT
  387. z-Mmzs7~mfb-1j^jUk(9xTx{Q`P_nRWhmvJeC|L{?OIRff9GmYLJ2`LmBh)2+t3XFk
  388. zDOo)Dtd0Tk;8U>tOQQ$8YSk(l8X6cF7@)tupRTSh_V3@%&Ye41yLK(8x?l?<0^z|D
  389. zy8+bsnuQZ5z-bFpsx;<pLi6GrSyx5ARLdSKjvHv&@jO-2^UA*OQF0uLwu9q(6m50t
  390. zGhZw*SS*n%Sv1=vt`V<u^R(5xyYYL(%^gEg)f@s2P_W>~zk(Iljvnk?cily6Yb(00
  391. z4{L^Duwlc7aw>ci@L%J#0DwsZQFG1R@PYTDOwa@THZad+hkFK3rCZogNQN5sg623b
  392. zCC61|YsaBrIoOUvqEz4l+0H4(D;%46jF_=LoX^7+sURQ%JG<3Xw`!CD!_7C}%)*5W
  393. zF-;RKD5IB`(Ob4`Vdct|Wren&Qm0|^X8Qs?sD1UPmt798{^4?tYFeW>@i)WZW@bBg
  394. zFgvlBZ1u_Pc8{TBu!aMr82y&OMk26CdO0SMp-Hqe)!0r`@@XR4meKR4huS0534@*M
  395. z!K2T^6}Jta=K<!;o5w{LUBuL>QyCl_B#}rEjYcsHgIFwvZQDHhXjlxoZY=Qd<`z(v
  396. zD}f&Zyt@8+j+(L)@^`Djx~PSSjhdg!e_e*=>vEF}kL2ZF_kzBXA>WU{z8u{41l;(m
  397. z(F1C2ZKbWPjTtj$(A3mKDwPVSKGQT2Lh#F9{*oJSyb)AEbW!jtqhvgbyY(m|{rex@
  398. z^%M(Ey^wkHKL$=cSZTFeT%MmjMo(KKxB2~ms3NM0Q({<H+T8;`S_eySgy&ux{%CV^
  399. zGc#w-q^_<GDJ8D!BBewK5&FFlg6E!lj%%;I7L@6q#TW_Dp%4J-lvNs7`iuLY#)#K5
  400. z>$o$iZMhh#mw<jOXtRK6KnlDn#hG6ZUKE@JloF6Hs38?mR#GNNgB?Ba!{5UP?|>&?
  401. z9S*v&v5|&`hA_wXg5089Jn=jaUDwexjTc{hk*|I2YoIj#LEfY!4u^hD@IAoO<%`>H
  402. z{b!baU=dRr>k+;Ub`c60)iV2`Zy#jSkn4it02D27(%^&R!Oje9>V&mh;l7HzsHLTa
  403. zcsxFANjp*u!yu7JkVqt`udgSSO3~5L!Rpnk%iu2o9{fvy4(FicB;XsU*kAxGS+an0
  404. z&soHA$4sXwRZYw<5_K}ftO4|a4szXHWV*ZQ>+7SpH_i4g_}R;_zJ2(Mo12@%GS+y+
  405. zFbv}HI6??IIy%Zlj{#sg@WgoD@m5ZX&Hz3RtRN_)9)`S%s@uPTs@|H1LPEJ<8qD*c
  406. z%>Bc>$zI?{c{>hE3)CT`#i-L*^H3*ClBhhc6tqrMHnttLSGS(wJ2vN{s<%;4ZV-t?
  407. z!g4tb6->vd5)YuJx?4F&wEw>%ZNRe(pF`fP?FGILjNflY$lv<k=Ef3%`Zv1sQ8m04
  408. yR3*nl%|zQ#*7G><0%H_8-jR3Y9eGE_EB^yvNfC*>uwT*u0000<MNUMnLSTZ?Yewh*
  409.  
  410. literal 0
  411. HcmV?d00001
  412.  
  413. diff --git a/src/modules/MediaKit/MediaKit.pro b/src/modules/MediaKit/MediaKit.pro
  414. new file mode 100644
  415. index 0000000..96de9dd
  416. --- /dev/null
  417. +++ b/src/modules/MediaKit/MediaKit.pro
  418. @@ -0,0 +1,21 @@
  419. +TEMPLATE = lib
  420. +CONFIG += plugin
  421. +
  422. +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  423. +
  424. +DESTDIR = ../../../app/modules
  425. +
  426. +QMAKE_LIBDIR += ../../../app/lib
  427. +LIBS += -lqmplay2 -lmedia -lbe
  428. +
  429. +RCC_DIR = build/rcc
  430. +OBJECTS_DIR = build/obj
  431. +MOC_DIR = build/moc
  432. +
  433. +RESOURCES += icon.qrc
  434. +
  435. +INCLUDEPATH += . ../../qmplay2/headers
  436. +DEPENDPATH += . ../../qmplay2/headers
  437. +
  438. +HEADERS += MediaKit.hpp MediaKitoWriter.hpp SndPlayer.hpp RingBuffer.hpp
  439. +SOURCES += MediaKit.cpp MediaKitWriter.cpp SndPlayer.cpp RingBuffer.cpp
  440. diff --git a/src/modules/MediaKit/MediaKitWriter.cpp b/src/modules/MediaKit/MediaKitWriter.cpp
  441. new file mode 100644
  442. index 0000000..f8fad50
  443. --- /dev/null
  444. +++ b/src/modules/MediaKit/MediaKitWriter.cpp
  445. @@ -0,0 +1,85 @@
  446. +#include <MediaKitWriter.hpp>
  447. +#include <QMPlay2Core.hpp>
  448. +
  449. +MediaKitWriter::MediaKitWriter( Module &module ) :
  450. +   err( false )
  451. +{
  452. +   addParam( "delay" );
  453. +   addParam( "chn" );
  454. +   addParam( "rate" );
  455. +
  456. +   SetModule( module );
  457. +}
  458. +
  459. +bool MediaKitWriter::set()
  460. +{
  461. +   if ( player.delay != sets().getDouble( "Delay" ) )
  462. +   {
  463. +       player.delay = sets().getDouble( "Delay" );
  464. +       return false;
  465. +   }
  466. +   return sets().getBool( "WriterEnabled" );
  467. +}
  468. +
  469. +bool MediaKitWriter::readyWrite() const
  470. +{
  471. +   return !err && player.isOpen();
  472. +}
  473. +
  474. +bool MediaKitWriter::processParams( bool * )
  475. +{
  476. +   bool resetAudio = false;
  477. +
  478. +   uchar chn = getParam( "chn" ).toUInt();
  479. +   if ( player.channels != chn )
  480. +   {
  481. +       resetAudio = true;
  482. +       player.channels = chn;
  483. +   }
  484. +   uint rate = getParam( "rate" ).toUInt();
  485. +   if ( player.sample_rate != rate )
  486. +   {
  487. +       resetAudio = true;
  488. +       player.sample_rate = rate;
  489. +   }
  490. +
  491. +   if ( resetAudio || err )
  492. +   {
  493. +       player.stop();
  494. +       err = !player.start();
  495. +       if ( !err )
  496. +           modParam( "delay", player.delay );
  497. +       else
  498. +           QMPlay2Core.logError( "MediaKitWriter :: " + tr ( "Nie można otworzyć strumienia wyjścia dźwięku" ) );
  499. +   }
  500. +
  501. +   return readyWrite();
  502. +}
  503. +qint64 MediaKitWriter::write( const QByteArray &arr )
  504. +{
  505. +   if ( !arr.size() || !readyWrite() )
  506. +       return 0;
  507. +
  508. +   err = !player.write( arr );
  509. +   if ( err )
  510. +   {
  511. +       QMPlay2Core.logError( "MediaKitWriter :: " + tr ( "Błąd podczas odtwarzania" ) );
  512. +       return 0;
  513. +   }
  514. +
  515. +   return arr.size();
  516. +}
  517. +
  518. +qint64 MediaKitWriter::size() const
  519. +{
  520. +   return -1;
  521. +}
  522. +QString MediaKitWriter::name() const
  523. +{
  524. +   return MediaKitWriterName;
  525. +}
  526. +
  527. +bool MediaKitWriter::open()
  528. +{
  529. +   return player.isOK();
  530. +}
  531. diff --git a/src/modules/MediaKit/MediaKitWriter.hpp b/src/modules/MediaKit/MediaKitWriter.hpp
  532. new file mode 100644
  533. index 0000000..28fa249
  534. --- /dev/null
  535. +++ b/src/modules/MediaKit/MediaKitWriter.hpp
  536. @@ -0,0 +1,30 @@
  537. +#include <Writer.hpp>
  538. +#include <SndPlayer.hpp>
  539. +
  540. +#include <QCoreApplication>
  541. +
  542. +class MediaKitWriter : public Writer
  543. +{
  544. +   Q_DECLARE_TR_FUNCTIONS( MediaKitWriter )
  545. +public:
  546. +   MediaKitWriter( Module & );
  547. +private:
  548. +   bool set();
  549. +
  550. +   bool readyWrite() const;
  551. +
  552. +   bool processParams( bool *paramsCorrected );
  553. +   qint64 write( const QByteArray & );
  554. +
  555. +   qint64 size() const;
  556. +   QString name() const;
  557. +
  558. +   bool open();
  559. +
  560. +   /**/
  561. +
  562. +   SndPlayer player;
  563. +   bool err;
  564. +};
  565. +
  566. +#define MediaKitWriterName "MediaKit Writer"
  567. diff --git a/src/modules/MediaKit/RingBuffer.cpp b/src/modules/MediaKit/RingBuffer.cpp
  568. new file mode 100644
  569. index 0000000..915becc
  570. --- /dev/null
  571. +++ b/src/modules/MediaKit/RingBuffer.cpp
  572. @@ -0,0 +1,129 @@
  573. +#include <stdio.h>
  574. +#include <stdlib.h>
  575. +#include <string.h>
  576. +
  577. +#include "RingBuffer.hpp"
  578. +
  579. +RingBuffer::RingBuffer( int size )
  580. +{
  581. +    initialized = false;
  582. +     Buffer = new unsigned char[size];
  583. +     if(Buffer!=NULL) {
  584. +       memset( Buffer, 0, size );
  585. +       BufferSize = size;      
  586. +     } else {
  587. +       BufferSize = 0;
  588. +     }
  589. +     reader = 0;
  590. +     writer = 0;
  591. +     writeBytesAvailable = size;
  592. +     if((locker=create_sem(1,"locker")) >= B_OK) {
  593. +       initialized = true;
  594. +     } else {
  595. +       if(Buffer!=NULL) {
  596. +           delete[] Buffer;           
  597. +       }
  598. +     }
  599. +}
  600. +
  601. +RingBuffer::~RingBuffer( )
  602. +{
  603. +    if(initialized) {
  604. +       delete[] Buffer;
  605. +       delete_sem(locker);
  606. +    }
  607. +}
  608. +
  609. +bool
  610. +RingBuffer::Empty( void )
  611. +{
  612. +     memset( Buffer, 0, BufferSize );
  613. +     reader = 0;
  614. +     writer = 0;
  615. +     writeBytesAvailable = BufferSize;
  616. +     return true;
  617. +}
  618. +
  619. +int
  620. +RingBuffer::Read( unsigned char *data, int size )
  621. +{ 
  622. +    acquire_sem(locker);
  623. +    
  624. +     if( data == 0 || size <= 0 || writeBytesAvailable == BufferSize ) {
  625. +        release_sem(locker);
  626. +         return 0;
  627. +     }
  628. +
  629. +     int readBytesAvailable = BufferSize - writeBytesAvailable;
  630. +
  631. +     if( size > readBytesAvailable ) {
  632. +         size = readBytesAvailable;
  633. +     }
  634. +
  635. +     if(size > BufferSize - reader) {
  636. +         int len = BufferSize - reader;
  637. +         memcpy(data, Buffer + reader, len);
  638. +         memcpy(data + len, Buffer, size-len);
  639. +     } else {
  640. +         memcpy(data, Buffer + reader, size);
  641. +     }
  642. +
  643. +     reader = (reader + size) % BufferSize;
  644. +     writeBytesAvailable += size;
  645. +    
  646. +    release_sem(locker);
  647. +     return size;
  648. +}
  649. +
  650. +int
  651. +RingBuffer::Write( unsigned char *data, int size )
  652. +{
  653. +    acquire_sem(locker);
  654. +    
  655. +     if( data == 0 || size <= 0 || writeBytesAvailable == 0 ) {
  656. +        release_sem(locker);
  657. +         return 0;
  658. +     }
  659. +
  660. +     if( size > writeBytesAvailable ) {
  661. +         size = writeBytesAvailable;
  662. +     }
  663. +
  664. +     if(size > BufferSize - writer) {
  665. +         int len = BufferSize - writer;
  666. +         memcpy(Buffer + writer, data, len);
  667. +         memcpy(Buffer, data+len, size-len);
  668. +     } else {
  669. +         memcpy(Buffer + writer, data, size);
  670. +     }
  671. +
  672. +     writer = (writer + size) % BufferSize;
  673. +     writeBytesAvailable -= size;
  674. +
  675. +    release_sem(locker);    
  676. +     return size;
  677. +}
  678. +
  679. +int
  680. +RingBuffer::GetSize( void )
  681. +{
  682. +     return BufferSize;
  683. +}
  684. +
  685. +int
  686. +RingBuffer::GetWriteAvailable( void )
  687. +{
  688. +     return writeBytesAvailable;
  689. +}
  690. +
  691. +int
  692. +RingBuffer::GetReadAvailable( void )
  693. +{
  694. +     return BufferSize - writeBytesAvailable;
  695. +}
  696. +
  697. +status_t
  698. +RingBuffer::InitCheck( void )
  699. +{
  700. +   return initialized?B_OK:B_ERROR;
  701. +}
  702. diff --git a/src/modules/MediaKit/RingBuffer.hpp b/src/modules/MediaKit/RingBuffer.hpp
  703. new file mode 100644
  704. index 0000000..4715632
  705. --- /dev/null
  706. +++ b/src/modules/MediaKit/RingBuffer.hpp
  707. @@ -0,0 +1,31 @@
  708. +#ifndef __RING_BUFFER_H__
  709. +#define __RING_BUFFER_H__
  710. +
  711. +#include <OS.h>
  712. +
  713. +class RingBuffer {
  714. +
  715. +public:
  716. +     RingBuffer(int size);
  717. +     ~RingBuffer();
  718. +     int Read( unsigned char* dataPtr, int numBytes );
  719. +     int Write( unsigned char *dataPtr, int numBytes );
  720. +    
  721. +     bool Empty( void );
  722. +     int GetSize( );
  723. +     int GetWriteAvailable( );
  724. +     int GetReadAvailable( );
  725. +     status_t InitCheck( );
  726. +private:
  727. +     unsigned char *Buffer;
  728. +     int BufferSize;
  729. +     int reader;
  730. +     int writer;
  731. +     int writeBytesAvailable;
  732. +    
  733. +     sem_id locker;
  734. +    
  735. +     bool  initialized;
  736. +};
  737. +
  738. +#endif
  739. diff --git a/src/modules/MediaKit/SndPlayer.cpp b/src/modules/MediaKit/SndPlayer.cpp
  740. new file mode 100644
  741. index 0000000..ca7ad89
  742. --- /dev/null
  743. +++ b/src/modules/MediaKit/SndPlayer.cpp
  744. @@ -0,0 +1,103 @@
  745. +#include <SndPlayer.hpp>
  746. +
  747. +#include <string.h>
  748. +#include <stdio.h>
  749. +#include <stdlib.h>
  750. +#include <SoundPlayer.h>
  751. +
  752. +
  753. +static void proc(void *cookie, void *buffer, size_t len, const media_raw_audio_format &format)
  754. +{
  755. +   RingBuffer *ring = (RingBuffer*)cookie;
  756. +   unsigned char* ptr = (unsigned char*)buffer;
  757. +  
  758. +   int readed = ring->Read(ptr,len);
  759. +  
  760. +   if(readed <len)
  761. +       memset(ptr+readed, 0, len - readed);
  762. +}
  763. +
  764. +SndPlayer::SndPlayer()
  765. +{ 
  766. +   channels = sample_rate = delay = 0;
  767. +   player = NULL;
  768. +   _isOK = true;  
  769. +}
  770. +
  771. +bool SndPlayer::start()
  772. +{
  773. +   int gSoundBufferSize = 8192 * sizeof(float);
  774. +      
  775. +   media_raw_audio_format form = {
  776. +       sample_rate,
  777. +       channels,
  778. +       media_raw_audio_format::B_AUDIO_FLOAT,
  779. +       B_MEDIA_LITTLE_ENDIAN,
  780. +       gSoundBufferSize
  781. +   };
  782. +  
  783. +   ring = new RingBuffer(gSoundBufferSize * 3);
  784. +   if(ring->InitCheck() != B_OK) {
  785. +       delete ring; ring = 0;
  786. +       return false;
  787. +   }
  788. +          
  789. +   player = new BSoundPlayer(&form, "QMPlay2_BSoundPlayer", proc, NULL, (void*)ring);
  790. +  
  791. +   if(player->InitCheck() != B_OK) {
  792. +       delete player;
  793. +       player = NULL;
  794. +       return false;
  795. +   }
  796. +  
  797. +   player->Start();
  798. +   player->SetHasData(true);  
  799. +
  800. +   _isOK = true;
  801. +
  802. +   return player;
  803. +}
  804. +void SndPlayer::stop()
  805. +{
  806. +   if ( player )
  807. +   {
  808. +       if(player) {
  809. +           player->Stop();
  810. +           delete player;
  811. +           delete ring;
  812. +       }
  813. +  
  814. +       player = NULL;
  815. +       ring = NULL;
  816. +   }  
  817. +}
  818. +
  819. +double SndPlayer::getLatency()
  820. +{
  821. +   double lat = player->Latency() / (ring->GetSize()*4.0);
  822. +
  823. +   return lat;
  824. +}
  825. +
  826. +bool SndPlayer::write( const QByteArray &arr )
  827. +{
  828. +   int s = arr.size();
  829. +   while ( s > 0 && s % 4 )
  830. +       s--;
  831. +   if ( s <= 0 )
  832. +       return false;
  833. +
  834. +   int len=s;
  835. +
  836. +   unsigned char *src_ptr = (unsigned char *)arr.data();
  837. +  
  838. +   for(;;) {
  839. +           int len2 = ring->Write(src_ptr,len);
  840. +           if(len2 == len)break;
  841. +           len -= len2;
  842. +           src_ptr += len2;
  843. +           snooze(100);
  844. +   }
  845. +      
  846. +   return true;
  847. +}
  848. diff --git a/src/modules/MediaKit/SndPlayer.hpp b/src/modules/MediaKit/SndPlayer.hpp
  849. new file mode 100644
  850. index 0000000..b0ca8c2
  851. --- /dev/null
  852. +++ b/src/modules/MediaKit/SndPlayer.hpp
  853. @@ -0,0 +1,49 @@
  854. +#ifndef PULSE_HPP
  855. +#define PULSE_HPP
  856. +
  857. +#include <QByteArray>
  858. +
  859. +#include <SoundPlayer.h>
  860. +
  861. +#include <Window.h>
  862. +#include <View.h>
  863. +#include <TextControl.h>
  864. +
  865. +#include "RingBuffer.hpp"
  866. +
  867. +class SndPlayer
  868. +{
  869. +public:
  870. +   SndPlayer();
  871. +   inline ~SndPlayer()
  872. +   {
  873. +       stop();
  874. +   }
  875. +
  876. +   inline bool isOK() const
  877. +   {
  878. +       return _isOK;
  879. +   }
  880. +   inline bool isOpen() const
  881. +   {
  882. +       return player;
  883. +   }
  884. +
  885. +   bool start();
  886. +   void stop();
  887. +
  888. +   double getLatency();
  889. +
  890. +   bool write( const QByteArray & );
  891. +
  892. +   double delay;
  893. +   uchar channels;
  894. +   uint sample_rate;
  895. +      
  896. +private:
  897. +   bool _isOK;
  898. +   BSoundPlayer *player;
  899. +   RingBuffer *ring;
  900. +};
  901. +
  902. +#endif
  903. diff --git a/src/modules/MediaKit/icon.qrc b/src/modules/MediaKit/icon.qrc
  904. new file mode 100644
  905. index 0000000..24b4ebd
  906. --- /dev/null
  907. +++ b/src/modules/MediaKit/icon.qrc
  908. @@ -0,0 +1,3 @@
  909. +<RCC><qresource>
  910. +   <file alias="MediaKit">MediaKit.png</file>
  911. +</qresource></RCC>
  912. diff --git a/src/modules/Modplug/Modplug.pro b/src/modules/Modplug/Modplug.pro
  913. index bba6eac..cb52e21 100644
  914. --- a/src/modules/Modplug/Modplug.pro
  915. +++ b/src/modules/Modplug/Modplug.pro
  916. @@ -3,8 +3,15 @@ CONFIG += plugin
  917.  
  918.  QT += widgets
  919.  
  920. -DESTDIR = ../../../app/lib/qmplay2/modules
  921. -QMAKE_LIBDIR += ../../../app/lib
  922. +haiku {
  923. +   DESTDIR = ../../../app/modules
  924. +   QMAKE_LIBDIR += ../../../app/lib
  925. +   LIBS += -lz
  926. +}
  927. + else {
  928. +   DESTDIR = ../../../app/lib/qmplay2/modules
  929. +   QMAKE_LIBDIR += ../../../app/lib
  930. +}
  931.  
  932.  LIBS += -lqmplay2
  933.  
  934. diff --git a/src/modules/Playlists/Playlists.pro b/src/modules/Playlists/Playlists.pro
  935. index 12add39..934612c 100644
  936. --- a/src/modules/Playlists/Playlists.pro
  937. +++ b/src/modules/Playlists/Playlists.pro
  938. @@ -3,8 +3,14 @@ CONFIG += plugin
  939.  
  940.  QT += widgets
  941.  
  942. -DESTDIR = ../../../app/lib/qmplay2/modules
  943. -QMAKE_LIBDIR += ../../../app/lib
  944. +haiku {
  945. +   DESTDIR = ../../../app/modules
  946. +   QMAKE_LIBDIR += ../../../app/lib
  947. +}
  948. +else {
  949. +   DESTDIR = ../../../app/lib/qmplay2/modules
  950. +   QMAKE_LIBDIR += ../../../app/lib
  951. +}
  952.  
  953.  LIBS += -lqmplay2
  954.  
  955. diff --git a/src/modules/QPainter/QPainter.pro b/src/modules/QPainter/QPainter.pro
  956. index f6a5b2b..43e4e0c 100644
  957. --- a/src/modules/QPainter/QPainter.pro
  958. +++ b/src/modules/QPainter/QPainter.pro
  959. @@ -3,8 +3,14 @@ CONFIG += plugin
  960.  
  961.  QT += widgets
  962.  
  963. -DESTDIR = ../../../app/lib/qmplay2/modules
  964. -QMAKE_LIBDIR += ../../../app/lib
  965. +haiku {
  966. +   DESTDIR = ../../../app/modules
  967. +   QMAKE_LIBDIR += ../../../app/lib
  968. +}
  969. + else {
  970. +   DESTDIR = ../../../app/lib/qmplay2/modules
  971. +   QMAKE_LIBDIR += ../../../app/lib
  972. +}
  973.  
  974.  LIBS += -lqmplay2
  975.  
  976. diff --git a/src/modules/Subtitles/Subtitles.pro b/src/modules/Subtitles/Subtitles.pro
  977. index 7108557..2bdfe16 100644
  978. --- a/src/modules/Subtitles/Subtitles.pro
  979. +++ b/src/modules/Subtitles/Subtitles.pro
  980. @@ -3,8 +3,14 @@ CONFIG += plugin
  981.  
  982.  QT += widgets
  983.  
  984. -DESTDIR = ../../../app/lib/qmplay2/modules
  985. -QMAKE_LIBDIR += ../../../app/lib
  986. +haiku {
  987. +   DESTDIR = ../../../app/modules
  988. +   QMAKE_LIBDIR += ../../../app/lib
  989. +}
  990. + else {
  991. +   DESTDIR = ../../../app/lib/qmplay2/modules
  992. +   QMAKE_LIBDIR += ../../../app/lib
  993. +}
  994.  
  995.  LIBS += -lqmplay2
  996.  
  997. diff --git a/src/modules/VideoFilters/VideoFilters.pro b/src/modules/VideoFilters/VideoFilters.pro
  998. index 870fd70..f77c0b4 100644
  999. --- a/src/modules/VideoFilters/VideoFilters.pro
  1000. +++ b/src/modules/VideoFilters/VideoFilters.pro
  1001. @@ -3,8 +3,14 @@ CONFIG += plugin
  1002.  
  1003.  QT += widgets
  1004.  
  1005. +haiku {
  1006. +   DESTDIR = ../../../app/modules
  1007. +   QMAKE_LIBDIR += ../../../app/lib
  1008. +}
  1009. + else {
  1010.     DESTDIR = ../../../app/lib/qmplay2/modules
  1011.     QMAKE_LIBDIR += ../../../app/lib
  1012. +}
  1013.  
  1014.  android: LIBS += -lavutil
  1015.  else {
  1016. diff --git a/src/modules/Visualizations/Visualizations.pro b/src/modules/Visualizations/Visualizations.pro
  1017. index 388bd62..c759191 100644
  1018. --- a/src/modules/Visualizations/Visualizations.pro
  1019. +++ b/src/modules/Visualizations/Visualizations.pro
  1020. @@ -4,8 +4,14 @@ CONFIG += plugin
  1021.  !lessThan(QT_VERSION, 5.6.0): DEFINES += USE_OPENGL
  1022.  QT += widgets
  1023.  
  1024. -DESTDIR = ../../../app/lib/qmplay2/modules
  1025. -QMAKE_LIBDIR += ../../../app/lib
  1026. +haiku {
  1027. +   DESTDIR = ../../../app/modules
  1028. +   QMAKE_LIBDIR += ../../../app/lib
  1029. +}
  1030. + else {
  1031. +   DESTDIR = ../../../app/lib/qmplay2/modules
  1032. +   QMAKE_LIBDIR += ../../../app/lib
  1033. +}
  1034.  
  1035.  android: LIBS += -lavcodec -lavutil
  1036.  else {
  1037. diff --git a/src/modules/modules.pro b/src/modules/modules.pro
  1038. index 6e853ea..bcf23c4 100644
  1039. --- a/src/modules/modules.pro
  1040. +++ b/src/modules/modules.pro
  1041. @@ -10,11 +10,14 @@ linux*: {
  1042.     !android: SUBDIRS += ALSA
  1043.     else: SUBDIRS += OpenSLES
  1044.  }
  1045. +haiku {
  1046. +   SUBDIRS += MediaKit
  1047. +}
  1048.  else {
  1049.     SUBDIRS += PortAudio
  1050.  }
  1051.  
  1052. -unix:!android {
  1053. +unix:!android:!haiku: {
  1054.     SUBDIRS += XVideo
  1055.  
  1056.     packagesExist(libpulse-simple): SUBDIRS += PulseAudio
  1057. diff --git a/src/qmplay2/qmplay2.pro b/src/qmplay2/qmplay2.pro
  1058. index 2d34804..1c0c6c6 100644
  1059. --- a/src/qmplay2/qmplay2.pro
  1060. +++ b/src/qmplay2/qmplay2.pro
  1061. @@ -28,7 +28,7 @@ DEPENDPATH  += . headers
  1062.  HEADERS += headers/QMPlay2Core.hpp headers/Functions.hpp headers/Settings.hpp headers/Module.hpp headers/ModuleParams.hpp headers/ModuleCommon.hpp headers/Playlist.hpp headers/Reader.hpp headers/Demuxer.hpp headers/Decoder.hpp headers/VideoFilters.hpp headers/VideoFilter.hpp headers/DeintFilter.hpp headers/AudioFilter.hpp headers/Writer.hpp headers/QMPlay2Extensions.hpp headers/LineEdit.hpp headers/Slider.hpp headers/QMPlay2OSD.hpp headers/InDockW.hpp headers/LibASS.hpp headers/ColorButton.hpp headers/ImgScaler.hpp headers/SndResampler.hpp headers/VideoWriter.hpp headers/SubsDec.hpp headers/ByteArray.hpp headers/TimeStamp.hpp headers/Packet.hpp headers/VideoFrame.hpp headers/StreamInfo.hpp headers/DockWidget.hpp headers/IOController.hpp headers/ChapterProgramInfo.hpp headers/PacketBuffer.hpp headers/Buffer.hpp headers/NetworkAccess.hpp headers/Json11.hpp headers/YouTubeDL.hpp headers/Notifies.hpp headers/NotifiesTray.hpp headers/Version.hpp headers/IPC.hpp headers/MkvMuxer.hpp headers/CPU.hpp headers/PixelFormats.hpp headers/HWAccelInterface.hpp headers/VideoAdjustment.hpp
  1063.  SOURCES +=         QMPlay2Core.cpp         Functions.cpp         Settings.cpp         Module.cpp         ModuleParams.cpp         ModuleCommon.cpp         Playlist.cpp         Reader.cpp         Demuxer.cpp         Decoder.cpp         VideoFilters.cpp         VideoFilter.cpp         DeintFilter.cpp         AudioFilter.cpp         Writer.cpp         QMPlay2Extensions.cpp         LineEdit.cpp         Slider.cpp         QMPlay2OSD.cpp         InDockW.cpp         LibASS.cpp         ColorButton.cpp         ImgScaler.cpp         SndResampler.cpp         VideoWriter.cpp         SubsDec.cpp                                                                        VideoFrame.cpp         StreamInfo.cpp         DockWidget.cpp                                                                 PacketBuffer.cpp         Buffer.cpp         NetworkAccess.cpp         Json11.cpp         YouTubeDL.cpp         Notifies.cpp         NotifiesTray.cpp         Version.cpp    IPC_Unix.cpp         MkvMuxer.cpp
  1064.  
  1065. -unix:!android {
  1066. +unix:!android:!haiku {
  1067.     QT += dbus
  1068.     DBUS_INTERFACES += org.freedesktop.Notifications.xml
  1069.     HEADERS += headers/NotifiesFreedesktop.hpp
  1070. @@ -39,6 +39,6 @@ DEFINES += __STDC_CONSTANT_MACROS
  1071.  !android: DEFINES += QMPLAY2_LIBASS
  1072.  
  1073.  # Uncomment below lines for avresample:
  1074. -#DEFINES += QMPLAY2_AVRESAMPLE
  1075. -#PKGCONFIG -= libswresample
  1076. -#PKGCONFIG += libavresample
  1077. +DEFINES += QMPLAY2_AVRESAMPLE
  1078. +PKGCONFIG -= libswresample
  1079. +PKGCONFIG += libavresample
  1080. --
  1081. 2.12.2
  1082.  
  1083.  
  1084. From 72394ace59597caec9543941fba76abcad9c4f01 Mon Sep 17 00:00:00 2001
  1085. From: Khaled Berraoui <khallebal@gmail.com>
  1086. Date: Wed, 7 Jun 2017 01:06:09 +0100
  1087. Subject: Switch to Cmake build system
  1088.  
  1089.  
  1090. diff --git a/CMakeLists.txt b/CMakeLists.txt
  1091. index ebea6b6..b54b5a3 100644
  1092. --- a/CMakeLists.txt
  1093. +++ b/CMakeLists.txt
  1094. @@ -81,7 +81,7 @@ if(USE_QT5 AND NOT Qt5Widgets_FOUND)
  1095.      find_package(Qt5Widgets REQUIRED)
  1096.  endif()
  1097.  
  1098. -if(NOT WIN32 AND NOT APPLE)
  1099. +if(NOT WIN32 AND NOT APPLE AND NOT HAIKU)
  1100.      option(USE_FREEDESKTOP_NOTIFICATIONS "Use Freedesktop notifications" ON)
  1101.      add_feature_info("Freedesktop notifications" USE_FREEDESKTOP_NOTIFICATIONS "Use Freedesktop notifications")
  1102.  endif()
  1103. @@ -326,7 +326,7 @@ if(APPLE)
  1104.      set(DEFAULT_INSTALL_RPATH ON)
  1105.  endif()
  1106.  
  1107. -if(NOT WIN32 AND NOT APPLE)
  1108. +if(NOT WIN32 AND NOT APPLE AND NOT HAIKU)
  1109.      # RPATH
  1110.      option(SET_INSTALL_RPATH "Set RPATH for executable after install" ${DEFAULT_INSTALL_RPATH})
  1111.  
  1112. @@ -339,7 +339,7 @@ if(LANGUAGES)
  1113.      add_subdirectory(lang)
  1114.  endif()
  1115.  
  1116. -if(WIN32)
  1117. +if(WIN32 OR HAIKU)
  1118.      install(FILES AUTHORS ChangeLog LICENSE TODO README.md DESTINATION ${CMAKE_INSTALL_PREFIX})
  1119.  else()
  1120.      install(FILES AUTHORS ChangeLog LICENSE TODO README.md DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/qmplay2")
  1121. diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt
  1122. index f5f86be..9b4fcf7 100644
  1123. --- a/lang/CMakeLists.txt
  1124. +++ b/lang/CMakeLists.txt
  1125. @@ -21,7 +21,7 @@ endif()
  1126.  
  1127.  add_custom_target(translations ALL DEPENDS ${QM_FILES})
  1128.  
  1129. -if(WIN32)
  1130. +if(WIN32 OR HAIKU)
  1131.      install(FILES ${QM_FILES} DESTINATION "lang/")
  1132.  else()
  1133.      install(FILES ${QM_FILES} DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/qmplay2/lang")
  1134. diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
  1135. index 5853dc9..6adc25b 100644
  1136. --- a/src/gui/CMakeLists.txt
  1137. +++ b/src/gui/CMakeLists.txt
  1138. @@ -210,7 +210,7 @@ elseif(USE_TAGLIB)
  1139.      target_link_libraries(${PROJECT_NAME} ${TAGLIB_LIBRARIES})
  1140.  endif()
  1141.  
  1142. -if(WIN32)
  1143. +if(WIN32 OR HAIKU)
  1144.      install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/)
  1145.  elseif(APPLE)
  1146.      install(TARGETS ${PROJECT_NAME} BUNDLE DESTINATION ${CMAKE_INSTALL_PREFIX})
  1147. diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt
  1148. index 203c68d..9cd9e31 100644
  1149. --- a/src/modules/CMakeLists.txt
  1150. +++ b/src/modules/CMakeLists.txt
  1151. @@ -7,6 +7,9 @@ if(WIN32)
  1152.  elseif(APPLE)
  1153.      set(MODULES_INSTALL_PATH "${CMAKE_INSTALL_LIBDIR}/modules")
  1154.      set(QMPLAY2_MODULE SHARED) # otherwise CMake uses ".so" extension
  1155. +elseif(HAIKU)
  1156. +    set(MODULES_INSTALL_PATH "modules")
  1157. +    set(QMPLAY2_MODULE MODULE)
  1158.  else()
  1159.      set(MODULES_INSTALL_PATH "${CMAKE_INSTALL_LIBDIR}/qmplay2/modules")
  1160.      set(QMPLAY2_MODULE MODULE)
  1161. @@ -77,6 +80,10 @@ if(WIN32)
  1162.      add_subdirectory(FileAssociation)
  1163.  endif()
  1164.  
  1165. +if(HAIKU)
  1166. +   add_subdirectory(MediaKit)
  1167. +endif()
  1168. +
  1169.  if(USE_CUVID)
  1170.      add_subdirectory(CUVID)
  1171.  endif()
  1172. diff --git a/src/modules/MediaKit/CMakeLists.txt b/src/modules/MediaKit/CMakeLists.txt
  1173. new file mode 100644
  1174. index 0000000..c6a2e5b
  1175. --- /dev/null
  1176. +++ b/src/modules/MediaKit/CMakeLists.txt
  1177. @@ -0,0 +1,63 @@
  1178. +cmake_minimum_required(VERSION 2.8.6)
  1179. +if(COMMAND cmake_policy)
  1180. +    if(POLICY CMP0003)
  1181. +        cmake_policy(SET CMP0003 NEW)
  1182. +    endif()
  1183. +    if(POLICY CMP0020)
  1184. +        cmake_policy(SET CMP0020 NEW)
  1185. +    endif()
  1186. +    if(POLICY CMP0042)
  1187. +        cmake_policy(SET CMP0042 NEW)
  1188. +    endif()
  1189. +    if(POLICY CMP0043)
  1190. +        cmake_policy(SET CMP0043 NEW)
  1191. +    endif()
  1192. +endif()
  1193. +project(MediaKit)
  1194. +
  1195. +set(MediaKit_HDR
  1196. +    MediaKit.hpp
  1197. +    MediaKitWriter.hpp
  1198. +    SndPlayer.hpp
  1199. +    RingBuffer.hpp
  1200. +)
  1201. +
  1202. +set(MediaKit_SRC
  1203. +    MediaKit.cpp
  1204. +    MediaKitWriter.cpp
  1205. +    SndPlayer.cpp
  1206. +    RingBuffer.cpp
  1207. +)
  1208. +
  1209. +set(MediaKit_RESOURCES
  1210. +    icon.qrc
  1211. +)
  1212. +
  1213. +include_directories(../../qmplay2/headers
  1214. +   ${LIBMEDIA_INCLUDE_DIRS}
  1215. +   ${LIBBE_INCLUDE_DIRS}
  1216. +)
  1217. +
  1218. +if(USE_QT5)
  1219. +    qt5_add_resources(MediaKit_RESOURCES_RCC ${MediaKit_RESOURCES})
  1220. +else()
  1221. +    qt4_add_resources(MediaKit_RESOURCES_RCC ${MediaKit_RESOURCES})
  1222. +endif()
  1223. +
  1224. +add_library(${PROJECT_NAME} ${QMPLAY2_MODULE}
  1225. +    ${MediaKit_HDR}
  1226. +    ${MediaKit_SRC}
  1227. +)
  1228. +
  1229. +if(USE_QT5)
  1230. +    qt5_use_modules(${PROJECT_NAME} Gui Widgets)
  1231. +else()
  1232. +    target_link_libraries(${PROJECT_NAME} Qt4::QtCore Qt4::QtGui)
  1233. +endif()
  1234. +
  1235. +add_dependencies(${PROJECT_NAME} libqmplay2)
  1236. +target_link_libraries(${PROJECT_NAME}
  1237. +    ${qmplay2lib}
  1238. +)
  1239. +
  1240. +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${MODULES_INSTALL_PATH})
  1241. diff --git a/src/modules/MediaKit/MediaKit.cpp b/src/modules/MediaKit/MediaKit.cpp
  1242. index 1647325..e191555 100644
  1243. --- a/src/modules/MediaKit/MediaKit.cpp
  1244. +++ b/src/modules/MediaKit/MediaKit.cpp
  1245. @@ -4,7 +4,7 @@
  1246.  MediaKit::MediaKit() :
  1247.     Module( "MediaKit" )
  1248.  {
  1249. -   moduleImg = QImage( ":/MediaKit" );
  1250. +   m_icon = QIcon( ":/MediaKit" );
  1251.  
  1252.     init( "WriterEnabled", true );
  1253.     init( "Delay", 0.2 );
  1254. @@ -34,17 +34,18 @@ QMPLAY2_EXPORT_PLUGIN( MediaKit )
  1255.  /**/
  1256.  
  1257.  #include <QDoubleSpinBox>
  1258. -#include <QGridLayout>
  1259. +#include <QFormLayout>
  1260. +#include <QComboBox>
  1261.  #include <QCheckBox>
  1262.  #include <QLabel>
  1263.  
  1264.  ModuleSettingsWidget::ModuleSettingsWidget( Module &module ) :
  1265.     Module::SettingsWidget( module )
  1266.  {
  1267. -   enabledB = new QCheckBox( tr( "Włączony" ) );
  1268. +   enabledB = new QCheckBox( tr( "Enabled" ) );
  1269.     enabledB->setChecked( sets().getBool( "WriterEnabled" ) );
  1270.  
  1271. -   QLabel *delayL = new QLabel( tr( "Opóźnienie" ) + ": " );
  1272. +   QLabel *delayL = new QLabel( tr( "Delay" ) + ": " );
  1273.  
  1274.     delayB = new QDoubleSpinBox;
  1275.     delayB->setRange( 0.01, 1.0 );
  1276. @@ -52,10 +53,10 @@ ModuleSettingsWidget::ModuleSettingsWidget( Module &module ) :
  1277.     delayB->setSuffix( " " + tr( "sek" ) );
  1278.     delayB->setValue( sets().getDouble( "Delay" ) );
  1279.  
  1280. -   QGridLayout *layout = new QGridLayout( this );
  1281. -   layout->addWidget( enabledB, 0, 0, 1, 2 );
  1282. -   layout->addWidget( delayL, 1, 0, 1, 1 );
  1283. -   layout->addWidget( delayB, 1, 1, 1, 1 );
  1284. +   QFormLayout *layout = new QFormLayout( this );
  1285. +   layout->addRow( enabledB);
  1286. +   layout->addRow(tr("Delay") + ": ", delayL);
  1287. +   layout->addRow(tr("Delay") + ": ", delayB);
  1288.  }
  1289.  
  1290.  void ModuleSettingsWidget::saveSettings()
  1291. diff --git a/src/modules/Notify/Notify.pro b/src/modules/Notify/Notify.pro
  1292. index 345da48..3813eda 100644
  1293. --- a/src/modules/Notify/Notify.pro
  1294. +++ b/src/modules/Notify/Notify.pro
  1295. @@ -3,8 +3,14 @@ CONFIG += plugin
  1296.  
  1297.  QT += widgets
  1298.  
  1299. -DESTDIR = ../../../app/lib/qmplay2/modules
  1300. -QMAKE_LIBDIR += ../../../app/lib
  1301. +haiku {
  1302. +   DESTDIR = ../../../app/modules
  1303. +   QMAKE_LIBDIR += ../../../app/lib
  1304. +}
  1305. + else {
  1306. +   DESTDIR = ../../../app/lib/qmplay2/modules
  1307. +   QMAKE_LIBDIR += ../../../app/lib
  1308. +}
  1309.  
  1310.  LIBS += -lqmplay2
  1311.  
  1312. diff --git a/src/qmplay2/CMakeLists.txt b/src/qmplay2/CMakeLists.txt
  1313. index c41de09..8927969 100644
  1314. --- a/src/qmplay2/CMakeLists.txt
  1315. +++ b/src/qmplay2/CMakeLists.txt
  1316. @@ -227,7 +227,7 @@ if(WIN32)
  1317.      install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
  1318.  else()
  1319.      install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
  1320. -    if(NOT APPLE)
  1321. +    if(NOT APPLE AND NOT HAIKU)
  1322.          install(FILES ${QMPLAY2_HDR} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/QMPlay2")
  1323.      endif()
  1324.  
  1325. --
  1326. 2.12.2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement