123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /*
- * Copyright 2019 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "experimental/ffmpeg/SkVideoDecoder.h"
- #include "gm/gm.h"
- #include "include/core/SkCanvas.h"
- #include "include/core/SkStream.h"
- class VideoDecoderGM : public skiagm::GM {
- SkVideoDecoder fDecoder;
- public:
- VideoDecoderGM() {}
- protected:
- SkString onShortName() override {
- return SkString("videodecoder");
- }
- SkISize onISize() override {
- return SkISize::Make(1024, 768);
- }
- void onOnceBeforeDraw() override {
- if (!fDecoder.loadStream(SkStream::MakeFromFile("/skia/ice.mp4"))) {
- SkDebugf("could not load movie file\n");
- }
- SkDebugf("duration %g\n", fDecoder.duration());
- }
- void onDraw(SkCanvas* canvas) override {
- GrContext* gr = canvas->getGrContext();
- if (!gr) {
- return;
- }
- fDecoder.setGrContext(gr); // gr can change over time in viewer
- double timeStamp;
- auto img = fDecoder.nextImage(&timeStamp);
- if (!img) {
- (void)fDecoder.rewind();
- img = fDecoder.nextImage(&timeStamp);
- }
- if (img) {
- if (0) {
- SkDebugf("ts %g\n", timeStamp);
- }
- canvas->drawImage(img, 10, 10, nullptr);
- }
- }
- bool onAnimate(double nanos) override {
- return true;
- }
- private:
- typedef GM INHERITED;
- };
- DEF_GM( return new VideoDecoderGM; )
|