summaryrefslogtreecommitdiff
path: root/mkvlib/shared.go
diff options
context:
space:
mode:
authorb5f0d6c3 <[email protected]>2021-10-20 19:58:44 +0800
committerb5f0d6c3 <[email protected]>2021-10-20 19:58:44 +0800
commit9d9068cf4a6eb8d8b8f48005a9c6db0dea135c80 (patch)
tree0b5359438ae8745cf04e5c36a4f98174fa76e33e /mkvlib/shared.go
parent4c4bb91ece9ceb8841e45910c9ffa49cd64c9c22 (diff)
update mkvlib:add logcallback
Diffstat (limited to 'mkvlib/shared.go')
-rw-r--r--mkvlib/shared.go51
1 files changed, 41 insertions, 10 deletions
diff --git a/mkvlib/shared.go b/mkvlib/shared.go
index 5deaf68..397e667 100644
--- a/mkvlib/shared.go
+++ b/mkvlib/shared.go
@@ -1,6 +1,7 @@
package mkvlib
import (
+ "fmt"
"log"
"os"
"os/exec"
@@ -10,13 +11,27 @@ import (
)
const libName = "mkvlib"
-const libVer = "v1.0.4"
+const libVer = "v1.1.0"
const LibFName = libName + " " + libVer
-var _instance *mkvProcessor
+type logCallback func(string)
+
+type processorGetter struct {
+ checked bool
+ instance *mkvProcessor
+}
+
+var _instance = new(processorGetter)
+
+func GetProcessorGetterInstance() *processorGetter {
+ return _instance
+}
+
+func (self *processorGetter) InitProcessorInstance(lcb logCallback) bool {
+ self.checked = false
+ self.instance = nil
-func GetInstance() *mkvProcessor {
ec := 0
n := "PATH"
s := ":"
@@ -37,18 +52,34 @@ func GetInstance() *mkvProcessor {
_, _mkvextract := exec.LookPath(mkvextract)
_, _mkvmerge := exec.LookPath(mkvmerge)
if _ttx != nil || _pyftsubset != nil {
- log.Printf(`Missing dependency: fonttools (need "%s" & "%s").`, ttx, pyftsubset)
+ printLog(lcb, `Missing dependency: fonttools (need "%s" & "%s").`, ttx, pyftsubset)
ec++
}
if _mkvextract != nil || _mkvmerge != nil {
- log.Printf(`Missing dependency: mkvtoolnix (need "%s" & "%s").`, mkvextract, mkvmerge)
+ printLog(lcb, `Missing dependency: mkvtoolnix (need "%s" & "%s").`, mkvextract, mkvmerge)
ec++
}
- if ec > 0 {
- return nil
+
+ r := ec == 0
+ if r {
+ self.checked = true
+ self.instance = new(mkvProcessor)
}
- if _instance == nil {
- _instance = new(mkvProcessor)
+
+ return r
+}
+
+func (self *processorGetter) GetProcessorInstance() *mkvProcessor {
+ if self.checked {
+ return self.instance
+ }
+ return nil
+}
+
+func printLog(lcb logCallback, f string, v ...interface{}) {
+ if lcb != nil {
+ lcb(fmt.Sprintf(f, v...))
+ } else {
+ log.Printf(f, v...)
}
- return _instance
}