1a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik/* 2a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * Copyright (C) 2013 The Android Open Source Project 3a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * 4a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * Licensed under the Apache License, Version 2.0 (the "License"); 5a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * you may not use this file except in compliance with the License. 6a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * You may obtain a copy of the License at 7a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * 8a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * http://www.apache.org/licenses/LICENSE-2.0 9a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * 10a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * Unless required by applicable law or agreed to in writing, software 11a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * distributed under the License is distributed on an "AS IS" BASIS, 12a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * See the License for the specific language governing permissions and 14a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik * limitations under the License. 15a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik */ 16a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik 17a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik#include "FrameSequence.h" 18a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik 19a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik#include "Registry.h" 20a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik 21a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris CraikFrameSequence* FrameSequence::create(Stream* stream) { 22a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik const RegistryEntry* entry = Registry::Find(stream); 23a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik 24a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik if (!entry) return NULL; 25a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik 26a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik FrameSequence* frameSequence = entry->createFrameSequence(stream); 27a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik if (!frameSequence->getFrameCount() || 28a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik !frameSequence->getWidth() || !frameSequence->getHeight()) { 29a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik // invalid contents, abort 30a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik delete frameSequence; 31a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik return NULL; 32a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik } 33a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik 34a3daacb24a430bc3fad7251ef962d7c7b6c47e55Chris Craik return frameSequence; 35a3ac0a2df64dcfb8b0b01f1cf05e9afd1439e1f4Chris Craik} 36