diff -r 000000000000 -r 6474c204b198 gfx/skia/trunk/src/images/SkImageDecoder_FactoryDefault.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/skia/trunk/src/images/SkImageDecoder_FactoryDefault.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,36 @@ + +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkImageDecoder.h" +#include "SkMovie.h" +#include "SkStream.h" + +extern SkImageDecoder* image_decoder_from_stream(SkStreamRewindable*); + +SkImageDecoder* SkImageDecoder::Factory(SkStreamRewindable* stream) { + return image_decoder_from_stream(stream); +} + +///////////////////////////////////////////////////////////////////////// + +typedef SkTRegistry MovieReg; + +SkMovie* SkMovie::DecodeStream(SkStreamRewindable* stream) { + const MovieReg* curr = MovieReg::Head(); + while (curr) { + SkMovie* movie = curr->factory()(stream); + if (movie) { + return movie; + } + // we must rewind only if we got NULL, since we gave the stream to the + // movie, who may have already started reading from it + stream->rewind(); + curr = curr->next(); + } + return NULL; +}