Lines Matching defs:frame
112 // Get the first frame and its "features" to determine the color and alpha types.
113 WebPIterator frame;
114 SkAutoTCallVProc<WebPIterator, WebPDemuxReleaseIterator> autoFrame(&frame);
115 if (!WebPDemuxGetFrame(demux, 1, &frame)) {
121 switch (WebPGetFeatures(frame.fragment.bytes, frame.fragment.size, &features)) {
133 const bool hasAlpha = SkToBool(frame.has_alpha)
134 || frame.width != width || frame.height != height;
261 Frame* frame = fFrameHolder.appendNewFrame(iter.has_alpha);
262 frame->setXYWH(iter.x_offset, iter.y_offset, iter.width, iter.height);
263 frame->setDisposalMethod(iter.dispose_method == WEBP_MUX_DISPOSE_BACKGROUND ?
266 frame->setDuration(iter.duration);
268 frame->setBlend(SkCodecAnimation::Blend::kSrc);
270 fFrameHolder.setAlphaAndRequiredFrame(frame);
278 return static_cast<const SkFrame*>(this->frame(i));
281 const SkWebpCodec::Frame* SkWebpCodec::FrameHolder::frame(int i) const {
291 const Frame* frame = fFrameHolder.frame(i);
292 if (!frame) {
299 frame->fillIn(frameInfo, true);
362 WebPIterator frame;
363 SkAutoTCallVProc<WebPIterator, WebPDemuxReleaseIterator> autoFrame(&frame);
365 SkAssertResult(WebPDemuxGetFrame(fDemux, index + 1, &frame));
368 (fFrameHolder.frame(index)->getRequiredFrame() == kNoFrame);
371 auto frameRect = SkIRect::MakeXYWH(frame.x_offset, frame.y_offset, frame.width, frame.height);
400 // guarantees that the frame x and y offset are even (it's actually impossible to specify
401 // an odd frame offset). So we can still guarantee that the adjusted offsets are even.
416 // Ignore the frame size and offset when determining if scaling is necessary.
445 const bool blendWithPrevFrame = !independent && frame.blend_method == WEBP_MUX_BLEND
446 && frame.has_alpha;
449 if (!frame.has_alpha) {
490 switch (WebPIUpdate(idec, frame.fragment.bytes, frame.fragment.size)) {
529 dstInfo.alphaType(), frame.has_alpha, scaledWidth);
541 dstInfo.alphaType(), frame.has_alpha, scaledWidth);