mirror of
https://github.com/webmproject/libwebp.git
synced 2025-02-13 07:22:52 +01:00
AnimEncoder API: Fix for kmax=1 and default kmin case.
Some frames that were previously selected as key-frames were incorrectly being reset to sub-frames. Change-Id: Iee342dbb9a9aec144b8185c3b54ca56aa7038bfb
This commit is contained in:
parent
022d2f886c
commit
c6b24543fc
@ -975,6 +975,8 @@ static int CacheFrame(WebPAnimEncoder* const enc, int duration,
|
|||||||
if (enc->count_since_key_frame_ == enc->options_.kmax) {
|
if (enc->count_since_key_frame_ == enc->options_.kmax) {
|
||||||
enc->flush_count_ = enc->count_ - 1;
|
enc->flush_count_ = enc->count_ - 1;
|
||||||
enc->count_since_key_frame_ = 0;
|
enc->count_since_key_frame_ = 0;
|
||||||
|
enc->keyframe_ = KEYFRAME_NONE;
|
||||||
|
enc->best_delta_ = DELTA_INFINITY;
|
||||||
}
|
}
|
||||||
enc->prev_candidate_undecided_ = 1;
|
enc->prev_candidate_undecided_ = 1;
|
||||||
}
|
}
|
||||||
@ -1001,20 +1003,10 @@ static int CacheFrame(WebPAnimEncoder* const enc, int duration,
|
|||||||
|
|
||||||
static int FlushFrames(WebPAnimEncoder* const enc) {
|
static int FlushFrames(WebPAnimEncoder* const enc) {
|
||||||
while (enc->flush_count_ > 0) {
|
while (enc->flush_count_ > 0) {
|
||||||
WebPMuxFrameInfo* info;
|
|
||||||
WebPMuxError err;
|
WebPMuxError err;
|
||||||
EncodedFrame* const curr = GetFrame(enc, 0);
|
EncodedFrame* const curr = GetFrame(enc, 0);
|
||||||
// Pick frame or full canvas.
|
const WebPMuxFrameInfo* const info =
|
||||||
if (curr->is_key_frame_) {
|
curr->is_key_frame_ ? &curr->key_frame_ : &curr->sub_frame_;
|
||||||
info = &curr->key_frame_;
|
|
||||||
if (enc->keyframe_ == 0) {
|
|
||||||
enc->keyframe_ = KEYFRAME_NONE;
|
|
||||||
enc->best_delta_ = DELTA_INFINITY;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
info = &curr->sub_frame_;
|
|
||||||
}
|
|
||||||
// Add to mux.
|
|
||||||
assert(enc->mux_ != NULL);
|
assert(enc->mux_ != NULL);
|
||||||
err = WebPMuxPushFrame(enc->mux_, info, 1);
|
err = WebPMuxPushFrame(enc->mux_, info, 1);
|
||||||
if (err != WEBP_MUX_OK) {
|
if (err != WEBP_MUX_OK) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user