summaryrefslogtreecommitdiffstats
path: root/cmds
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2009-09-11 07:47:55 -0700
committerAndreas Huber <andih@google.com>2009-09-11 07:49:50 -0700
commit777893a928680f09e306b4b9efc1d5cf4479a9da (patch)
tree0a84c104682b3b4c5c61c45615a595c6d79f8120 /cmds
parent11c043f1f7e2f9c55ad8dec851f7ad3c303d83d1 (diff)
downloadframeworks_av-777893a928680f09e306b4b9efc1d5cf4479a9da.zip
frameworks_av-777893a928680f09e306b4b9efc1d5cf4479a9da.tar.gz
frameworks_av-777893a928680f09e306b4b9efc1d5cf4479a9da.tar.bz2
Move JPEGSource.{cpp,h} into libstagefright.
Diffstat (limited to 'cmds')
-rw-r--r--cmds/stagefright/Android.mk1
-rw-r--r--cmds/stagefright/JPEGSource.cpp234
-rw-r--r--cmds/stagefright/JPEGSource.h59
-rw-r--r--cmds/stagefright/stagefright.cpp3
4 files changed, 1 insertions, 296 deletions
diff --git a/cmds/stagefright/Android.mk b/cmds/stagefright/Android.mk
index 51a0649..4550d1a 100644
--- a/cmds/stagefright/Android.mk
+++ b/cmds/stagefright/Android.mk
@@ -3,7 +3,6 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
- JPEGSource.cpp \
stagefright.cpp
LOCAL_SHARED_LIBRARIES := \
diff --git a/cmds/stagefright/JPEGSource.cpp b/cmds/stagefright/JPEGSource.cpp
deleted file mode 100644
index 25c772f..0000000
--- a/cmds/stagefright/JPEGSource.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// #define LOG_NDEBUG 0
-#define LOG_TAG "JPEGSource"
-#include <utils/Log.h>
-
-#include "JPEGSource.h"
-
-#include <media/stagefright/DataSource.h>
-#include <media/stagefright/MediaBufferGroup.h>
-#include <media/stagefright/MediaDebug.h>
-#include <media/stagefright/MediaDefs.h>
-#include <media/stagefright/MediaErrors.h>
-#include <media/stagefright/MetaData.h>
-
-#define JPEG_SOF0 0xC0 /* nStart Of Frame N*/
-#define JPEG_SOF1 0xC1 /* N indicates which compression process*/
-#define JPEG_SOF2 0xC2 /* Only SOF0-SOF2 are now in common use*/
-#define JPEG_SOF3 0xC3
-#define JPEG_SOF5 0xC5 /* NB: codes C4 and CC are NOT SOF markers*/
-#define JPEG_SOF6 0xC6
-#define JPEG_SOF7 0xC7
-#define JPEG_SOF9 0xC9
-#define JPEG_SOF10 0xCA
-#define JPEG_SOF11 0xCB
-#define JPEG_SOF13 0xCD
-#define JPEG_SOF14 0xCE
-#define JPEG_SOF15 0xCF
-#define JPEG_SOI 0xD8 /* nStart Of Image (beginning of datastream)*/
-#define JPEG_EOI 0xD9 /* End Of Image (end of datastream)*/
-#define JPEG_SOS 0xDA /* nStart Of Scan (begins compressed data)*/
-#define JPEG_JFIF 0xE0 /* Jfif marker*/
-#define JPEG_EXIF 0xE1 /* Exif marker*/
-#define JPEG_COM 0xFE /* COMment */
-#define JPEG_DQT 0xDB
-#define JPEG_DHT 0xC4
-#define JPEG_DRI 0xDD
-
-namespace android {
-
-JPEGSource::JPEGSource(const sp<DataSource> &source)
- : mSource(source),
- mGroup(NULL),
- mStarted(false),
- mSize(0),
- mWidth(0),
- mHeight(0),
- mOffset(0) {
- CHECK_EQ(parseJPEG(), OK);
- CHECK(mSource->getSize(&mSize) == OK);
-}
-
-JPEGSource::~JPEGSource() {
- if (mStarted) {
- stop();
- }
-}
-
-status_t JPEGSource::start(MetaData *) {
- if (mStarted) {
- return UNKNOWN_ERROR;
- }
-
- mGroup = new MediaBufferGroup;
- mGroup->add_buffer(new MediaBuffer(mSize));
-
- mOffset = 0;
-
- mStarted = true;
-
- return OK;
-}
-
-status_t JPEGSource::stop() {
- if (!mStarted) {
- return UNKNOWN_ERROR;
- }
-
- delete mGroup;
- mGroup = NULL;
-
- mStarted = false;
-
- return OK;
-}
-
-sp<MetaData> JPEGSource::getFormat() {
- sp<MetaData> meta = new MetaData;
- meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_IMAGE_JPEG);
- meta->setInt32(kKeyWidth, mWidth);
- meta->setInt32(kKeyHeight, mHeight);
- meta->setInt32(kKeyMaxInputSize, mSize);
-
- return meta;
-}
-
-status_t JPEGSource::read(
- MediaBuffer **out, const ReadOptions *options) {
- *out = NULL;
-
- int64_t seekTimeUs;
- if (options != NULL && options->getSeekTo(&seekTimeUs)) {
- return UNKNOWN_ERROR;
- }
-
- MediaBuffer *buffer;
- mGroup->acquire_buffer(&buffer);
-
- ssize_t n = mSource->read_at(mOffset, buffer->data(), mSize - mOffset);
-
- if (n <= 0) {
- buffer->release();
- buffer = NULL;
-
- return UNKNOWN_ERROR;
- }
-
- buffer->set_range(0, n);
-
- mOffset += n;
-
- *out = buffer;
-
- return OK;
-}
-
-status_t JPEGSource::parseJPEG() {
- mWidth = 0;
- mHeight = 0;
-
- off_t i = 0;
-
- uint16_t soi;
- if (!mSource->getUInt16(i, &soi)) {
- return ERROR_IO;
- }
-
- i += 2;
-
- if (soi != 0xffd8) {
- return UNKNOWN_ERROR;
- }
-
- for (;;) {
- uint8_t marker;
- if (mSource->read_at(i++, &marker, 1) != 1) {
- return ERROR_IO;
- }
-
- CHECK_EQ(marker, 0xff);
-
- if (mSource->read_at(i++, &marker, 1) != 1) {
- return ERROR_IO;
- }
-
- CHECK(marker != 0xff);
-
- uint16_t chunkSize;
- if (!mSource->getUInt16(i, &chunkSize)) {
- return ERROR_IO;
- }
-
- i += 2;
-
- if (chunkSize < 2) {
- return UNKNOWN_ERROR;
- }
-
- switch (marker) {
- case JPEG_SOS:
- {
- return (mWidth > 0 && mHeight > 0) ? OK : UNKNOWN_ERROR;
- }
-
- case JPEG_EOI:
- {
- return UNKNOWN_ERROR;
- }
-
- case JPEG_SOF0:
- case JPEG_SOF1:
- case JPEG_SOF3:
- case JPEG_SOF5:
- case JPEG_SOF6:
- case JPEG_SOF7:
- case JPEG_SOF9:
- case JPEG_SOF10:
- case JPEG_SOF11:
- case JPEG_SOF13:
- case JPEG_SOF14:
- case JPEG_SOF15:
- {
- uint16_t width, height;
- if (!mSource->getUInt16(i + 1, &height)
- || !mSource->getUInt16(i + 3, &width)) {
- return ERROR_IO;
- }
-
- mWidth = width;
- mHeight = height;
-
- i += chunkSize - 2;
- break;
- }
-
- default:
- {
- // Skip chunk
-
- i += chunkSize - 2;
-
- break;
- }
- }
- }
-
- return OK;
-}
-
-} // namespace android
diff --git a/cmds/stagefright/JPEGSource.h b/cmds/stagefright/JPEGSource.h
deleted file mode 100644
index 051c034..0000000
--- a/cmds/stagefright/JPEGSource.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef JPEG_SOURCE_H_
-
-#define JPEG_SOURCE_H_
-
-#include <media/stagefright/MediaSource.h>
-
-namespace android {
-
-class DataSource;
-class MediaBufferGroup;
-
-struct JPEGSource : public MediaSource {
- // Assumes ownership of "source".
- JPEGSource(const sp<DataSource> &source);
-
- virtual status_t start(MetaData *params = NULL);
- virtual status_t stop();
- virtual sp<MetaData> getFormat();
-
- virtual status_t read(
- MediaBuffer **buffer, const ReadOptions *options = NULL);
-
-protected:
- virtual ~JPEGSource();
-
-private:
- sp<DataSource> mSource;
- MediaBufferGroup *mGroup;
- bool mStarted;
- off_t mSize;
- int32_t mWidth, mHeight;
- off_t mOffset;
-
- status_t parseJPEG();
-
- JPEGSource(const JPEGSource &);
- JPEGSource &operator=(const JPEGSource &);
-};
-
-} // namespace android
-
-#endif // JPEG_SOURCE_H_
-
diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp
index d1926b4..73215d3 100644
--- a/cmds/stagefright/stagefright.cpp
+++ b/cmds/stagefright/stagefright.cpp
@@ -25,6 +25,7 @@
#include <media/IMediaPlayerService.h>
#include <media/stagefright/CachingDataSource.h>
#include <media/stagefright/HTTPDataSource.h>
+#include <media/stagefright/JPEGSource.h>
#include <media/stagefright/MediaDebug.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaPlayerImpl.h>
@@ -35,8 +36,6 @@
#include <media/stagefright/OMXClient.h>
#include <media/stagefright/OMXCodec.h>
-#include "JPEGSource.h"
-
using namespace android;
static long gNumRepetitions;