mirror of
https://github.com/talgo-cloud/talgo-libwebp.git
synced 2026-03-07 13:38:17 -08:00
Fix animation timing
The timing of the final animation frame wasn't being recorded correctly.
This commit is contained in:
parent
1c4bc9fe39
commit
7430f2cbfa
1 changed files with 8 additions and 7 deletions
|
|
@ -21,15 +21,15 @@ import "C"
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
"image"
|
||||
"time"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// AnimationEncoder encodes multiple images into an animated WebP.
|
||||
type AnimationEncoder struct {
|
||||
opts C.WebPAnimEncoderOptions
|
||||
c *C.WebPAnimEncoder
|
||||
opts C.WebPAnimEncoderOptions
|
||||
c *C.WebPAnimEncoder
|
||||
duration time.Duration
|
||||
}
|
||||
|
||||
|
|
@ -82,7 +82,9 @@ func (ae *AnimationEncoder) AddFrame(img image.Image, duration time.Duration) er
|
|||
return errors.New("unsupported image type")
|
||||
}
|
||||
|
||||
timestamp := C.int((duration + ae.duration) / time.Millisecond)
|
||||
timestamp := C.int(ae.duration / time.Millisecond)
|
||||
ae.duration += duration
|
||||
|
||||
if C.WebPAnimEncoderAdd(ae.c, pic, timestamp, nil) == 0 {
|
||||
return fmt.Errorf(
|
||||
"Encoding error: %d - %s",
|
||||
|
|
@ -91,14 +93,13 @@ func (ae *AnimationEncoder) AddFrame(img image.Image, duration time.Duration) er
|
|||
)
|
||||
}
|
||||
|
||||
ae.duration += duration
|
||||
return nil
|
||||
}
|
||||
|
||||
// Assemble assembles all frames into animated WebP.
|
||||
func (ae *AnimationEncoder) Assemble() ([]byte, error) {
|
||||
// add final empty frame
|
||||
if C.WebPAnimEncoderAdd(ae.c, nil, C.int(ae.duration / time.Millisecond), nil) == 0 {
|
||||
if C.WebPAnimEncoderAdd(ae.c, nil, C.int(ae.duration/time.Millisecond), nil) == 0 {
|
||||
return nil, errors.New("Couldn't add final empty frame")
|
||||
}
|
||||
|
||||
|
|
@ -118,4 +119,4 @@ func (ae *AnimationEncoder) Assemble() ([]byte, error) {
|
|||
// Close deletes the encoder and frees resources.
|
||||
func (ae *AnimationEncoder) Close() {
|
||||
C.WebPAnimEncoderDelete(ae.c)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue