Updated patch collection.
This commit is contained in:
parent
62af2f575e
commit
fc8ce320a6
195
etc/Patches/AC3Filter-valdec-UTF8+FlushProgress+NoDShow.V3.diff
Normal file
195
etc/Patches/AC3Filter-valdec-UTF8+FlushProgress+NoDShow.V3.diff
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
tools/cli_args.cpp | 86 ++++++++++++++++++++++++++++++++++
|
||||||
|
tools/cli_args.h | 6 +++
|
||||||
|
tools/valdec.cpp | 21 +++++++--
|
||||||
|
valib/valib/parsers/ffmpeg_decoder.cpp | 2 +
|
||||||
|
valib/valib/sink/sink_dsound.cpp | 4 +-
|
||||||
|
5 files changed, 113 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tools/cli_args.cpp b/tools/cli_args.cpp
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..37a6983
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tools/cli_args.cpp
|
||||||
|
@@ -0,0 +1,86 @@
|
||||||
|
+
|
||||||
|
+#define WIN32_LEAN_AND_MEAN
|
||||||
|
+
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <assert.h>
|
||||||
|
+#include <windows.h>
|
||||||
|
+#include <Shellapi.h>
|
||||||
|
+#include <io.h>
|
||||||
|
+
|
||||||
|
+#include "../valib/3rdparty/utf8/utf8.h"
|
||||||
|
+
|
||||||
|
+static std::string wstring_to_utf8(const std::wstring &s)
|
||||||
|
+{
|
||||||
|
+ std::string u8;
|
||||||
|
+ if (sizeof(wchar_t) == 2)
|
||||||
|
+ utf8::utf16to8(s.begin(), s.end(), std::back_inserter(u8));
|
||||||
|
+ else if (sizeof(wchar_t) == 4)
|
||||||
|
+ utf8::utf32to8(s.begin(), s.end(), std::back_inserter(u8));
|
||||||
|
+ else
|
||||||
|
+ assert(false);
|
||||||
|
+ return u8;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int init_cli_args(char ***argv)
|
||||||
|
+{
|
||||||
|
+ int i, nArgs;
|
||||||
|
+ LPWSTR *szArglist;
|
||||||
|
+
|
||||||
|
+ szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
|
||||||
|
+
|
||||||
|
+ if(NULL == szArglist)
|
||||||
|
+ {
|
||||||
|
+ fprintf(stderr, "\nFATAL: CommandLineToArgvW failed !!!\n\n");
|
||||||
|
+ exit(-1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ *argv = (char**) malloc(sizeof(char*) * nArgs);
|
||||||
|
+ if(NULL == *argv)
|
||||||
|
+ {
|
||||||
|
+ fprintf(stderr, "\nFATAL: Malloc failed\n\n");
|
||||||
|
+ exit(-1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for(i = 0; i < nArgs; i++)
|
||||||
|
+ {
|
||||||
|
+ (*argv)[i] = _strdup(wstring_to_utf8(szArglist[i]).c_str());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ LocalFree(szArglist);
|
||||||
|
+ return nArgs;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void free_cli_args(int argc, char ***argv)
|
||||||
|
+{
|
||||||
|
+ int i = 0;
|
||||||
|
+
|
||||||
|
+ if(*argv != NULL)
|
||||||
|
+ {
|
||||||
|
+ for(i = 0; i < argc; i++)
|
||||||
|
+ {
|
||||||
|
+ if((*argv)[i] != NULL)
|
||||||
|
+ {
|
||||||
|
+ free((*argv)[i]);
|
||||||
|
+ (*argv)[i] = NULL;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ free(*argv);
|
||||||
|
+ *argv = NULL;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static UINT g_old_output_cp = ((UINT)-1);
|
||||||
|
+
|
||||||
|
+void init_console(void)
|
||||||
|
+{
|
||||||
|
+ g_old_output_cp = GetConsoleOutputCP();
|
||||||
|
+ SetConsoleOutputCP(CP_UTF8);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void reset_console(void)
|
||||||
|
+{
|
||||||
|
+ if(g_old_output_cp != ((UINT)-1))
|
||||||
|
+ {
|
||||||
|
+ SetConsoleOutputCP(g_old_output_cp);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/tools/cli_args.h b/tools/cli_args.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..3be906b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tools/cli_args.h
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+
|
||||||
|
+int init_cli_args(char ***argv);
|
||||||
|
+void free_cli_args(int argc, char ***argv);
|
||||||
|
+
|
||||||
|
+void init_console(void);
|
||||||
|
+void reset_console(void);
|
||||||
|
diff --git a/tools/valdec.cpp b/tools/valdec.cpp
|
||||||
|
index 5582c8d..e434c0d 100644
|
||||||
|
--- a/tools/valdec.cpp
|
||||||
|
+++ b/tools/valdec.cpp
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
// other
|
||||||
|
#include "win32/cpu.h"
|
||||||
|
#include "vargs.h"
|
||||||
|
+#include "cli_args.h"
|
||||||
|
|
||||||
|
#include "valdec_usage.txt.h"
|
||||||
|
|
||||||
|
@@ -94,7 +95,7 @@ const enum_opt format_tbl[] =
|
||||||
|
{ "7", FORMAT_PCMDOUBLE },
|
||||||
|
};
|
||||||
|
|
||||||
|
-int valdec(int argc, const char *argv[])
|
||||||
|
+int valdec(int argc, char **argv)
|
||||||
|
{
|
||||||
|
using std::string;
|
||||||
|
if (argc < 2)
|
||||||
|
@@ -698,10 +699,14 @@ int valdec(int argc, const char *argv[])
|
||||||
|
int(value2db(level)), \
|
||||||
|
int(file.get_frames() / time), \
|
||||||
|
cpu_current.usage() * 100); \
|
||||||
|
+ fflush(stderr); \
|
||||||
|
}
|
||||||
|
|
||||||
|
- #define DROP_STAT \
|
||||||
|
- fprintf(stderr, " \r");
|
||||||
|
+ #define DROP_STAT \
|
||||||
|
+ { \
|
||||||
|
+ fprintf(stderr, " \r"); \
|
||||||
|
+ fflush(stderr); \
|
||||||
|
+ }
|
||||||
|
|
||||||
|
while (file.get_chunk(chunk))
|
||||||
|
{
|
||||||
|
@@ -830,7 +835,15 @@ int main(int argc, const char *argv[])
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
- return valdec(argc, argv);
|
||||||
|
+ char **argv_utf8 = NULL;
|
||||||
|
+ init_console();
|
||||||
|
+ int argc_utf8 = init_cli_args(&argv_utf8);
|
||||||
|
+
|
||||||
|
+ int ret = valdec(argc_utf8, argv_utf8);
|
||||||
|
+
|
||||||
|
+ free_cli_args(argc_utf8, &argv_utf8);
|
||||||
|
+ reset_console();
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
catch (ValibException &e)
|
||||||
|
{
|
||||||
|
diff --git a/valib/valib/parsers/ffmpeg_decoder.cpp b/valib/valib/parsers/ffmpeg_decoder.cpp
|
||||||
|
index b6b20d7..864f83c 100644
|
||||||
|
--- a/valib/valib/parsers/ffmpeg_decoder.cpp
|
||||||
|
+++ b/valib/valib/parsers/ffmpeg_decoder.cpp
|
||||||
|
@@ -10,6 +10,8 @@ extern "C"
|
||||||
|
{
|
||||||
|
#define __STDC_CONSTANT_MACROS
|
||||||
|
#include "../../3rdparty/ffmpeg/include/libavcodec/avcodec.h"
|
||||||
|
+#include "../../3rdparty/ffmpeg/include/libavutil/mem.h"
|
||||||
|
+#include "../../3rdparty/ffmpeg/include/libavutil/channel_layout.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
static const string module = "FfmpegDecoder";
|
||||||
|
diff --git a/valib/valib/sink/sink_dsound.cpp b/valib/valib/sink/sink_dsound.cpp
|
||||||
|
index f22104d..f5f07bf 100644
|
||||||
|
--- a/valib/valib/sink/sink_dsound.cpp
|
||||||
|
+++ b/valib/valib/sink/sink_dsound.cpp
|
||||||
|
@@ -47,9 +47,9 @@ DSoundSink::open_dsound(HWND _hwnd, int _buf_size_ms, int _preload_ms, LPCGUID _
|
||||||
|
|
||||||
|
// Open DirectSound
|
||||||
|
|
||||||
|
- if FAILED(DirectSoundCreate(_device, &ds, 0))
|
||||||
|
+ if(1) //FAILED(DirectSoundCreate(_device, &ds, 0))
|
||||||
|
return false;
|
||||||
|
-
|
||||||
|
+
|
||||||
|
if (!_hwnd) _hwnd = GetForegroundWindow();
|
||||||
|
if (!_hwnd) _hwnd = GetDesktopWindow();
|
||||||
|
if FAILED(ds->SetCooperativeLevel(_hwnd, DSSCL_PRIORITY))
|
Loading…
Reference in New Issue
Block a user