diff --git a/mediainfo.go b/mediainfo.go index 86a810c..916a884 100644 --- a/mediainfo.go +++ b/mediainfo.go @@ -46,7 +46,9 @@ const ( ) func init() { - C.setlocale(C.LC_CTYPE, C.CString("")) + str := C.CString("") + defer C.free(unsafe.Pointer(str)) + C.setlocale(C.LC_CTYPE, str) C.MediaInfoDLL_Load() } @@ -69,6 +71,10 @@ func (file *File) Get(streamKind StreamKind, streamNumber int, parameter string, return C.GoString(C.Get(file.handle, C.MediaInfo_stream_C(streamKind), C.size_t(streamNumber), cParameter, C.MediaInfo_info_C(infoKind), C.MediaInfo_info_C(0))) } +func (file *File) GetI(streamKind StreamKind, streamNumber int, parameter int, infoKind InfoKind) string { + return C.GoString(C.GetI(file.handle, C.MediaInfo_stream_C(streamKind), C.size_t(streamNumber), C.size_t(parameter), C.MediaInfo_info_C(infoKind))) +} + func (file *File) Parameter(streamKind StreamKind, streamNumber int, parameter string) string { return file.Get(streamKind, streamNumber, parameter, InfoText) } diff --git a/mediainfo.h b/mediainfo.h index a98e046..f2560f9 100644 --- a/mediainfo.h +++ b/mediainfo.h @@ -50,6 +50,11 @@ const char *Get(void *handle, MediaInfo_stream_C streamKind, size_t StreamNumber return toChar(MediaInfo_Get(handle, streamKind, StreamNumber, toWchar(Parameter), KindOfInfo, KindOfSearch)); } +const char *GetI(void *handle, MediaInfo_stream_C streamKind, size_t StreamNumber, unsigned long Parameter, MediaInfo_info_C KindOfInfo) +{ + return toChar(MediaInfo_GetI(handle, streamKind, StreamNumber, Parameter, KindOfInfo)); +} + const char *Option(void *handle, char *Parameter, char *Value) { return toChar(MediaInfo_Option(handle, toWchar(Parameter), toWchar(Value))); diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..baa2e35 --- /dev/null +++ b/shell.nix @@ -0,0 +1,8 @@ +{pkgs ? import {}}: +pkgs.mkShell { + packages = with pkgs; [ + go + mediainfo + libmediainfo + ]; +}