mediainfo-native 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96cbdd0092637b32864710d15fac06c55bbc6500
|
4
|
+
data.tar.gz: fc283a05212d70048b0e69bfa3829d5b86d2f5fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc8efacc08144c5b3d6ddb97342c83d6ce0e9e9db04620ade5701ffd539abf54baf5c23800c648a1e448e1cee7fa89f3a09672c4fd4325a3c2091c3aa2c45f31
|
7
|
+
data.tar.gz: 285c144f1f61558a7ef0a705e89e01b2cfd198515700908f05c385b2aefc66bdea6660d45f3e8a53b448a9a9a8eb15718ef768a0223672ee0b180dcf71ead822
|
@@ -68,7 +68,7 @@ extern "C"
|
|
68
68
|
Check_Type(path, T_STRING);
|
69
69
|
GET_WRAPPER(miw);
|
70
70
|
|
71
|
-
OpenParams params = { miw,
|
71
|
+
OpenParams params = { miw, value_to_mediainfo_string(path), 0 };
|
72
72
|
rb_thread_call_without_gvl(miw_open_without_gvl, (void*) ¶ms, NULL, NULL);
|
73
73
|
|
74
74
|
switch(params.result) {
|
@@ -103,7 +103,7 @@ extern "C"
|
|
103
103
|
Check_Type(path, T_STRING);
|
104
104
|
GET_WRAPPER(miw);
|
105
105
|
|
106
|
-
miw->open(
|
106
|
+
miw->open(value_to_mediainfo_string(path));
|
107
107
|
VALUE inform = miw->inform();
|
108
108
|
miw->close();
|
109
109
|
|
@@ -169,9 +169,9 @@ MediaInfoWrapper::MediaInfoWrapper(bool ignore_continuous_file_names)
|
|
169
169
|
: file_opened(false)
|
170
170
|
{
|
171
171
|
mi = new MediaInfoDLL::MediaInfo();
|
172
|
-
mi->Option("Inform", "XML");
|
173
|
-
mi->Option("Complete", "1");
|
174
|
-
mi->Option("File_TestContinuousFileNames", ignore_continuous_file_names ? "0" : "1");
|
172
|
+
mi->Option(L"Inform", L"XML");
|
173
|
+
mi->Option(L"Complete", L"1");
|
174
|
+
mi->Option(L"File_TestContinuousFileNames", ignore_continuous_file_names ? L"0" : L"1");
|
175
175
|
}
|
176
176
|
|
177
177
|
MediaInfoWrapper::~MediaInfoWrapper()
|
@@ -183,7 +183,7 @@ MediaInfoWrapper::~MediaInfoWrapper()
|
|
183
183
|
delete mi;
|
184
184
|
}
|
185
185
|
|
186
|
-
int MediaInfoWrapper::open(
|
186
|
+
int MediaInfoWrapper::open(MediaInfoDLL::String path)
|
187
187
|
{
|
188
188
|
if(file_opened)
|
189
189
|
return 1;
|
@@ -225,20 +225,20 @@ VALUE MediaInfoWrapper::wrapStreams()
|
|
225
225
|
|
226
226
|
VALUE MediaInfoWrapper::get(StreamType type, unsigned int idx, VALUE key) const
|
227
227
|
{
|
228
|
-
MediaInfoDLL::String mi_key(
|
229
|
-
return
|
228
|
+
MediaInfoDLL::String mi_key(value_to_mediainfo_string(key));
|
229
|
+
return mediainfo_string_to_value(mi->Get(convertToMediaInfoStreamType(type), idx, mi_key));
|
230
230
|
}
|
231
231
|
|
232
232
|
VALUE MediaInfoWrapper::inform() const
|
233
233
|
{
|
234
234
|
CHECK_OPEN;
|
235
235
|
|
236
|
-
return
|
236
|
+
return mediainfo_string_to_value(mi->Inform());
|
237
237
|
}
|
238
238
|
|
239
239
|
VALUE MediaInfoWrapper::option() const
|
240
240
|
{
|
241
|
-
return
|
241
|
+
return mediainfo_string_to_value(mi->Option(L"Info_Parameters"));
|
242
242
|
}
|
243
243
|
|
244
244
|
} /* namespace MediaInfoNative */
|
@@ -1,19 +1,36 @@
|
|
1
1
|
#include <ruby.h>
|
2
|
-
#include <
|
2
|
+
#include <cstdlib>
|
3
3
|
#include "unicode.h"
|
4
4
|
|
5
|
-
MediaInfoDLL::String
|
5
|
+
MediaInfoDLL::String value_to_mediainfo_string(VALUE s)
|
6
6
|
{
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
size_t nchars = RSTRING_LEN(s);
|
8
|
+
wchar_t buf[nchars + 1];
|
9
|
+
|
10
|
+
nchars = mbstowcs(buf, StringValueCStr(s), nchars);
|
11
|
+
|
12
|
+
if((size_t) (-1) == nchars)
|
13
|
+
rb_raise(rb_eArgError, "invalid multi-byte sequence in char array");
|
14
|
+
else
|
15
|
+
// According to mbstowcs(3), this is not nul-terminated when max characters
|
16
|
+
// have been written.
|
17
|
+
buf[nchars] = L'\0';
|
18
|
+
|
19
|
+
return MediaInfoDLL::String(buf);
|
10
20
|
}
|
11
21
|
|
12
|
-
VALUE
|
22
|
+
VALUE mediainfo_string_to_value(MediaInfoDLL::String s)
|
13
23
|
{
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
24
|
+
size_t nbytes = s.length() * 2;
|
25
|
+
char buf[nbytes + 1];
|
26
|
+
|
27
|
+
nbytes = wcstombs(buf, s.data(), nbytes);
|
28
|
+
|
29
|
+
if((size_t) (-1) == nbytes)
|
30
|
+
rb_raise(rb_eArgError, "wide-char sequence not representable in char array");
|
31
|
+
else
|
32
|
+
// This should actually always be there, just to make sure.
|
33
|
+
buf[nbytes] = '\0';
|
34
|
+
|
35
|
+
return rb_locale_str_new_cstr(buf);
|
19
36
|
}
|
@@ -4,7 +4,7 @@
|
|
4
4
|
#include <ruby.h>
|
5
5
|
#include "MediaInfoDLL.h"
|
6
6
|
|
7
|
-
MediaInfoDLL::String
|
8
|
-
VALUE
|
7
|
+
MediaInfoDLL::String value_to_mediainfo_string(VALUE s);
|
8
|
+
VALUE mediainfo_string_to_value(MediaInfoDLL::String s);
|
9
9
|
|
10
10
|
#endif /* MEDIAINFO_NATIVE_UNICODE_H */
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediainfo-native
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- FlavourSys Technology GmbH
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -91,3 +91,4 @@ signing_key:
|
|
91
91
|
specification_version: 4
|
92
92
|
summary: Native bindings for mediainfo
|
93
93
|
test_files: []
|
94
|
+
has_rdoc:
|