Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b079500 authored by Lajos Molnar's avatar Lajos Molnar
Browse files

stagefright: move MetadataRetriever off of OMXCodec

Also remove some unneeded OMXCodec includes.

Bug: 17108024
Change-Id: I1e4b32d83216e9c6b1d76a18fb346dc632be4b1d
parent 6fc17d1a
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -41,8 +41,6 @@
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/MediaCodecSource.h>
#include <media/stagefright/OMXClient.h>
#include <media/stagefright/OMXCodec.h>
#include <media/MediaProfiles.h>
#include <camera/ICamera.h>
#include <camera/CameraParameters.h>
@@ -1218,19 +1216,6 @@ void StagefrightRecorder::clipVideoFrameWidth() {
}

status_t StagefrightRecorder::checkVideoEncoderCapabilities() {
    /* hardware codecs must support camera source meta data mode */
    Vector<CodecCapabilities> codecs;
    OMXClient client;
    CHECK_EQ(client.connect(), (status_t)OK);
    QueryCodecs(
            client.interface(),
            (mVideoEncoder == VIDEO_ENCODER_H263 ? MEDIA_MIMETYPE_VIDEO_H263 :
             mVideoEncoder == VIDEO_ENCODER_MPEG_4_SP ? MEDIA_MIMETYPE_VIDEO_MPEG4 :
             mVideoEncoder == VIDEO_ENCODER_VP8 ? MEDIA_MIMETYPE_VIDEO_VP8 :
             mVideoEncoder == VIDEO_ENCODER_HEVC ? MEDIA_MIMETYPE_VIDEO_HEVC :
             mVideoEncoder == VIDEO_ENCODER_H264 ? MEDIA_MIMETYPE_VIDEO_AVC : ""),
            false /* decoder */, true /* hwCodec */, &codecs);

    if (!mCaptureFpsEnable) {
        // Dont clip for time lapse capture as encoder will have enough
        // time to encode because of slow capture rate of time lapse.
+0 −1
Original line number Diff line number Diff line
@@ -44,7 +44,6 @@
#include <media/stagefright/MediaFilter.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/OMXClient.h>
#include <media/stagefright/OMXCodec.h>
#include <media/stagefright/PersistentSurface.h>
#include <media/stagefright/SurfaceUtils.h>
#include <mediautils/BatteryNotifier.h>
+9 −11
Original line number Diff line number Diff line
@@ -35,11 +35,12 @@
#include <media/stagefright/FileSource.h>
#include <media/stagefright/MediaBuffer.h>
#include <media/stagefright/MediaCodec.h>
#include <media/stagefright/MediaCodecList.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MediaExtractor.h>
#include <media/stagefright/MediaSource.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/OMXCodec.h>
#include <media/stagefright/Utils.h>

#include <CharacterEncodingDetector.h>
@@ -55,13 +56,11 @@ StagefrightMetadataRetriever::StagefrightMetadataRetriever()
    ALOGV("StagefrightMetadataRetriever()");

    DataSource::RegisterDefaultSniffers();
    CHECK_EQ(mClient.connect(), (status_t)OK);
}

StagefrightMetadataRetriever::~StagefrightMetadataRetriever() {
    ALOGV("~StagefrightMetadataRetriever()");
    clearMetadata();
    mClient.disconnect();
}

status_t StagefrightMetadataRetriever::setDataSource(
@@ -137,7 +136,7 @@ status_t StagefrightMetadataRetriever::setDataSource(
}

static VideoFrame *extractVideoFrame(
        const char *componentName,
        const AString &componentName,
        const sp<MetaData> &trackMeta,
        const sp<IMediaSource> &source,
        int64_t frameTimeUs,
@@ -162,7 +161,7 @@ static VideoFrame *extractVideoFrame(
            looper, componentName, &err);

    if (decoder.get() == NULL || err != OK) {
        ALOGW("Failed to instantiate decoder [%s]", componentName);
        ALOGW("Failed to instantiate decoder [%s]", componentName.c_str());
        return NULL;
    }

@@ -477,23 +476,22 @@ VideoFrame *StagefrightMetadataRetriever::getFrameAtTime(
    const char *mime;
    CHECK(trackMeta->findCString(kKeyMIMEType, &mime));

    Vector<OMXCodec::CodecNameAndQuirks> matchingCodecs;
    OMXCodec::findMatchingCodecs(
    Vector<AString> matchingCodecs;
    MediaCodecList::findMatchingCodecs(
            mime,
            false, /* encoder */
            NULL, /* matchComponentName */
            OMXCodec::kPreferSoftwareCodecs,
            MediaCodecList::kPreferSoftwareCodecs,
            &matchingCodecs);

    for (size_t i = 0; i < matchingCodecs.size(); ++i) {
        const char *componentName = matchingCodecs[i].mName.string();
        const AString &componentName = matchingCodecs[i];
        VideoFrame *frame =
            extractVideoFrame(componentName, trackMeta, source, timeUs, option);

        if (frame != NULL) {
            return frame;
        }
        ALOGV("%s failed to extract thumbnail, trying next decoder.", componentName);
        ALOGV("%s failed to extract thumbnail, trying next decoder.", componentName.c_str());
    }

    return NULL;
+0 −2
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@
#include <media/IMediaExtractor.h>
#include <media/MediaMetadataRetrieverInterface.h>

#include <media/stagefright/OMXClient.h>
#include <utils/KeyedVector.h>

namespace android {
@@ -46,7 +45,6 @@ struct StagefrightMetadataRetriever : public MediaMetadataRetrieverInterface {
    virtual const char *extractMetadata(int keyCode);

private:
    OMXClient mClient;
    sp<DataSource> mSource;
    sp<IMediaExtractor> mExtractor;

+0 −5
Original line number Diff line number Diff line
@@ -38,11 +38,6 @@
#include <binder/ProcessState.h>

#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/MediaBufferGroup.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/OMXClient.h>
#include <media/stagefright/OMXCodec.h>
#include <OMX_Component.h>

#include "DummyRecorder.h"