支持了实际类型显示,优化dbopen
This commit is contained in:
@@ -15,8 +15,8 @@ func TestGetBDVersion(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestBD(t *testing.T) {
|
func TestBD(t *testing.T) {
|
||||||
db := BDOpen("path")
|
db, err := BDOpen("path")
|
||||||
if db == nil {
|
if err != nil {
|
||||||
t.Errorf("Expected non-nil DBStruct, got nil")
|
t.Errorf("Expected non-nil DBStruct, got nil")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
54
libbluray.go
54
libbluray.go
@@ -8,6 +8,7 @@ package bluray
|
|||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
@@ -24,11 +25,15 @@ type DBStruct struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// BDOpen 打开蓝光光盘
|
// BDOpen 打开蓝光光盘
|
||||||
func BDOpen(path string) *DBStruct {
|
func BDOpen(path string) (*DBStruct, error) {
|
||||||
|
// 检查文件路径是否存在文件或者文件夹
|
||||||
|
if _, err := os.Stat(path); err != nil {
|
||||||
|
return nil, fmt.Errorf("file not found: %v", err)
|
||||||
|
}
|
||||||
cPath := C.CString(path)
|
cPath := C.CString(path)
|
||||||
defer C.free(unsafe.Pointer(cPath))
|
defer C.free(unsafe.Pointer(cPath))
|
||||||
|
|
||||||
return &DBStruct{bd: C.bd_open(cPath, nil)}
|
return &DBStruct{bd: C.bd_open(cPath, nil)}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDiscInfo 获取蓝光光盘信息
|
// GetDiscInfo 获取蓝光光盘信息
|
||||||
@@ -174,7 +179,7 @@ func (d *DBStruct) GetTitleInfo(titleIdx uint32, angle uint) (*BlurayTitleInfo,
|
|||||||
|
|
||||||
clipInfo := BlurayClipInfo{
|
clipInfo := BlurayClipInfo{
|
||||||
PktCount: uint32(cClip.pkt_count),
|
PktCount: uint32(cClip.pkt_count),
|
||||||
StillMode: uint8(cClip.still_mode),
|
StillMode: getStillModeString(cClip.still_mode),
|
||||||
StillTime: uint16(cClip.still_time),
|
StillTime: uint16(cClip.still_time),
|
||||||
VideoStreamCount: uint8(cClip.video_stream_count),
|
VideoStreamCount: uint8(cClip.video_stream_count),
|
||||||
AudioStreamCount: uint8(cClip.audio_stream_count),
|
AudioStreamCount: uint8(cClip.audio_stream_count),
|
||||||
@@ -196,12 +201,12 @@ func (d *DBStruct) GetTitleInfo(titleIdx uint32, angle uint) (*BlurayTitleInfo,
|
|||||||
cStream := cVideoStreams[j]
|
cStream := cVideoStreams[j]
|
||||||
lang := getLanguageCode(cStream.lang)
|
lang := getLanguageCode(cStream.lang)
|
||||||
streamInfo := BlurayStreamInfo{
|
streamInfo := BlurayStreamInfo{
|
||||||
CodingType: uint8(cStream.coding_type),
|
CodingType: getCodingString(cStream.coding_type),
|
||||||
Format: uint8(cStream.format),
|
Format: getVideoFormatString(cStream.format),
|
||||||
Rate: uint8(cStream.rate),
|
Rate: getVideoRateString(cStream.rate),
|
||||||
CharCode: uint8(cStream.char_code),
|
CharCode: uint8(cStream.char_code),
|
||||||
Pid: uint16(cStream.pid),
|
Pid: uint16(cStream.pid),
|
||||||
Aspect: uint8(cStream.aspect),
|
Aspect: getAspectRatioString(cStream.aspect),
|
||||||
SubpathId: uint8(cStream.subpath_id),
|
SubpathId: uint8(cStream.subpath_id),
|
||||||
Lang: lang,
|
Lang: lang,
|
||||||
}
|
}
|
||||||
@@ -217,12 +222,11 @@ func (d *DBStruct) GetTitleInfo(titleIdx uint32, angle uint) (*BlurayTitleInfo,
|
|||||||
cStream := cAudioStreams[j]
|
cStream := cAudioStreams[j]
|
||||||
lang := getLanguageCode(cStream.lang)
|
lang := getLanguageCode(cStream.lang)
|
||||||
streamInfo := BlurayStreamInfo{
|
streamInfo := BlurayStreamInfo{
|
||||||
CodingType: uint8(cStream.coding_type),
|
CodingType: getCodingString(cStream.coding_type),
|
||||||
Format: uint8(cStream.format),
|
Format: getAudioFormatString(cStream.format),
|
||||||
Rate: uint8(cStream.rate),
|
Rate: getAudioRateString(cStream.rate),
|
||||||
CharCode: uint8(cStream.char_code),
|
CharCode: uint8(cStream.char_code),
|
||||||
Pid: uint16(cStream.pid),
|
Pid: uint16(cStream.pid),
|
||||||
Aspect: uint8(cStream.aspect),
|
|
||||||
SubpathId: uint8(cStream.subpath_id),
|
SubpathId: uint8(cStream.subpath_id),
|
||||||
Lang: lang,
|
Lang: lang,
|
||||||
}
|
}
|
||||||
@@ -237,12 +241,8 @@ func (d *DBStruct) GetTitleInfo(titleIdx uint32, angle uint) (*BlurayTitleInfo,
|
|||||||
for j := 0; j < int(cClip.pg_stream_count); j++ {
|
for j := 0; j < int(cClip.pg_stream_count); j++ {
|
||||||
cStream := cPgStreams[j]
|
cStream := cPgStreams[j]
|
||||||
streamInfo := BlurayStreamInfo{
|
streamInfo := BlurayStreamInfo{
|
||||||
CodingType: uint8(cStream.coding_type),
|
CodingType: getCodingString(cStream.coding_type),
|
||||||
Format: uint8(cStream.format),
|
|
||||||
Rate: uint8(cStream.rate),
|
|
||||||
CharCode: uint8(cStream.char_code),
|
|
||||||
Pid: uint16(cStream.pid),
|
Pid: uint16(cStream.pid),
|
||||||
Aspect: uint8(cStream.aspect),
|
|
||||||
SubpathId: uint8(cStream.subpath_id),
|
SubpathId: uint8(cStream.subpath_id),
|
||||||
Lang: C.GoStringN((*C.char)(unsafe.Pointer(&cStream.lang[0])), 3),
|
Lang: C.GoStringN((*C.char)(unsafe.Pointer(&cStream.lang[0])), 3),
|
||||||
}
|
}
|
||||||
@@ -257,12 +257,8 @@ func (d *DBStruct) GetTitleInfo(titleIdx uint32, angle uint) (*BlurayTitleInfo,
|
|||||||
for j := 0; j < int(cClip.ig_stream_count); j++ {
|
for j := 0; j < int(cClip.ig_stream_count); j++ {
|
||||||
cStream := cIgStreams[j]
|
cStream := cIgStreams[j]
|
||||||
streamInfo := BlurayStreamInfo{
|
streamInfo := BlurayStreamInfo{
|
||||||
CodingType: uint8(cStream.coding_type),
|
CodingType: getCodingString(cStream.coding_type),
|
||||||
Format: uint8(cStream.format),
|
|
||||||
Rate: uint8(cStream.rate),
|
|
||||||
CharCode: uint8(cStream.char_code),
|
|
||||||
Pid: uint16(cStream.pid),
|
Pid: uint16(cStream.pid),
|
||||||
Aspect: uint8(cStream.aspect),
|
|
||||||
SubpathId: uint8(cStream.subpath_id),
|
SubpathId: uint8(cStream.subpath_id),
|
||||||
Lang: C.GoStringN((*C.char)(unsafe.Pointer(&cStream.lang[0])), 3),
|
Lang: C.GoStringN((*C.char)(unsafe.Pointer(&cStream.lang[0])), 3),
|
||||||
}
|
}
|
||||||
@@ -277,12 +273,10 @@ func (d *DBStruct) GetTitleInfo(titleIdx uint32, angle uint) (*BlurayTitleInfo,
|
|||||||
for j := 0; j < int(cClip.sec_audio_stream_count); j++ {
|
for j := 0; j < int(cClip.sec_audio_stream_count); j++ {
|
||||||
cStream := cSecAudioStreams[j]
|
cStream := cSecAudioStreams[j]
|
||||||
streamInfo := BlurayStreamInfo{
|
streamInfo := BlurayStreamInfo{
|
||||||
CodingType: uint8(cStream.coding_type),
|
CodingType: getCodingString(cStream.coding_type),
|
||||||
Format: uint8(cStream.format),
|
Format: getAudioFormatString(cStream.format),
|
||||||
Rate: uint8(cStream.rate),
|
Rate: getAudioRateString(cStream.rate),
|
||||||
CharCode: uint8(cStream.char_code),
|
|
||||||
Pid: uint16(cStream.pid),
|
Pid: uint16(cStream.pid),
|
||||||
Aspect: uint8(cStream.aspect),
|
|
||||||
SubpathId: uint8(cStream.subpath_id),
|
SubpathId: uint8(cStream.subpath_id),
|
||||||
Lang: C.GoStringN((*C.char)(unsafe.Pointer(&cStream.lang[0])), 3),
|
Lang: C.GoStringN((*C.char)(unsafe.Pointer(&cStream.lang[0])), 3),
|
||||||
}
|
}
|
||||||
@@ -297,12 +291,12 @@ func (d *DBStruct) GetTitleInfo(titleIdx uint32, angle uint) (*BlurayTitleInfo,
|
|||||||
for j := 0; j < int(cClip.sec_video_stream_count); j++ {
|
for j := 0; j < int(cClip.sec_video_stream_count); j++ {
|
||||||
cStream := cSecVideoStreams[j]
|
cStream := cSecVideoStreams[j]
|
||||||
streamInfo := BlurayStreamInfo{
|
streamInfo := BlurayStreamInfo{
|
||||||
CodingType: uint8(cStream.coding_type),
|
CodingType: getCodingString(cStream.coding_type),
|
||||||
Format: uint8(cStream.format),
|
Format: getVideoFormatString(cStream.format),
|
||||||
Rate: uint8(cStream.rate),
|
Rate: getVideoRateString(cStream.rate),
|
||||||
CharCode: uint8(cStream.char_code),
|
CharCode: uint8(cStream.char_code),
|
||||||
Pid: uint16(cStream.pid),
|
Pid: uint16(cStream.pid),
|
||||||
Aspect: uint8(cStream.aspect),
|
Aspect: getAspectRatioString(cStream.aspect),
|
||||||
SubpathId: uint8(cStream.subpath_id),
|
SubpathId: uint8(cStream.subpath_id),
|
||||||
Lang: C.GoStringN((*C.char)(unsafe.Pointer(&cStream.lang[0])), 3),
|
Lang: C.GoStringN((*C.char)(unsafe.Pointer(&cStream.lang[0])), 3),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,19 +76,19 @@ type BlurayMetaFile struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type BlurayStreamInfo struct {
|
type BlurayStreamInfo struct {
|
||||||
CodingType uint8
|
CodingType string
|
||||||
Format uint8
|
Format string
|
||||||
Rate uint8
|
Rate string
|
||||||
CharCode uint8
|
CharCode uint8
|
||||||
Lang string
|
Lang string
|
||||||
Pid uint16
|
Pid uint16
|
||||||
Aspect uint8
|
Aspect string
|
||||||
SubpathId uint8
|
SubpathId uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
type BlurayClipInfo struct {
|
type BlurayClipInfo struct {
|
||||||
PktCount uint32
|
PktCount uint32
|
||||||
StillMode uint8
|
StillMode string
|
||||||
StillTime uint16
|
StillTime uint16
|
||||||
VideoStreamCount uint8
|
VideoStreamCount uint8
|
||||||
AudioStreamCount uint8
|
AudioStreamCount uint8
|
||||||
|
|||||||
221
tools.go
221
tools.go
@@ -1,6 +1,9 @@
|
|||||||
package bluray
|
package bluray
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
#cgo pkg-config: libbluray
|
||||||
|
#include <libbluray/bluray.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
@@ -27,3 +30,221 @@ func getLanguageCode(langField [4]C.uint8_t) string {
|
|||||||
}
|
}
|
||||||
return C.GoStringN((*C.char)(unsafe.Pointer(&langField[0])), 3)
|
return C.GoStringN((*C.char)(unsafe.Pointer(&langField[0])), 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getCodingStrings 获取编码类型
|
||||||
|
// 输出: 编码类型, AUDIO/VIDEO/SUB
|
||||||
|
func getCodingStrings(codingField C.uint8_t) (string, string) {
|
||||||
|
switch codingField {
|
||||||
|
case C.BLURAY_STREAM_TYPE_VIDEO_MPEG1:
|
||||||
|
return "MPEG1", "VIDEO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_VIDEO_MPEG2:
|
||||||
|
return "MPEG2", "VIDEO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_MPEG1:
|
||||||
|
return "MPEG1", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_MPEG2:
|
||||||
|
return "MPEG2", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_LPCM:
|
||||||
|
return "LPCM", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_AC3:
|
||||||
|
return "AC3", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_DTS:
|
||||||
|
return "DTS", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_TRUHD:
|
||||||
|
return "TrueHD", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_AC3PLUS:
|
||||||
|
return "AC3+", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_DTSHD:
|
||||||
|
return "DTS-HD", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_DTSHD_MASTER:
|
||||||
|
return "DTS-HD Master", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_VIDEO_VC1:
|
||||||
|
return "VC1", "VIDEO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_VIDEO_H264:
|
||||||
|
return "H264", "VIDEO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_VIDEO_HEVC:
|
||||||
|
return "HEVC", "VIDEO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_SUB_PG:
|
||||||
|
return "PG", "SUB"
|
||||||
|
case C.BLURAY_STREAM_TYPE_SUB_IG:
|
||||||
|
return "IG", "SUB"
|
||||||
|
case C.BLURAY_STREAM_TYPE_SUB_TEXT:
|
||||||
|
return "TEXT", "SUB"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_AC3PLUS_SECONDARY:
|
||||||
|
return "AC3+ Secondary", "AUDIO"
|
||||||
|
case C.BLURAY_STREAM_TYPE_AUDIO_DTSHD_SECONDARY:
|
||||||
|
return "DTS-HD Secondary", "AUDIO"
|
||||||
|
default:
|
||||||
|
return "UNKNOWN", "UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getCodingString 获取编码类型
|
||||||
|
// 输出: 编码类型
|
||||||
|
func getCodingString(codingField C.uint8_t) string {
|
||||||
|
coding, _ := getCodingStrings(codingField)
|
||||||
|
return coding
|
||||||
|
}
|
||||||
|
|
||||||
|
// getVideoFormatString 获取视频格式
|
||||||
|
func getVideoFormatString(formatField C.uint8_t) string {
|
||||||
|
switch formatField {
|
||||||
|
case C.BLURAY_VIDEO_FORMAT_480I:
|
||||||
|
return "480i"
|
||||||
|
case C.BLURAY_VIDEO_FORMAT_576I:
|
||||||
|
return "576i"
|
||||||
|
case C.BLURAY_VIDEO_FORMAT_480P:
|
||||||
|
return "480p"
|
||||||
|
case C.BLURAY_VIDEO_FORMAT_1080I:
|
||||||
|
return "1080i"
|
||||||
|
case C.BLURAY_VIDEO_FORMAT_720P:
|
||||||
|
return "720p"
|
||||||
|
case C.BLURAY_VIDEO_FORMAT_1080P:
|
||||||
|
return "1080p"
|
||||||
|
case C.BLURAY_VIDEO_FORMAT_576P:
|
||||||
|
return "576p"
|
||||||
|
case C.BLURAY_VIDEO_FORMAT_2160P:
|
||||||
|
return "2160p"
|
||||||
|
default:
|
||||||
|
return "UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getAudioFormatString 获取音频格式
|
||||||
|
func getAudioFormatString(formatField C.uint8_t) string {
|
||||||
|
switch formatField {
|
||||||
|
case C.BLURAY_AUDIO_FORMAT_MONO:
|
||||||
|
return "Mono"
|
||||||
|
case C.BLURAY_AUDIO_FORMAT_STEREO:
|
||||||
|
return "Stereo"
|
||||||
|
case C.BLURAY_AUDIO_FORMAT_MULTI_CHAN:
|
||||||
|
return "Multi-channel"
|
||||||
|
case C.BLURAY_AUDIO_FORMAT_COMBO:
|
||||||
|
return "Combo" // Stereo ac3/dts,
|
||||||
|
default:
|
||||||
|
return "UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getAudioRateString 获取视频帧率
|
||||||
|
func getVideoRateString(rateField C.uint8_t) string {
|
||||||
|
switch rateField {
|
||||||
|
case C.BLURAY_VIDEO_RATE_24000_1001:
|
||||||
|
return "23.976 Hz"
|
||||||
|
case C.BLURAY_VIDEO_RATE_24:
|
||||||
|
return "24 Hz"
|
||||||
|
case C.BLURAY_VIDEO_RATE_25:
|
||||||
|
return "25 Hz"
|
||||||
|
case C.BLURAY_VIDEO_RATE_30000_1001:
|
||||||
|
return "29.97 Hz"
|
||||||
|
case C.BLURAY_VIDEO_RATE_50:
|
||||||
|
return "50 Hz"
|
||||||
|
case C.BLURAY_VIDEO_RATE_60000_1001:
|
||||||
|
return "59.94 Hz"
|
||||||
|
default:
|
||||||
|
return "UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getVideoRateFloat 获取视频帧率(浮点数)
|
||||||
|
func getVideoRateFloat(rateField C.uint8_t) float64 {
|
||||||
|
switch rateField {
|
||||||
|
case C.BLURAY_VIDEO_RATE_24000_1001:
|
||||||
|
return 23.976
|
||||||
|
case C.BLURAY_VIDEO_RATE_24:
|
||||||
|
return 24
|
||||||
|
case C.BLURAY_VIDEO_RATE_25:
|
||||||
|
return 25
|
||||||
|
case C.BLURAY_VIDEO_RATE_30000_1001:
|
||||||
|
return 29.97
|
||||||
|
case C.BLURAY_VIDEO_RATE_50:
|
||||||
|
return 50
|
||||||
|
case C.BLURAY_VIDEO_RATE_60000_1001:
|
||||||
|
return 59.94
|
||||||
|
default:
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getAudioRateString 获取音频采样率
|
||||||
|
func getAudioRateString(rateField C.uint8_t) string {
|
||||||
|
switch rateField {
|
||||||
|
case C.BLURAY_AUDIO_RATE_48:
|
||||||
|
return "48 kHz"
|
||||||
|
case C.BLURAY_AUDIO_RATE_96:
|
||||||
|
return "96 kHz"
|
||||||
|
case C.BLURAY_AUDIO_RATE_192:
|
||||||
|
return "192 kHz"
|
||||||
|
case C.BLURAY_AUDIO_RATE_192_COMBO:
|
||||||
|
return "192 kHz Combo"
|
||||||
|
case C.BLURAY_AUDIO_RATE_96_COMBO:
|
||||||
|
return "96 kHz Combo"
|
||||||
|
default:
|
||||||
|
return "UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getAudioRateFloat 获取音频采样率(浮点数)
|
||||||
|
func getAudioRateFloat(rateField C.uint8_t) int {
|
||||||
|
switch rateField {
|
||||||
|
case C.BLURAY_AUDIO_RATE_48:
|
||||||
|
return 48
|
||||||
|
case C.BLURAY_AUDIO_RATE_96:
|
||||||
|
return 96
|
||||||
|
case C.BLURAY_AUDIO_RATE_192:
|
||||||
|
return 192
|
||||||
|
case C.BLURAY_AUDIO_RATE_192_COMBO:
|
||||||
|
return 192
|
||||||
|
case C.BLURAY_AUDIO_RATE_96_COMBO:
|
||||||
|
return 96
|
||||||
|
default:
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getCharCodeString 获取字符编码
|
||||||
|
func getCharCodeString(charCode C.uint8_t) string {
|
||||||
|
switch charCode {
|
||||||
|
case C.BLURAY_TEXT_CHAR_CODE_UTF8:
|
||||||
|
return "UTF-8"
|
||||||
|
case C.BLURAY_TEXT_CHAR_CODE_UTF16BE:
|
||||||
|
return "UTF-16BE"
|
||||||
|
case C.BLURAY_TEXT_CHAR_CODE_SHIFT_JIS:
|
||||||
|
return "Shift-JIS"
|
||||||
|
case C.BLURAY_TEXT_CHAR_CODE_EUC_KR:
|
||||||
|
return "EUC-KR"
|
||||||
|
case C.BLURAY_TEXT_CHAR_CODE_GB18030_20001:
|
||||||
|
return "GB18030-2001"
|
||||||
|
case C.BLURAY_TEXT_CHAR_CODE_CN_GB:
|
||||||
|
return "CN-GB"
|
||||||
|
case C.BLURAY_TEXT_CHAR_CODE_BIG5:
|
||||||
|
return "BIG5"
|
||||||
|
default:
|
||||||
|
return "UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getAspectRatioString 获取视频宽高比
|
||||||
|
func getAspectRatioString(aspectField C.uint8_t) string {
|
||||||
|
switch aspectField {
|
||||||
|
case C.BLURAY_ASPECT_RATIO_4_3:
|
||||||
|
return "4:3"
|
||||||
|
case C.BLURAY_ASPECT_RATIO_16_9:
|
||||||
|
return "16:9"
|
||||||
|
default:
|
||||||
|
return "UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getStillModeString Clip still mode type
|
||||||
|
func getStillModeString(stillMode C.uint8_t) string {
|
||||||
|
switch stillMode {
|
||||||
|
case C.BLURAY_STILL_NONE:
|
||||||
|
return "None"
|
||||||
|
case C.BLURAY_STILL_TIME:
|
||||||
|
return "Time"
|
||||||
|
case C.BLURAY_STILL_INFINITE:
|
||||||
|
return "Infinite"
|
||||||
|
default:
|
||||||
|
return "UNKNOWN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user