12d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber/* 22d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * Copyright (C) 2009 The Android Open Source Project 32d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * 42d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 52d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * you may not use this file except in compliance with the License. 62d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * You may obtain a copy of the License at 72d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * 82d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 92d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * 102d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * Unless required by applicable law or agreed to in writing, software 112d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 122d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * See the License for the specific language governing permissions and 142d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber * limitations under the License. 152d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber */ 162d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 172d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber#ifndef JPEG_SOURCE_H_ 182d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 192d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber#define JPEG_SOURCE_H_ 202d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 212d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber#include <media/stagefright/MediaSource.h> 222d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 232d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Hubernamespace android { 242d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 252d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huberclass DataSource; 262d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huberclass MediaBufferGroup; 272d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 282d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huberstruct JPEGSource : public MediaSource { 292d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber JPEGSource(const sp<DataSource> &source); 302d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 312d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber virtual status_t start(MetaData *params = NULL); 322d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber virtual status_t stop(); 332d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber virtual sp<MetaData> getFormat(); 342d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 352d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber virtual status_t read( 362d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber MediaBuffer **buffer, const ReadOptions *options = NULL); 372d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 382d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huberprotected: 392d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber virtual ~JPEGSource(); 402d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 412d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huberprivate: 422d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber sp<DataSource> mSource; 432d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber MediaBufferGroup *mGroup; 442d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber bool mStarted; 45c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong off64_t mSize; 462d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber int32_t mWidth, mHeight; 47c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong off64_t mOffset; 482d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 492d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber status_t parseJPEG(); 502d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 512d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber JPEGSource(const JPEGSource &); 522d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber JPEGSource &operator=(const JPEGSource &); 532d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber}; 542d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 552d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber} // namespace android 562d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 572d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber#endif // JPEG_SOURCE_H_ 582d7d46fb2d7f5f80afbf060f25ed049079fb0fc9Andreas Huber 59