summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-01-08 10:57:34 -0800
committerAndreas Huber <andih@google.com>2010-01-08 11:54:36 -0800
commit67e5a4f6f6879d512a859e5dba92e9beec7a2f91 (patch)
treedb31b16d1b6e0ec2074c76058da7a86c1ea2a9c6 /media/libmediaplayerservice
parent23d7a43fb32482e2573b7f203fd9dd5a8349b329 (diff)
downloadframeworks_av-67e5a4f6f6879d512a859e5dba92e9beec7a2f91.zip
frameworks_av-67e5a4f6f6879d512a859e5dba92e9beec7a2f91.tar.gz
frameworks_av-67e5a4f6f6879d512a859e5dba92e9beec7a2f91.tar.bz2
Reorganize some of the stagefright implementation related to metadata.
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r--media/libmediaplayerservice/Android.mk1
-rw-r--r--media/libmediaplayerservice/StagefrightMetadataRetriever.cpp197
-rw-r--r--media/libmediaplayerservice/StagefrightMetadataRetriever.h53
3 files changed, 0 insertions, 251 deletions
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk
index 5e59710..d51ab30 100644
--- a/media/libmediaplayerservice/Android.mk
+++ b/media/libmediaplayerservice/Android.mk
@@ -19,7 +19,6 @@ LOCAL_SRC_FILES:= \
ifeq ($(BUILD_WITH_FULL_STAGEFRIGHT),true)
LOCAL_SRC_FILES += \
- StagefrightMetadataRetriever.cpp \
StagefrightPlayer.cpp \
StagefrightRecorder.cpp
diff --git a/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp b/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp
deleted file mode 100644
index 42c1877..0000000
--- a/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
-**
-** Copyright 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 "StagefrightMetadataRetriever"
-#include <utils/Log.h>
-
-#include "StagefrightMetadataRetriever.h"
-
-#include <media/stagefright/CachingDataSource.h>
-#include <media/stagefright/ColorConverter.h>
-#include <media/stagefright/DataSource.h>
-#include <media/stagefright/FileSource.h>
-#include <media/stagefright/HTTPDataSource.h>
-#include <media/stagefright/MediaDebug.h>
-#include <media/stagefright/MediaExtractor.h>
-#include <media/stagefright/MetaData.h>
-#include <media/stagefright/OMXCodec.h>
-
-namespace android {
-
-StagefrightMetadataRetriever::StagefrightMetadataRetriever() {
- LOGV("StagefrightMetadataRetriever()");
-
- DataSource::RegisterDefaultSniffers();
- CHECK_EQ(mClient.connect(), OK);
-}
-
-StagefrightMetadataRetriever::~StagefrightMetadataRetriever() {
- LOGV("~StagefrightMetadataRetriever()");
- mClient.disconnect();
-}
-
-status_t StagefrightMetadataRetriever::setDataSource(const char *uri) {
- LOGV("setDataSource(%s)", uri);
-
- mExtractor = MediaExtractor::CreateFromURI(uri);
-
- return mExtractor.get() != NULL ? OK : UNKNOWN_ERROR;
-}
-
-status_t StagefrightMetadataRetriever::setDataSource(
- int fd, int64_t offset, int64_t length) {
- LOGV("setDataSource(%d, %lld, %lld)", fd, offset, length);
-
- mExtractor = MediaExtractor::Create(
- new FileSource(fd, offset, length));
-
- return OK;
-}
-
-VideoFrame *StagefrightMetadataRetriever::captureFrame() {
- LOGV("captureFrame");
-
- if (mExtractor.get() == NULL) {
- LOGV("no extractor.");
- return NULL;
- }
-
- size_t n = mExtractor->countTracks();
- size_t i;
- for (i = 0; i < n; ++i) {
- sp<MetaData> meta = mExtractor->getTrackMetaData(i);
-
- const char *mime;
- CHECK(meta->findCString(kKeyMIMEType, &mime));
-
- if (!strncasecmp(mime, "video/", 6)) {
- break;
- }
- }
-
- if (i == n) {
- LOGV("no video track found.");
- return NULL;
- }
-
- sp<MetaData> trackMeta = mExtractor->getTrackMetaData(
- i, MediaExtractor::kIncludeExtensiveMetaData);
-
- sp<MediaSource> source = mExtractor->getTrack(i);
-
- if (source.get() == NULL) {
- LOGV("unable to instantiate video track.");
- return NULL;
- }
-
- sp<MetaData> meta = source->getFormat();
-
- sp<MediaSource> decoder =
- OMXCodec::Create(
- mClient.interface(), meta, false, source,
- NULL, OMXCodec::kPreferSoftwareCodecs);
-
- if (decoder.get() == NULL) {
- LOGV("unable to instantiate video decoder.");
-
- return NULL;
- }
-
- decoder->start();
-
- // Read one output buffer, ignore format change notifications
- // and spurious empty buffers.
-
- MediaSource::ReadOptions options;
- int64_t thumbNailTime;
- if (trackMeta->findInt64(kKeyThumbnailTime, &thumbNailTime)) {
- options.setSeekTo(thumbNailTime);
- }
-
- MediaBuffer *buffer = NULL;
- status_t err;
- do {
- if (buffer != NULL) {
- buffer->release();
- buffer = NULL;
- }
- err = decoder->read(&buffer, &options);
- options.clearSeekTo();
- } while (err == INFO_FORMAT_CHANGED
- || (buffer != NULL && buffer->range_length() == 0));
-
- if (err != OK) {
- CHECK_EQ(buffer, NULL);
-
- LOGV("decoding frame failed.");
- decoder->stop();
-
- return NULL;
- }
-
- LOGV("successfully decoded video frame.");
-
- meta = decoder->getFormat();
-
- int32_t width, height;
- CHECK(meta->findInt32(kKeyWidth, &width));
- CHECK(meta->findInt32(kKeyHeight, &height));
-
- VideoFrame *frame = new VideoFrame;
- frame->mWidth = width;
- frame->mHeight = height;
- frame->mDisplayWidth = width;
- frame->mDisplayHeight = height;
- frame->mSize = width * height * 2;
- frame->mData = new uint8_t[frame->mSize];
-
- int32_t srcFormat;
- CHECK(meta->findInt32(kKeyColorFormat, &srcFormat));
-
- ColorConverter converter(
- (OMX_COLOR_FORMATTYPE)srcFormat, OMX_COLOR_Format16bitRGB565);
- CHECK(converter.isValid());
-
- converter.convert(
- width, height,
- (const uint8_t *)buffer->data() + buffer->range_offset(),
- 0,
- frame->mData, width * 2);
-
- buffer->release();
- buffer = NULL;
-
- decoder->stop();
-
- return frame;
-}
-
-MediaAlbumArt *StagefrightMetadataRetriever::extractAlbumArt() {
- LOGV("extractAlbumArt (extractor: %s)", mExtractor.get() != NULL ? "YES" : "NO");
-
- return NULL;
-}
-
-const char *StagefrightMetadataRetriever::extractMetadata(int keyCode) {
- LOGV("extractMetadata %d (extractor: %s)",
- keyCode, mExtractor.get() != NULL ? "YES" : "NO");
-
- return NULL;
-}
-
-} // namespace android
diff --git a/media/libmediaplayerservice/StagefrightMetadataRetriever.h b/media/libmediaplayerservice/StagefrightMetadataRetriever.h
deleted file mode 100644
index 16127d7..0000000
--- a/media/libmediaplayerservice/StagefrightMetadataRetriever.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-**
-** Copyright 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 STAGEFRIGHT_METADATA_RETRIEVER_H_
-
-#define STAGEFRIGHT_METADATA_RETRIEVER_H_
-
-#include <media/MediaMetadataRetrieverInterface.h>
-
-#include <media/stagefright/OMXClient.h>
-
-namespace android {
-
-class MediaExtractor;
-
-struct StagefrightMetadataRetriever : public MediaMetadataRetrieverInterface {
- StagefrightMetadataRetriever();
- virtual ~StagefrightMetadataRetriever();
-
- virtual status_t setDataSource(const char *url);
- virtual status_t setDataSource(int fd, int64_t offset, int64_t length);
-
- virtual VideoFrame *captureFrame();
- virtual MediaAlbumArt *extractAlbumArt();
- virtual const char *extractMetadata(int keyCode);
-
-private:
- OMXClient mClient;
- sp<MediaExtractor> mExtractor;
-
- StagefrightMetadataRetriever(const StagefrightMetadataRetriever &);
-
- StagefrightMetadataRetriever &operator=(
- const StagefrightMetadataRetriever &);
-};
-
-} // namespace android
-
-#endif // STAGEFRIGHT_METADATA_RETRIEVER_H_