Go Back   Winamp & SHOUTcast Forums > Winamp > Winamp Discussion

Reply
Thread Tools Search this Thread Display Modes
Old 26th July 2016, 10:51   #481
chros
Member
 
chros's Avatar
 
Join Date: Nov 2003
Posts: 67
Quote:
Originally Posted by osmosis View Post
This is not him stealing your work, this is open source. You're not being rational.
Quote:
Originally Posted by osmosis View Post
see any GitHub repo's fork network view for many, many examples.
Quote:
Originally Posted by pbelkner View Post
I consider it a serious attack openly announcing plans for forking while the project is obviously being alive and maintained.
Not really, somebody can still add new features or provide bug fixes.

Quote:
Originally Posted by pbelkner View Post
It's not my goal that anybody else understands my intentions. I do what I do.

Once again, the attacker may do whatever he likes within the constraints of GPL3. However, he should consider that
* I do not support a fork, moreover
There's nothing wrong with this statement, it's your choice.

Quote:
Originally Posted by pbelkner View Post
* I consider him the enemy.
Though, there is a problem with this.
If you indeed think this way then you should remove your code from sourceforge straight away and treat it as a closed source.
Nothing wrong with this either (there are projects that are working like this, e.g. madvr, at least for now), you can still maintain it, giving support in this topic.
But if you won't do this then nobody, and I mean nobody, will understand the way you think (unless all you want to do is fighting).


Back to topic:
Quote:
Originally Posted by pbelkner View Post
Thank you for the log. Unfortunately it contains no information regarding the crash.
Yep, I thought so.
Quote:
Originally Posted by pbelkner View Post
It's up to you to provide a trace with a hint that it's YASAPI crashing.
Sorry, Peter, but I don't understand what you mean? Shall I set something to be able to provide this?

Cheers

Winamp 5.581 (DirectSound out) + ClockAmp 2.6 + mp3cue 5.0
MSI GE60(i73630QM,16GB,IntelHD4000(v10.18.10.4358)+GeForceGT650m(2GB,v355.98)+muxless,1920x1080@60Hz,Plextor M5M 256GB SSD,Win8.1x64+MPC-HCx64+LAV+MadVR)+Yamaha RX-830+LG 55LD650(1080p@24/25/30/60Hz)
chros is offline   Reply With Quote
Old 26th July 2016, 14:54   #482
osmosis
Major Dude
 
osmosis's Avatar
 
Join Date: Jan 2006
Location: Cananada
Posts: 834
Quote:
Originally Posted by chros View Post
Though, there is a problem with this.
If you indeed think this way then you should remove your code from sourceforge straight away and treat it as a closed source.
Nothing wrong with this either (there are projects that are working like this, e.g. madvr, at least for now), you can still maintain it, giving support in this topic.
But if you won't do this then nobody, and I mean nobody, will understand the way you think (unless all you want to do is fighting).
This exactly. If you want complete control then closed source is the logical choice.

Request: A little SmartView Query Language love.
osmosis is offline   Reply With Quote
Old 28th July 2016, 01:54   #483
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by osmosis View Post
This exactly. If you want complete control then closed source is the logical choice.
Of cource I continue to write and publish open source software as I used to be for many, many years. But nobody can expect any support from me especially if I consider him the enemy.

Just for you, my dear, because obviously you can not read:
Quote:
Originally Posted by pbelkner View Post
Once again, the attacker may do whatever he likes within the constraints of GPL3. However, he should consider that
  • I do not support a fork, moreover
  • I consider him the enemy.
EDIT: You are, of cource, free not to use my software if you dont't like it. Exact that's what I'm strongly suggesting you.

Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas
pbelkner is offline   Reply With Quote
Old 31st July 2016, 03:42   #484
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
v1.7.24

What's new?
  • Updated my build machine from Vista to Windows 7 (good bye, Vista users).
  • Hence the new version is build using MSVC 11 / Windows SDK v7.1A (instead of the respective MSVC 10 / Windows SDK v7.0A under Vista.)
  • Dropped the SSE2 versions because by using MSVC 11 they make no sense any longer.
  • As usual, some code clean-up.
Links:

Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas
pbelkner is offline   Reply With Quote
Old 4th August 2016, 16:42   #485
tberikc
Junior Member
 
Join Date: Aug 2016
Posts: 1
First of all, many thanks to pbelkner for keeping this plug-in alive and updated. I have been using it as a replacement for MAIKO since v0.3.0 and have found the WASAPI output an invaluable addition to Winamp, particularly since the various ASIO plugins are nowhere near as functional or well-maintained.

Secondly, I have found what I believe to be a minor bug in the latest revision of YASAPI (v1.7.24) that was not present in the previous version (v1.7.23). Before going into details, let me first caveat that I have done my very best to bug test as many playback scenarios as possible to isolate the issue, and have ensured that the only change is to the plug-in version itself (i.e. no changes to any Winamp or YASAPI configuration settings, OS/hardware audio settings, etc.) However, I understand that the problem I am encountering may be due to an issue with my hardware that has not previously surfaced, and hope that by providing as much info as possible the root cause can be isolated. I have also reviewed the changelog between v1.7.23 and v1.7.24 and did not note any change to the playback strategy or buffering parameters that could be responsible for the issue, hence raising this issue in case it is an unintended consequence of the move to MSVC 11 / SDK v7.1A.

The issue I am encountering in v1.7.24 is that selecting the Pull strategy and attempting to play a file causes audio playback to halt immediately. This happens in both Exclusive mode and Shared mode. Using Push Strategy works without issues in v1.7.24. This is not the case for v1.7.23, where both Pull and Push Strategies work perfectly. I have attached debug log files of initiating playback for two WAV files with the following scenarios:
1) v1.7.23 - Shared Mode, Push strategy enabled (WORKING)
2) v1.7.23 - Shared Mode, Pull strategy enabled (WORKING)
3) v1.7.24 - Shared Mode, Push strategy enabled (WORKING)
4) v1.7.24 - Shared Mode, Pull strategy enabled (NOT WORKING)

Environment details
Winamp Version: v5.666 build 3516
24-bit Playback: Enabled (have tried disabling but this does not fix the issue)
Input: in_wave.dll v3.25
DSP: No plug-ins enabled
OS: Windows 10 (1607)
Hardware: NI Audio 8 DJ (latest 3.1.0 drivers - tried uninstalling and reinstalling these as well)
Windows WASAPI Output Format: 2ch, 44.1kHz, 24-bit
Test File Formats: File 1 - WAV, 2ch, 44.1kHz, 24-bit / File 2 - WAV, 2ch, 48kHz, 24-bit
Please see screenshots in the attached zip file for confirmation.

I hope this is sufficient information to investigate the potential cause of the issue. If there are any further details I can provide to help identify the problem, please let me know.

Thanks again for your hard work and support!
Attached Files
File Type: zip YASAPI_logfiles_TC.zip (23.5 KB, 87 views)
tberikc is offline   Reply With Quote
Old 4th August 2016, 18:43   #486
osmosis
Major Dude
 
osmosis's Avatar
 
Join Date: Jan 2006
Location: Cananada
Posts: 834
Quote:
Originally Posted by pbelkner View Post
Of cource I continue to write and publish open source software as I used to be for many, many years. But nobody can expect any support from me especially if I consider him the enemy.

Just for you, my dear, because obviously you can not read:

EDIT: You are, of cource, free not to use my software if you dont't like it. Exact that's what I'm strongly suggesting you.
I've been on these forums for 10 years; I can read just fine.

Haha yes, don't worry dear, I'll stop using it as soon as DrO's version comes out.

