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