| | |
| | | } |
| | | return nil, int(width), int(height) |
| | | } |
| | | |
| | | // Decode2 decode jpeg file |
| | | // return val: -1 open error; -2, find stream error; -3, converter create error |
| | | func Decode2(input string, gb bool) (unsafe.Pointer, []byte, int, int) { |
| | | in := C.CString(input) |
| | | defer C.free(unsafe.Pointer(in)) |
| | | |
| | | withGB := 0 |
| | | if gb { |
| | | withGB = 1 |
| | | } |
| | | |
| | | var width C.int |
| | | var height C.int |
| | | p := C.wrap_fn_decode(unsafe.Pointer(libcffmpeg), in, C.int(withGB), &width, &height) |
| | | |
| | | if width > 0 && height > 0 { |
| | | wid := int(width) |
| | | hei := int(height) |
| | | const maxLen = 0x7fffffff |
| | | size := int(width * height * 3) |
| | | data := (*[maxLen]byte)(unsafe.Pointer(p))[:size:size] |
| | | |
| | | return p, data, wid, hei |
| | | } |
| | | return nil, nil, 0, 0 |
| | | } |