Request: A little SmartView Query Language love.
osmosis is offline   Reply With Quote
Old 5th August 2016, 08:33   #487
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by tberikc View Post
First of all, many thanks to pbelkner for keeping this plug-in alive and updated. I have been using it as a replacement for MAIKO since v0.3.0 and have found the WASAPI output an invaluable addition to Winamp, particularly since the various ASIO plugins are nowhere near as functional or well-maintained.
Thanks a lot!
Quote:
Originally Posted by tberikc View Post
Secondly, I have found what I believe to be a minor bug in the latest revision of YASAPI (v1.7.24) that was not present in the previous version (v1.7.23).
As you've probably noticed I've upgraded my development machine from Vista to Win7. As you may imagine this caused a lot of trouble (also with respect to, but not restricted to, YASAPI). Finally I decided to write YASAPI from scratch again. This will take some time because day by day more and more issues arrive.

Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas
pbelkner is offline   Reply With Quote
Old 5th August 2016, 11:39   #488
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by tberikc View Post
The issue I am encountering in v1.7.24 is that selecting the Pull strategy and attempting to play a file causes audio playback to halt immediately. This happens in both Exclusive mode and Shared mode.
Confirmed. (I've tested pull/shared. Unfortunately I can test only pull/shared because I have no device supporting pull/exclusive First I had to install the respective device on Win7 anyway.)

Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas
pbelkner is offline   Reply With Quote
Old 6th August 2016, 13:06   #489
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
v0.7.25

Quote:
Originally Posted by tberikc View Post
The issue I am encountering in v1.7.24 is that selecting the Pull strategy and attempting to play a file causes audio playback to halt immediately. This happens in both Exclusive mode and Shared mode. Using Push Strategy works without issues in v1.7.24. This is not the case for v1.7.23, where both Pull and Push Strategies work perfectly.
What's new?
  • Parameterized the configure script that it may be useful for others as well (cf. the new section Compiling YASAPI from Source from the documentation). It now supports the "./configure && make" cycle well known from UNIX/LINUX systems.
  • Fixed the error introduced with the prior version that YASAPI does not play in pull mode (as reported to the WA forum).
Links:

Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas
pbelkner is offline   Reply With Quote
Old 10th August 2016, 17:02   #490
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Not So YASAPI Output Plug-in v1.0 Beta

Finally "DrO" has made it true and has published a YASAPI plagiat plug-in:

The fanboys of "DrO" are more then happy and post at his blog, e.g. someone who calls himself Pawel writes the following:

Quote:
Pawel | Tuesday, August 9, 2016 - 22:19:11

DrO,
Nice to have WASAPI based plugin for Winamp, but…
If I remember original author didn’t allow to use his sources. Am I right? (despite that in my opinion license allow to use it by anyone). Also he is very strange and posts strange texts on Winamp forum…
So, why did you decide to do anything with YASAPI plugin? It seems to be not nice (or not?)
Quote:
Also he is very strange and posts strange texts on Winamp forum…
Yes indeed, I call a thief a thief.

Pawel, are you this forum's mod? Is this your understanding of being a neutral moderator outing yourself as a fanboy of "DrO"?

And Pawel, I will request DJ Egg investigating whether you are the same person as the fanboy of "DrO"and if it turns out to be true that he fires you as this forum's mod.

Here is a quick "diff" (command diff -br --strip-trailing-cr ./out_notyasapi_v1_0_beta ./out_yasapi-1.7.25) between "DrO"s stolen "Not So YASAPI Output Plug-in v1.0 Beta" and the last official YASAPI. Look for yourself and find out how substantial the changes are are:
PHP Code:
Only in ./out_yasapi-1.7.25/libyarules.mak
Only in 
./out_yasapi-1.7.25/libyastr2wcscpy.c
Only in 
./out_yasapi-1.7.25/libyawc2cscpy.c
Only in 
./out_yasapi-1.7.25/libyawc2csdup.c
Only in 
./out_yasapi-1.7.25/libyawchar2char.c
Only in 
./out_yasapi-1.7.25/libyawcs2strcpy.c
Only in 
./out_yasapi-1.7.25/libyawcs2strdup.c
diff 
-br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/libya/ya../out_yasapi-1.7.25/libya/ya.h
23d22
#include <strsafe.h>
26d24
#ifdef HAVE_STDINT_H
28,33d25
#else
#include <stddef.h>
//#include <pstdint.h>
#include <wasabi/bfc/platform/types.h>
#include <stdlib.h>
#endif
37d28

43c34
#define YA_EVENT_STACK
---
//#define YA_EVENT_STACK
48c39
//#define YA_DUMP
---
#define YA_DUMP
158a150,152
char *wcs2strdup(const wchar_t *wcsint codepage);
char *wcs2strcpy(char *str, const wchar_t *wcsint codepagesize_t size);
wchar_t *str2wcscpy(wchar_t *wcs, const char *strint codepagesize_t size);
303d296
#if defined (YA_DEBUG) // {
305,307d297
#else // } {
void TraceControlsInit(HWND hDlg);
#endif // }
485,486d474
void QueueUnlockWrite(Queue *pQueueResult *pResult);

502c490
<   UINT/*wchar_t **/help;
---
>   
wchar_t *help;
509c497
<   UINT/*wchar_t **/help;
---
>   
wchar_t *help;
519,520c507,508
<   UINT/*const wchar_t **/format;
<   
UINT/*wchar_t **/help;
---
>   const 
wchar_t *format;
>   
wchar_t *help;
524c512
<   UINT label;
---
>   const 
wchar_t *label;
532c520
<   UINT/*wchar_t **/help;
---
>   
wchar_t *help;
539,540c527,528
<   UINT/*const wchar_t **/format;
<   
UINT/*wchar_t **/help;
---
>   const 
wchar_t *format;
>   
wchar_t *help;
561,562c549,550
HWND ControlCreateToolTip(HWND hDlg/*, HINSTANCE hInstance*/);
void ControlAddToolTip(HWND hDlgHWND hWndint idcUINT idText/*PWSTR pszText*/);
---
HWND ControlCreateToolTip(HWND hDlgHINSTANCE hInstance);
void ControlAddToolTip(HWND hDlgHWND hWndint idcPWSTR pszText);
569c557
HWND ControlsInit(const Control *pControlHWND hDlg/*, HINSTANCE hInstance*/);
---
HWND ControlsInit(const Control *pControlHWND hDlgHINSTANCE hInstance);
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/libya/ya_control../out_yasapi-1.7.25/libya/ya_control.c
28c28
HWND ControlCreateToolTip(HWND hDlg/*, HINSTANCE hInstance*/)
---
HWND ControlCreateToolTip(HWND hDlgHINSTANCE hInstance)
30c30
<   HWND hwndTip CreateWindowExW(
---
>   return 
CreateWindowExW(
34c34
<     WS_POPUP|TTS_ALWAYSTIP/*|TTS_BALLOON*/,
---
>     
WS_POPUP|TTS_ALWAYSTIP|TTS_BALLOON,
42,43c42
<     // TODO do we need this?
<     NULL/*hInstance*/,          // _In_opt_ HINSTANCE hInstance,
---
>     
hInstance,          // _In_opt_ HINSTANCE hInstance,
46,48d44
<   // ensure that it can be seen
<   SetWindowPos(hwndTip,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
<   return 
hwndTip;
51,52c47
extern LPWSTR GetLangString(UINT id);
void ControlAddToolTip(HWND hDlgHWND hWndint idcUINT idText/*PWSTR pszText*/)
---
void ControlAddToolTip(HWND hDlgHWND hWndint idcPWSTR pszText)
56c51
<   /*if (pszText&&*pszText)*/ {
---
>   if (
pszText&&*pszText) {
61c56
<     ti.lpszText=(wchar_t*)GetLangString(idText)/*pszText*/;
---
>     
ti.lpszText=pszText;
63,64d57
<     SendMessageW(hWnd,TTM_SETMAXTIPWIDTH,0,(LPARAM)450);
<     
SendMessageW(hWnd,TTM_SETWINDOWTHEME,0,(LPARAM)L"");
205c198
<     StringCchPrintf(buf,SIZE,GetLangString(config->format),x);
---
>     
swprintf(buf,SIZE,config->format,x);
276c269
<     SendMessageW(hWndCtl,CB_ADDSTRING,0,(LPARAM)GetLangString(list->label));
---
>     
SendMessageW(hWndCtl,CB_ADDSTRING,0,(LPARAM)list->label);
326c319
< static void SliderCascadeSetStatic(HWND hDlgint idcUINT/*const wchar_t **/format,
---
> static 
void SliderCascadeSetStatic(HWND hDlgint idc, const wchar_t *format,
334c327
<     StringCchPrintf(buf,SIZE,GetLangString(format),x);
---
>     
swprintf(buf,SIZE,format,x);
531c524
HWND ControlsInit(const Control *pControlHWND hDlg/*, HINSTANCE hInstance*/)
---
HWND ControlsInit(const Control *pControlHWND hDlgHINSTANCE hInstance)
535c528
<   if (NULL==(hWndTip=ControlCreateToolTip(hDlg/*,hInstance*/)))
---
>   if (
NULL==(hWndTip=ControlCreateToolTip(hDlg,hInstance)))
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/libya/ya_debug../out_yasapi-1.7.25/libya/ya_debug.c
34c34
<     MB_SYSTEMMODAL|MB_YESNO|MB_ICONERROR|MB_DEFBUTTON2
---
>     
MB_SYSTEMMODAL|MB_YESNO|MB_ICONERROR
71d70
#if defined (YA_DUMP) // {
74d72
#endif // }
81d78
#if defined (YA_DUMP) // {
87c84
#endif // }
---

103d99
#if defined (YA_DUMP) // {
106d101
#endif // }
113d107
#if defined (YA_DUMP) // {
119c113
#endif // }
---

diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/libya/ya_dump../out_yasapi-1.7.25/libya/ya_dump.c
53c53
<     StringCchPrintf(pp,
---
>     
swprintf(pp,
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/libya/ya_property../out_yasapi-1.7.25/libya/ya_property.c
45c45
<   StringCchPrintf(buf,YA_PROPERTY_SIZE,L"%d",n);
---
>   
swprintf(buf,YA_PROPERTY_SIZE,L"%d",n);
48c48
<     (group group L"default"),    // _In_  LPCTSTR lpAppName,
---
>     
group,    // _In_  LPCTSTR lpAppName,
58c58
<     (c->group c->group L"default"),         // _In_  LPCTSTR lpAppName,
---
>     
c->group,         // _In_  LPCTSTR lpAppName,
76c76
<   StringCchPrintf(buf,YA_PROPERTY_SIZE,L"%d",PROPERTY_INT(pProperty,c->pData));
---
>   
swprintf(buf,YA_PROPERTY_SIZE,L"%d",PROPERTY_INT(pProperty,c->pData));
79c79
<     (c->group c->group L"default"),         // _In_  LPCTSTR lpAppName,
---
>     
c->group,         // _In_  LPCTSTR lpAppName,
101c101
<   StringCchPrintf(set,YA_PROPERTY_SIZE,L"%f",PROPERTY_DOUBLE(pProperty,c->pDefault));
---
>   
swprintf(set,YA_PROPERTY_SIZE,L"%f",PROPERTY_DOUBLE(pProperty,c->pDefault));
104c104
<     (c->group c->group L"default"),         // _In_   LPCTSTR lpAppName,
---
>     
c->group,         // _In_   LPCTSTR lpAppName,
124c124
<   StringCchPrintf(buf,YA_PROPERTY_SIZE,L"%f",PROPERTY_DOUBLE(pProperty,c->pData));
---
>   
swprintf(buf,YA_PROPERTY_SIZE,L"%f",PROPERTY_DOUBLE(pProperty,c->pData));
127c127
<     (c->group c->group L"default"),         // _In_  LPCTSTR lpAppName,
---
>     
c->group,         // _In_  LPCTSTR lpAppName,
143c143
<     (c->group c->group L"default"),         // _In_   LPCTSTR lpAppName,
---
>     
c->group,         // _In_   LPCTSTR lpAppName,
163c163
<     (c->group c->group L"default"),         // _In_  LPCTSTR lpAppName,
---
>     
c->group,         // _In_  LPCTSTR lpAppName,
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/libya/ya_queue../out_yasapi-1.7.25/libya/ya_queue.c
153c153
<   //HANDLE *pHandles=aHandles;
---
>   
HANDLE *pHandles=aHandles;
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/libya/ya_store../out_yasapi-1.7.25/libya/ya_store.c
84c84
//  CloseHandle(pStore->hAvailable);
---
>   
CloseHandle(pStore->hAvailable);
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/libya/ya_trace../out_yasapi-1.7.25/libya/ya_trace.c
142c142
<     StringCchPrintf(pp,
---
>     
swprintf(pp,
373d372
#if defined (YA_DEBUG) // {
375,377d373
#else // } {
void TraceControlsInit(HWND hDlg)
#endif // }
411d406
#if defined (YA_DEBUG) // {
433d427
#endif // }
No newline at end of file
Only in 
/d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapiout_notsoyasapi.c
Only in 
/d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapiout_notsoyasapi.nsi
Only in 
./out_yasapi-1.7.25/out_yasapiout_yasapi.c
Only in 
./out_yasapi-1.7.25/out_yasapiout_yasapi.nsi
Only in 
/d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/rcabout.bin
Only in 
./out_yasapi-1.7.25/out_yasapi/rcmanifest.xml
Only in 
/d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/rcout_notsoyasapi.rc
Only in 
/d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/rcresource.h
Only in 
./out_yasapi-1.7.25/out_yasapi/rcresources.h
Only in 
./out_yasapi-1.7.25/out_yasapi/rcresources.rc
Only in 
./out_yasapi-1.7.25/out_yasapiversion.mak
Only in 
/d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapiwasabi.cpp
diff 
-br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi../out_yasapi-1.7.25/out_yasapi/yasapi.h
25
,26d24
#include <strsafe.h>

31,32d28
extern Out_Module plugin;

34c30
//#define YASAPI_ABOUT
---
#define YASAPI_ABOUT
40c36
//#define YASAPI_EXECUTION_STATE
---
#define YASAPI_EXECUTION_STATE
56,57c52
<   #define YASAPI_VER            1.7.25
<   #define PLUGIN_VERSION        "1.0 Beta"
---
>   
#define YASAPI_VER            0.0.0
66c61
<   #define YASAPI_PREFIX         out_notsoyasapi
---
>   
#define YASAPI_PREFIX         out_yasapi
81c76
<   #define PI_VER                PI_VER2 //" (SSE2)"
---
>   
#define PI_VER                PI_VER2 " (SSE2)"
94c89
#define PI_LABEL                "Not So YASAPI Output " PI_VER
---
#define PI_LABEL                "Yet Another (WA)SAPI Output " PI_VER
143a139,141--strip-trailing-cr
__declspec(dllexportOut_Module *winampGetOutModule(void);

///////////////////////////////////////////////////////////////////////////////
307c305
void OptionsCommonSave(OptionsCommon *pOptionsint mode, const wchar_t *path);
---
void OptionsCommonSave(OptionsCommon *pOptions, const wchar_t *path);
473,475c471,473
<     //HINSTANCE hModule;
<     //wchar_t aszModuleName***91;MAX_PATH***93;;
<     const wchar_t *pszFileName;
---
>     
HINSTANCE hModule;
>     
char aszModuleName***91;MAX_PATH***93;;
>     const 
char *pszFileName;
614,615d611
void PlayerShutdown(Player *pPlayer);
void PlayerDisconnect(Player *pPlayer);
695c691
int ConfigDialog(Player *pPlayer/*, HINSTANCE hInstance*/HWND hWndParent);
---
int ConfigDialog(Player *pPlayerHINSTANCE hInstanceHWND hWndParent);
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_about../out_yasapi-1.7.25/out_yasapi/yasapi_about.c
21c21
#include <resource.h>
---
#include <resources.h>
54c54
<     SetWindowLongPtr(
---
>     
SetWindowLongW(
168,171c168,176
<     wchar_t message***91;4096***93; = {0};
<     
StringCchPrintf(message,ARRAYSIZE(message),(LPWSTR)GetTextResource(IDR_ABOUT_TEXT),
<         
TEXT(PLUGIN_VERSION), TEXT(YASAPI_VERSION),TEXT("Darren Owen aka DrO"), TEXT("2016"), TEXT(__DATE__));
<     
MessageBoxW(hWndParentmessage, (LPWSTR)GetLangString(IDS_ABOUT_TITLE), MB_OK);
---
>   
MessageBoxA(
>     
hWndParent,                 // _In_opt_  HWND hWnd,
>     PI_LABEL "."
>     "\n\nCopyright \xA9 2015-2016 Peter Belkner."
>     "\nFor further details cf. \"http://out-yasapi.sourceforge.net/\".",
>                                 
// _In_opt_  LPCTSTR lpText,
>     "About " PI_LABEL,          // _In_opt_  LPCTSTR lpCaption,
>     MB_OK|MB_ICONINFORMATION    // _In_      UINT uType
>   );
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_config../out_yasapi-1.7.25/out_yasapi/yasapi_config.c
20a21
#include <uxtheme.h>
24c25
#include <resource.h>
---
#include <resources.h>
66,67c67,68
<   UINT label;
<   
UINT idd;
---
>   
char *label;
>   
int idd;
76,78c77,79
<   { IDS_COMMON_OPTIONS,IDD_PAGE_COMMON,GetCommonVMT },
<   { 
IDS_DEVICE_OPTIONS,IDD_PAGE_DEVICE,GetDeviceVMT },
<   { 
IDS_BUFFER_OPTIONS,IDD_PAGE_BUFFERS,GetBuffersVMT }
---
>   { 
"Common Options",IDD_PAGE_COMMON,GetCommonVMT },
>   { 
"Device Options",IDD_PAGE_DEVICE,GetDeviceVMT },
>   { 
"Buffer Options",IDD_PAGE_BUFFERS,GetBuffersVMT }
91c92
<   //HMODULE hModule;
---
>   
HMODULE hModule;
557c558,559
<   Config *pConfig=(Config *)GetWindowLongPtrW(hDlg,GWLP_USERDATA);
---
>   
Config *pConfig=(Config *)GetWindowLongPtr(hDlg,GWLP_USERDATA);
>   
Player *pPlayer=pConfig?pConfig->pPlayer:NULL;
561c563
<     SetWindowLongPtrW(hDlg,GWLP_USERDATA,lParam);
---
>     
SetWindowLongPtr(hDlg,GWLP_USERDATA,lParam);
569d570
#if defined (YA_DEBUG) // {
571,574c572
#else // } {
<     TraceControlsInit(hDlg);
#endif // }
<     ControlsInit(gcaCommonControls,hDlg/*,pConfig->hModule*/);
---
>     
ControlsInit(gcaCommonControls,hDlg,pConfig->hModule);
703c701
<   Config *pConfig=(Config *)GetWindowLongPtrW(hDlg,GWLP_USERDATA);
---
>   
Config *pConfig=(Config *)GetWindowLongPtr(hDlg,GWLP_USERDATA);
708,709c706,707
<     SetWindowLongPtrW(hDlg,GWLP_USERDATA,lParam);
<     
ControlsInit(gcaDeviceControls,hDlg/*,pConfig->hModule*/);
---
>     
SetWindowLongPtr(hDlg,GWLP_USERDATA,lParam);
>     
ControlsInit(gcaDeviceControls,hDlg,pConfig->hModule);
796c794
<   Config *pConfig=(Config *)GetWindowLongPtrW(hDlg,GWLP_USERDATA);
---
>   
Config *pConfig=(Config *)GetWindowLongPtr(hDlg,GWLP_USERDATA);
801,802c799,800
<     SetWindowLongPtrW(hDlg,GWLP_USERDATA,lParam);
<     
ControlsInit(gcaBuffersControls,hDlg/*,pConfig->hModule*/);
---
>     
SetWindowLongPtr(hDlg,GWLP_USERDATA,lParam);
>     
ControlsInit(gcaBuffersControls,hDlg,pConfig->hModule);
850,851c848,849
<   int nCurPage=TabCtrl_GetCurSel(hWndTab);
<   
Page *pPage=pConfig->aPages+nCurPage;
---
>   
int nPage=TabCtrl_GetCurSel(hWndTab);
>   
Page *pPage=pConfig->aPages+nPage;
860,881c858
<   pConfig->options.common.nPage=nCurPage;
< }

< static 
int ResizeComboBoxDropDown(HWND hParentHWND hComboBox, const wchar_t *strint width)
< {
<     
SIZE size = {0};
<     
HDC hdc GetDC(hComboBox);

<     
// get and select parent dialog's font so that it'll calculate things correctly
<     HFONT font = (HFONT)SendMessage(hParentWM_GETFONT00),
<           
oldfont = (HFONT)SelectObject(hdcfont);

<     
GetTextExtentPoint32(hdcstrlstrlen(str) + 1, &size);

<     if (
size.cx width)
<     {
<         
SendMessageW(hComboBoxCB_SETDROPPEDWIDTHsize.cx0);
<     }

<     
SelectObject(hdcoldfont);
<     
ReleaseDC(hComboBoxhdc);
<     return 
size.cx;
---
>   
pConfig->options.common.nPage=nPage;
888c865,866
<   UINT uLen,cDevice,nDevice=0,labelLen,comboWidth=0;
---
>   
UINT uLen;
>   
int cDevice,nDevice;
891a870,871
>   nDevice=0;

904,907c884,885
<       lstrcpyn(pwszLabel,L"Default Device -- ",uLen);
<       
labelLen wcslen(pwszLabel);
<       
uLen-=labelLen;
<       
lstrcpyn(pwszLabel+labelLen,pConfigDevice->vName.pwszVal,uLen);
---
>       
wcscpy(pwszLabel,L"Default Device -- ");
>       
wcscpy(pwszLabel+wcslen(pwszLabel),pConfigDevice->vName.pwszVal);
913d890
<     comboWidth ResizeComboBoxDropDown(hDlg,hComboBox,pwszLabel,comboWidth);
938c915,916
<   TCITEM tie = {0};
---
>   
TCITEMA tie;
>   
LPCTSTR lpTemplateName;
942a921
>   memset(&tie,0,sizeof tie);
945,946c924,928
<   tie.pszText=(LPWSTR)GetLangString(pTemplate->label);
<   
SendMessage(hWndTab,TCM_INSERTITEM,nPage,(LPARAM)&tie);
---
>   
tie.pszText=pTemplate->label;
>   
SendMessageA(hWndTab,TCM_INSERTITEMA,nPage,(LPARAM)&tie);

>   
// Finding resource.
>   lpTemplateName=MAKEINTRESOURCEA(pTemplate->idd);
948,949c930,932
<   pPage->hDlg=(HWND)WACreateDialogParam(
<     
pTemplate->idd,   // _In_     LPCTSTR   lpTemplateName,
---
>   
pPage->hDlg=CreateDialogParamA(
>     
pConfig->hModule// _In_opt_ HINSTANCE hInstance,
>     lpTemplateName,   // _In_     LPCTSTR   lpTemplateName,
971,972c954,955
<   SetWindowPos(pPage->hDlg,hWndTab/*HWND_TOP*/,rc.left,rc.top,0,0,
<       
SWP_NOSIZE|SWP_HIDEWINDOW|SWP_NOACTIVATE);
---
>   
SetWindowPos(pPage->hDlg,HWND_TOP,rc.left,rc.top,0,0,
>       
SWP_NOSIZE|SWP_HIDEWINDOW);
974a958,960
lock:
load:
find:
982c968
<   int nPageCreate;
---
>   
int nPage;
993,994c979,980
<   for (nPageCreate=0;nPageCreate<NUM_PAGES;++nPageCreate) {
<     if (
ConfigInitPage(hDlg,hWndTab,pConfig,nPageCreate)<0) {
---
>   for (
nPage=0;nPage<NUM_PAGES;++nPage) {
>     if (
ConfigInitPage(hDlg,hWndTab,pConfig,nPage)<0) {
999c985,990
<     SendMessage(plugin.hMainWindow,WM_WA_IPC,(WPARAM)pConfig->aPages***91;nPageCreate***93;.hDlg,IPC_USE_UXTHEME_FUNC);
---
#if 1 // {
>     EnableThemeDialogTexture(
>       
pConfig->aPages***91;nPage***93;.hDlg,  // _In_ HWND  hwnd,
>       ETDT_ENABLETAB                // _In_ DWORD dwFlags
>     );
#endif // }
1002c993
<   SendMessage(hWndTab,TCM_SETCURSEL,pConfig->options.common.nPage,0);
---
>   
SendMessageA(hWndTab,TCM_SETCURSEL,pConfig->options.common.nPage,0);
1010c1001
< static INT_PTR ConfigOnInit(HWND hDlgWPARAM wParamConfig *pConfig)
---
> static 
INT_PTR ConfigOnInit(HWND hDlgConfig *pConfig)
1016a1008
>   SetWindowTextA(hDlg,PI_LABEL " Settings");
1050,1051c1042,1044
<   hWndTip=ControlsInit(gcaCoreDeviceControls,hDlg/*,pConfig->hModule*/);
<   
ControlAddToolTip(hDlg,hWndTip,IDC_COMBOBOX_DEVICE,IDS_DEVICE_FOR_OUTPUT);
---
>   
hWndTip=ControlsInit(gcaCoreDeviceControls,hDlg,pConfig->hModule);
>   
ControlAddToolTip(hDlg,hWndTip,IDC_COMBOBOX_DEVICE,
>       
L"The device where the audio should be routed.");
1055a1049

1068c1062
<   lstrcpyn(pConfig->options.common.szId,pstrId,nLen);
---
>   
wcsncpy(pConfig->options.common.szId,pstrId,nLen);
1073a1068,1073
>     SetWindowTextW(
>                     
// _In_     HWND    hWnd,
>       GetDlgItem(pPage->hDlg,IDC_STATIC_DEVICE_NAME),
>       
pwszLabel     // _In_opt_ LPCTSTR lpString
>     );

1113a1114
>   Config *pConfig=va_arg((pRequest)->ap,Config *);
1118,1128c1119
<   OptionsCommonSave(&pPlayer->options.common,0,pPlayer->options.path);
#if defined (YASAP_DEBUG) // {
<   TraceSwitch(&trace);
#endif // }

<   return 
0;
< }

< static 
int PlayerWriteConfigSpecific(Player *pPlayerRequest *pRequest)
< {
<   
OptionsCommonSave(&pPlayer->options.common,1,pPlayer->options.path);
---
>   
OptionsCommonSave(&pPlayer->options.common,pPlayer->options.path);
1151,1165d1141
void ConfigSaveSpecific(Config *pConfig)
< {
<   
Player *pPlayer=pConfig->pPlayer;
<   
/*HWND hComboBox=GetDlgItem(pConfig->hDlg,IDC_COMBOBOX_DEVICE);
<   DWORD cDevice=SendMessageW(hComboBox,CB_GETCURSEL,0,0);
<   ConfigDevice *pConfigDevice=(ConfigDevice *)SendMessageW(hComboBox,
<       CB_GETITEMDATA,cDevice,0);*/

<   
//if (pConfigDevice) {
<     // should be called before the lock in order to not dead-lock this window.
<     ConfigGet(pConfig);
<     
PLAYER_SEND(pPlayer,PlayerWriteConfigSpecific,pConfig,NULL/*pConfigDevice*/);
<   
//}
< }

1242c1218
<     ConfigOnInit(hDlg,wParam,pConfig);
---
>     
ConfigOnInit(hDlg,pConfig);
1251d1226
<       ConfigSaveSpecific(pConfig);
1319c1294
int ConfigDialog(Player *pPlayer/*, HINSTANCE hInstance*/HWND hWndParent)
---
int ConfigDialog(Player *pPlayerHINSTANCE hInstanceHWND hWndParent)
1321a1297
>   LPCWSTR lpTemplateName=MAKEINTRESOURCEW(IDD_CONFIG);
1326c1302
<   Config config = {0};
---
>   
Config config;
1342a1319
>   ZeroMemory(&config,sizeof config);
1344c1321
<   //config.hModule=hInstance;
---
>   
config.hModule=hInstance;
1388,1389c1365,1367
<   WADialogBoxParam(
<     
IDD_CONFIG,       // _In_      LPCTSTR lpTemplateName,
---
>   
DialogBoxParamW(
>     
hInstance,            // _In_opt_  HINSTANCE hInstance,
>     lpTemplateName,       // _In_      LPCTSTR lpTemplateName,
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_control_list../out_yasapi-1.7.25/out_yasapi/yasapi_control_list.c
21c21
#include <resource.h>
---
#include <resources.h>
26c26,28
<   { IDC_CHECKBOX_MONO2STEREO,offsetof(OptionsCommon,bMono2Stereo),0,1,IDS_MONO_TO_STEREO };
---
>   { 
IDC_CHECKBOX_MONO2STEREO,offsetof(OptionsCommon,bMono2Stereo),0,1,
>       
L"If playing mono, whether YASAPI should duplicate the one mono"
>       L" channel, i.e. convert mono to stereo." };
30c32,33
<   { IDC_CHECKBOX_VOLUME,offsetof(OptionsCommon,bVolume),0,1,IDS_USE_WINAMP_VOLUME };
---
>   { 
IDC_CHECKBOX_VOLUME,offsetof(OptionsCommon,bVolume),0,1,
>       
L"Whether YASAPI should apply Winamp's volume control." };
35c38,39
<   { IDC_CHECKBOX_GAPLESS,offsetof(OptionsCommon,bGapless),0,1,IDS_GAPLESS_PLAYBACK };
---
>   { 
IDC_CHECKBOX_GAPLESS,offsetof(OptionsCommon,bGapless),0,1,
>       
L"Whether playback shoud be in gapless mode." };
39c43,45
<   { IDC_CHECKBOX_DISCONNECT,offsetof(OptionsCommon,bDisconnect),0,1,IDS_DISCONNECT_WHEN_IDLE };
---
>   { 
IDC_CHECKBOX_DISCONNECT,offsetof(OptionsCommon,bDisconnect),0,1,
>       
L"In gapless mode, whether YASAPI should automatically disconnect"
>       L" the device when idle." };
62c68,71
<   { IDC_CHECKBOX_SORROUND,offsetof(OptionsCommon,bSorround),0,1,IDS_SURROUND_MODE };
---
>   { 
IDC_CHECKBOX_SORROUND,offsetof(OptionsCommon,bSorround),0,1,
>       
L"Whether 4, 6, or 8 channels should be interpreted as qadrophnic"
>       L" (3.1), 5.1, or 7.1 (disabled) or sorround (3.1 sorround)"
>       L", 5.1 sorround, or 7.1 sorround (enabled), respectively." };
67c76,79
<   { IDC_CHECKBOX_FORMAT_SUPPORTED,offsetof(OptionsCommon,bFormatSupported),0,1,IDS_TEST_FORMAT };
---
>   { 
IDC_CHECKBOX_FORMAT_SUPPORTED,
>       
offsetof(OptionsCommon,bFormatSupported),0,1,
>       
L"Whether YASAPI should call IAudioClient::IsFormatSupported before"
>       L" IAudioClient::Initialize." };
71,72c83,84
<   { IDS_WASAPI,},
<   { 
IDS_SYSTEM,},
---
>   { 
L"WASAPI",},
>   { 
L"System",},
77c89,92
<   { IDC_COMBOBOX_CLOCK,offsetof(OptionsCommon,bAudioClock),gcaAudioClockList,IDS_CLOCK_MODE };
---
>   { 
IDC_COMBOBOX_CLOCK,offsetof(OptionsCommon,bAudioClock),gcaAudioClockList,
>       
L"Whether Winamp visualization should be synchronized by means of"
>       L" the IAudioClock interface (WASAPI) or"
>       L" the GetTickCount function (System)." };
81c96,98
<   { IDC_CHECKBOX_VISUALIZATION,offsetof(OptionsCommon,bVisualization),0,1,IDS_VISUALISE_BUFFERS };
---
>   { 
IDC_CHECKBOX_VISUALIZATION,offsetof(OptionsCommon,bVisualization),0,1,
>       
L"Whether the configuration dialog should visualize the ring and"
>       L" the shared buffers." };
85,86c102,109
<   { IDC_RADIOBUTTON_TIME_POSITION,offsetof(OptionsCommon,eTimeTag),TIME_POSITION,IDS_TIME_POSITION },
<   { 
IDC_RADIOBUTTON_TIME_TIME,offsetof(OptionsCommon,eTimeTag),TIME_TIME,IDS_TIME_TIME },
---
>   { 
IDC_RADIOBUTTON_TIME_POSITION,offsetof(OptionsCommon,eTimeTag),
>       
TIME_POSITION,
>       
L"Whether time should be measured by an 64-bit integer"
>       L" representing the position." },
>   { 
IDC_RADIOBUTTON_TIME_TIME,offsetof(OptionsCommon,eTimeTag),
>       
TIME_TIME,
>       
L"Whether time should be measured by a floating point"
>       L" value representing the quotient of position and frequency." },
114,116c137,139
<   { IDS_SHARE,YASAPI_SHAREMODE_SHARE },
<   { 
IDS_EXCLUSIVE,YASAPI_SHAREMODE_EXCLUSIVE },
<   { 
IDS_AUTOMATIC,YASAPI_SHAREMODE_AUTOMATIC },
---
>   { 
L"Share",YASAPI_SHAREMODE_SHARE },
>   { 
L"Exclusive",YASAPI_SHAREMODE_EXCLUSIVE },
>   { 
L"Automatic",YASAPI_SHAREMODE_AUTOMATIC },
121c144,148
<   { IDC_COMBOBOX_SHAREMODE,offsetof(OptionsDevice,eShareMode),gcaShareModeList,IDS_SHAREMODE };
---
>   { 
IDC_COMBOBOX_SHAREMODE,offsetof(OptionsDevice,eShareMode),
>       
gcaShareModeList,
>       
L"Depending on the device, whether WASAPI should operate in share"
>       L" or in exclusive mode or whether it should automatically fall back"
>       L" from exclusive to share mode if needed." };
125c152,155
<   { IDC_CHECKBOX_AUTOCONVERT_PCM,offsetof(OptionsDevice,bAutoConvertPCM),FALSE,TRUE,IDS_AUTO_CONVERT_PCM };
---
>   { 
IDC_CHECKBOX_AUTOCONVERT_PCM,offsetof(OptionsDevice,bAutoConvertPCM),
>       
FALSE,TRUE,
>       
L"In share mode, wether WASAPI should auto-convert the samplerate"
>       L" to the system setting if needed." };
129c159,163
<   { IDC_CHECKBOX_SRC_DEFAULT_QUALITY,offsetof(OptionsDevice,bSRCDefaultQuality),FALSE,TRUE,IDS_SRC_DEFAULT_QUALITY };
---
>   { 
IDC_CHECKBOX_SRC_DEFAULT_QUALITY,
>       
offsetof(OptionsDevice,bSRCDefaultQuality),
>       
FALSE,TRUE,
>       
L"In share mode, whether WASAPI should use an improved algorithm"
>       L" for sample rate conversion (SRC). Not supported by all systems." };
133,134c167,168
<   { IDS_PUSH,FALSE },
<   { 
IDS_PULL,TRUE },
---
>   { 
L"Push",FALSE },
>   { 
L"Pull",TRUE },
139c173,176
<   { IDC_COMBOBOX_PULL,offsetof(OptionsDevice,bPull),gcaPullList,IDS_PUSH_OR_PULL };
---
>   { 
IDC_COMBOBOX_PULL,offsetof(OptionsDevice,bPull),
>       
gcaPullList,
>       
L"Depending on the abilities of the device, whether WASAPI should"
>       L" operate in push or pull mode." };
144,145c181,182
<   { IDS_NO,FALSE },
<   { 
IDS_YES,TRUE },
---
>   { 
L"No",FALSE },
>   { 
L"Yes",TRUE },
151c188,189
<       offsetof(OptionsDevice,bForce24Bit),FALSE,TRUE,IDS_16BIT_AS_24BIT };
---
>       
offsetof(OptionsDevice,bForce24Bit),FALSE,TRUE,
>       
L"Whether WASAPI should play 16 bit streams as 24 bit." };
195,196c233,234
<   { IDS_DEFAULT,YASAPI_DEVICE_PERIOD_DEFAULT },
<   { 
IDS_MINIMUM,YASAPI_DEVICE_PERIOD_MINIMUM },
---
>   { 
L"Default",YASAPI_DEVICE_PERIOD_DEFAULT },
>   { 
L"Minimum",YASAPI_DEVICE_PERIOD_MINIMUM },
201c239,242
<   { IDC_COMBOBOX_DEVICE_PERIOD,offsetof(OptionsDevice,eDevicePeriod),gcaDevicePeriodList,IDS_DEVICE_PERIOD };
---
>   { 
IDC_COMBOBOX_DEVICE_PERIOD,offsetof(OptionsDevice,eDevicePeriod),
>       
gcaDevicePeriodList,
>       
L"Whether the buffer size calculation should be based on the"
>       L" default or on the minimum device periode as proposed by WASAPI." };
207c248,250
<       IDC_STATIC_SHARE_SIZE,IDS_SLIDER_MINIMUM_DEFAULT,IDS_SHARE_SIZE };
---
>       
IDC_STATIC_SHARE_SIZE,L"%0.1f \xD7 minimum/default",
>       
L"A factor YASAPI should apply to the device period proposed"
>       L" by WASAPI." };
211c254,258
<       IDC_STATIC_RING_SIZE,IDS_SLIDER_SHARED_BUFFER,IDS_RING_SIZE },
---
>       
IDC_STATIC_RING_SIZE,L"Size: %0.2f \xD7 size of shared buffer",
>       
L"The number of samples YASAPI should be able to buffer between"
>       L" having received from Winamp and before sending to the device."
>       L" Must be at least as much being able to cache before starting"
>       L" to play." },
213c260,263
<       IDC_STATIC_RING_FILL,IDS_SLIDER_PREBUFFER,IDS_RING_FILL },
---
>       
IDC_STATIC_RING_FILL,L"Start Playing: %0.2f \xD7 size of shared buffer",
>       
L"The number of samples YASAPI should have received from Winamp before"
>       L" starting to play. Must be at least the size of the buffer YASAPI"
>       L" shares with the device." },
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_device../out_yasapi-1.7.25/out_yasapi/yasapi_device.c
66c66
<     lstrcpyn(pPlayerDevice->szId,pstrId,ARRAYSIZE(pPlayerDevice->szId));
---
>     
wcscpy(pPlayerDevice->szId,pstrId);
71c71
<     lstrcpyn(pPlayerDevice->szId,pcstrId,ARRAYSIZE(pPlayerDevice->szId));
---
>     
wcscpy(pPlayerDevice->szId,pcstrId);
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_kill../out_yasapi-1.7.25/out_yasapi/yasapi_kill.c
109c109
<   //HRESULT hr;
---
>   
HRESULT hr;
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_notify../out_yasapi-1.7.25/out_yasapi/yasapi_notify.c
94a95
>   Player *pPlayer=pNotify->pPlayer;
105c106

---
>   
Player *pPlayer=pNotify->pPlayer;
122a124,129
>   PlayerNotificationClient *pNotify=(PlayerNotificationClient *)This;
>   
Player *pPlayer=pNotify->pPlayer;
>   
int srate;
>   
int numchan;
>   
int bps;
>   
Ring ring;
125a133
>   PlayerDevice device;
157a166,168
>   PlayerNotificationClient *pNotify=(PlayerNotificationClient *)This;
>   
Player *pPlayer=pNotify->pPlayer;

167a179,181
>   PlayerNotificationClient *pNotify=(PlayerNotificationClient *)This;
>   
Player *pPlayer=pNotify->pPlayer;

238a253,255
>   PlayerNotificationClient *pNotify=(PlayerNotificationClient *)This;
>   
Player *pPlayer=pNotify->pPlayer;

diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_options_common../out_yasapi-1.7.25/out_yasapi/yasapi_options_common.c
48
,63c48,49
<   { YA_PROPERTY_CONFIGX,&gcIntType,offsetof(OptionsCommon,nPosX),},
<   { 
YA_PROPERTY_CONFIGY,&gcIntType,offsetof(OptionsCommon,nPosY),},
#endif // }
<   { NULL,NULL,0,}
< };

< static const 
Property gcaConfigProperties***91;***93;={
<   { 
YASAPI_PROPERTY_PAGE,&gcIntType,offsetof(OptionsCommon,nPage),},
#if defined (YASAPI_ABOUT) // {
<   { YA_PROPERTY_CONFIGX,&gcIntType,offsetof(OptionsCommon,nConfigX),},
<   { 
YA_PROPERTY_CONFIGY,&gcIntType,offsetof(OptionsCommon,nConfigY),},
<   { 
YA_PROPERTY_ABOUTX,&gcIntType,offsetof(OptionsCommon,nAboutX),},
<   { 
YA_PROPERTY_ABOUTY,&gcIntType,offsetof(OptionsCommon,nAboutY),},
#else // } {
<   { YA_PROPERTY_CONFIGX,&gcIntType,offsetof(OptionsCommon,nPosX),},
<   { 
YA_PROPERTY_CONFIGY,&gcIntType,offsetof(OptionsCommon,nPosY),},
---
>   { 
YASAPI_PROPERTY_POSX,&gcIntType,offsetof(OptionsCommon,nPosX),},
>   { 
YASAPI_PROPERTY_POSY,&gcIntType,offsetof(OptionsCommon,nPosY),},
88c74
void OptionsCommonSave(OptionsCommon *pOptionsint mode, const wchar_t *path)
---
void OptionsCommonSave(OptionsCommon *pOptions, const wchar_t *path)
95,97c81
<   // this change allows us to save only the config window
<   // state if we are not doing a full configuration save.
<   PropertiesSave((!mode gcaCommonProperties gcaConfigProperties),&c);
---
>   
PropertiesSave(gcaCommonProperties,&c);
108d91
<     options.bVolume=TRUE;
113c96
<     options.bGapless=TRUE;
---
>     
options.bGapless=FALSE;
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_player../out_yasapi-1.7.25/out_yasapi/yasapi_player.c
21c21
#include <resource.h>
---
#include <resources.h>
62d61
<   wchar_t aszModuleName***91;MAX_PATH***93; = {0};
88c87
<   nLen=GetModuleFileName(
---
>   
nLen=GetModuleFileNameA(
90,91c89,90
<     aszModuleName,            // _Out_    LPTSTR  lpFilename,
<     ARRAYSIZE(aszModuleName)  // _In_     DWORD   nSize
---
>     
pPlayer->base.aszModuleName,          // _Out_    LPTSTR  lpFilename,
>     sizeof pPlayer->base.aszModuleName    // _In_     DWORD   nSize
99c98
<   pPlayer->base.pszFileName=basenamew(aszModuleName);
---
>   
pPlayer->base.pszFileName=basenamea(pPlayer->base.aszModuleName);
101c100
<   //pPlayer->base.hModule=hModule;
---
>   
pPlayer->base.hModule=hModule;
265c264
<   AUDCLNT_SHAREMODE eShareMode AUDCLNT_SHAREMODE_SHARED;
---
>   
AUDCLNT_SHAREMODE eShareMode;
766a766,767
state:
>   return -
1;
1338c1339
<   dwFramesRead=RingReadEx(pRing,(LPSTR)pData,c.dwWriteSize,RING_COPY,&error);
---
>   
dwFramesRead=RingReadEx(pRing,pData,c.dwWriteSize,RING_COPY,&error);
1385c1386
<   RingReadEx(pRing,(LPSTR)pData,c.dwWriteSize,RING_COMMIT,&error);
---
>   
RingReadEx(pRing,pData,c.dwWriteSize,RING_COMMIT,&error);
1458a1460
//DPRINTF(0,"%s 1\n",__func__);
1462a1465
//DPRINTF(0,"%s 2\n",__func__);
1517a1521
>   WAVEFORMATEX *pwfx=&pPlayer->open.wfxx.Format;
1576a1581,1584
>   const PlayerState state=pPlayer->state;
>   
Connection *pConnect=&pPlayer->connect;
>   
IAudioClient *pClient=pConnect->pClient;
>   
HRESULT hr;
1730a1739
padding:
1738a1748
>   Connection *pConnect=&pPlayer->connect;
1904c1914
<   return (UINT32)-1;
---
>   return -
1;
2109a2120
>   Options *pOptions=&pPlayer->options;
2116a2128
>   const char *lwp;
2123,2124d2134
<   char *wp=Destination,*lwp=wp,*mp=wp+Length;
<   const 
char *rp=Source;
2125a2136,2137
>   char *wp,*mp;
>   const 
char *rp;
2128a2141,2143
>   wp=Destination;
>   
mp=wp+Length;
>   
rp=Source;
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_ring../out_yasapi-1.7.25/out_yasapi/yasapi_ring.c
20a21
#include <stdint.h>
82c83
<   return (DWORD)-1;
---
>   return -
1;
282c283
<   return (DWORD)-1;
---
>   return -
1;
301c302
<   return (DWORD)-1;
---
>   return -
1;
356c357
<   return (DWORD)-1;
---
>   return -
1;
452c453
<   return (DWORD)-1;
---
>   return -
1;
482c483
<   return (DWORD)-1;
---
>   return -
1;
553c554
<   return (DWORD)-1;
---
>   return -
1;
621c622
<   return (DWORD)-1;
---
>   return -
1;
771a773
size:
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_strategy../out_yasapi-1.7.25/out_yasapi/yasapi_strategy.c
101a102
>   HRESULT hr;
diff -br --strip-trailing-cr /d/MSys2/home/out_notyasapi_v1_0_beta/out_yasapi/yasapi_time../out_yasapi-1.7.25/out_yasapi/yasapi_time.c
217a218
>   TimeSegment difference;
323a325,329
>     if (!pTime->u64Frequency) {
>       
DMESSAGE("division by zero frequency\n");
>       goto 
frequency;
>     }

333a340
frequency
He doesn't touched any of the substantial problems inherent in YASAPI. He even know about them.As expected, all he did is (some) irrelevant GUI stuff.

The most substantial change of course (not reflected in the "diff") is fa new About dialog:



That's indeed the only reason for the plagiat , "DrO" wants to put his name on it.

Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas
pbelkner is offline   Reply With Quote
Old 10th August 2016, 17:25   #491
Pawel
Moderator
 
Pawel's Avatar
 
Join Date: Aug 2004
Location: Poland
Posts: 503
Send a message via ICQ to Pawel
OK...
First of all, I am warning you. Do not threaten me or any other user.
Please, focus on your plugin.

You wrote:
Quote:
Originally Posted by pbelkner View Post
Finally "DrO" has made it true and has published a YASAPI plagiat plug-in:
What is the license of your plugin? Did he has right to make own version based on your code? Is this a plagiat or normal use of source code based on its license?

Quote:
Originally Posted by pbelkner View Post
The fanboys of "DrO" are more then happy and post at his blog, e.g. someone who calls himself Pawel
I am not a fanboy. I am just a friend.
I don't care about your plugin. You even didn't understand what I wrote there...

Quote:
Originally Posted by pbelkner View Post
Pawel, are you this forum's mod?
Yes, of course. It is me.

Quote:
Originally Posted by pbelkner View Post
And Pawel, I will request DJ Egg investigating whether you are the same person as the fanboy of "DrO"and if it turns out to be true that he fires you as this forum's mod.
This is what I call "Also he is very strange and posts strange texts on Winamp forum…".
Once again, do not threaten me like this... Stop writing such nonsenses and focus on making your plugin even better.

Quote:
Originally Posted by pbelkner View Post
He doesn't touched any of the substantial problems inherent in YASAPI. He even know about them.As expected, all he did is (some) irrelevant GUI stuff.
I don't care what he did or not. In my opinion he had right to use your code, as you made such license. But, I was asking him is this OK to use sources, if he know that you probably don't agree for using it...

Btw. how could you think I am a fanboy reading my text on his blog?
Maybe you should read it once again. Then you will see that I asked DrO directly why he decided to play with your stupid plugin (even when you said he can not).
Also, I wrote I think he can, as license allows him to do this (in my opinion).
Pawel is offline   Reply With Quote
Old 10th August 2016, 17:34   #492
Benski
Ben Allison
Former Winamp Developer
 
Benski's Avatar
 
Join Date: Jan 2005
Location: Brooklyn, NY
Posts: 1,047
Quote:
Originally Posted by pbelkner View Post
Finally "DrO" has made it true and has published a YASAPI plagiat plug-in:

Yes indeed, I call a thief a thief.
You have released your YASAPI plugin and source code under the GPL. This gives every person who downloads your plugin the legal right to make whatever modifications they like, so long as they release those modifications under the GPL as well. This is the core basis of the GNU General Public License, and is a choice that you made when you released your work.

In particular, this is the relevant part of the GPLv3 that allows DrO (and any others) to do this

Quote:
5. Conveying Modified Source Versions.

You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
Note that the About Box was likely added for the sole purpose for satisfying the demands of the GPLv3.
Benski is offline   Reply With Quote
Old 10th August 2016, 17:52   #493
pbelkner
Senior Member
 
Join Date: Jun 2010
Posts: 405
Quote:
Originally Posted by Benski View Post
You have released your YASAPI plugin and source code under the GPL. This gives every person who downloads your plugin the legal right to make whatever modifications they like
Indeed. And if you read carefully my posts you will see that I have always corrected people who claimed that I was forbidding him to do so. He has the formal right. Anyway, I will continue to call him a thief (of intellectual property) because he had added literally nothing else than his name.

Guess what? I will continue to publish my source code under GPL.

Winamp v5.666 Build 3516 (x86) + in_ffsox + out_yasapi + gen_yas
pbelkner is offline   Reply With Quote
Old 11th August 2016, 13:52   #494
sirlemonhead
Junior Member
 
Join Date: Mar 2012
Posts: 4
You won't care, but I've actually reverted to using the Directsound output plugin based on how utterly, utterly insane you are.
sirlemonhead is offline   Reply With Quote
Old 11th August 2016, 17:34   #495
ryerman
Major Dude
 
ryerman's Avatar
 
Join Date: Mar 2010
Location: Canada
Posts: 566
Quote:
Originally Posted by sirlemonhead View Post
You won't care, but I've actually reverted to using the Directsound output plugin based on how utterly, utterly insane you are.
That is an example of "cutting off your nose to spite your face".

Windows 10 Home, 64 bit, Winamp 5.666, Bento Skin
ryerman is offline   Reply With Quote
Old 11th August 2016, 17:44   #496
musicf8
Senior Member
 
musicf8's Avatar
 
Join Date: Apr 2013
Location: Orange, CA
Posts: 375
Send a message via AIM to musicf8
Quote:
Originally Posted by ryerman View Post
That is an example of "cutting off your nose to spite your face".
I disagree, people commonly avoid products due to principal.

(┛◉Д◉)┛彡ʎɯouoıpɐɹ

Current status of Winamp 5.8: 1/5/2017

Winamp v5.63 (used w/ ml_ipod) bumping through Windows 10 Pro w/ Logitech Z-5500
musicf8 is offline   Reply With Quote
Old 31st August 2016, 18:56   #497
tsunami
Junior Member
 
Join Date: Sep 2002
Posts: 20
Off all the WASAPI/ASIO plugins I tried for winamp This the only one I could get to work, Cant say I hear diffrence though, and I cant say if the "surround" effect actual works as my 5.1 setup is not connect to pc atm.

Btw you misspelled surround in the tool tip and option
tsunami is offline   Reply With Quote
Old 28th February 2017, 12:12   #498
Stone Free
Senior Member
 
Join Date: Feb 2001
Posts: 106
How can I configure YASPI to be more resistant to CPU/IO. I had trouble with my previous PC getting it to upgrade to the Anniversary Edition, I tried updating all drivers which didn't help and then broke Gapless playback in YASPI.

In the end I bought a new PC, however it seems to suffer from audio glitches which the old PC never did, and they were both Windows 10 machines
Stone Free is offline   Reply With Quote
Reply
Go Back   Winamp & SHOUTcast Forums > Winamp > Winamp Discussion

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