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

Commit c2f8b542 authored by Weiyin Jiang's avatar Weiyin Jiang Committed by Linux Build Service Account
Browse files

audio: support bitdepth meta in webm writer

bitdepth meta is not carried when assembling a new webm from orginal
clip with media muxer, which breaks native decoder CTS cases.

To fix this, we need to reserve bitdepth info when converting from
AMessage to MetaData, and insert bps in webm writer.

Change-Id: I97ca473be26ffc32df75b6b78948b802081b234e
CRs-Fixed: 1053234
parent e14296b1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -108,6 +108,8 @@ struct AVUtils {

    virtual status_t convertMetaDataToMessage(
            const sp<MetaData> &meta, sp<AMessage> *format);
    virtual status_t convertMessageToMetaData(
            const sp<AMessage> &msg, sp<MetaData> &meta);
    virtual DataSource::SnifferFunc getExtendedSniffer();
    virtual status_t mapMimeToAudioFormat( audio_format_t& format, const char* mime);
    virtual status_t sendMetaDataToHal(const sp<MetaData>& meta, AudioParameter *param);
@@ -115,6 +117,8 @@ struct AVUtils {
                const char* mime, bool encoder, const sp<AMessage> &format);
    virtual bool isEnhancedExtension(const char *extension);

    virtual bool hasAudioSampleBits(const sp<MetaData> &);
    virtual bool hasAudioSampleBits(const sp<AMessage> &);
    virtual int getAudioSampleBits(const sp<MetaData> &);
    virtual int getAudioSampleBits(const sp<AMessage> &);
    virtual audio_format_t updateAudioFormat(audio_format_t audioFormat,
+13 −0
Original line number Diff line number Diff line
@@ -49,6 +49,11 @@ status_t AVUtils::convertMetaDataToMessage(
    return OK;
}

status_t AVUtils::convertMessageToMetaData(
        const sp<AMessage> &, sp<MetaData> &) {
    return OK;
}

status_t AVUtils::mapMimeToAudioFormat(
        audio_format_t&, const char* ) {
    return OK;
@@ -59,6 +64,14 @@ status_t AVUtils::sendMetaDataToHal(
    return OK;
}

bool AVUtils::hasAudioSampleBits(const sp<MetaData> &) {
    return false;
}

bool AVUtils::hasAudioSampleBits(const sp<AMessage> &) {
    return false;
}

int AVUtils::getAudioSampleBits(const sp<MetaData> &) {
    return 16;
}
+0 −1
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@
#include "mediaplayerservice/AVNuExtensions.h"
#include "stagefright/AVExtensions.h"

#include "stagefright/AVExtensions.h"
namespace android {

/*
+1 −0
Original line number Diff line number Diff line
@@ -1422,6 +1422,7 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) {
    }

    // XXX TODO add whatever other keys there are
    AVUtils::get()->convertMessageToMetaData(msg, meta);

#if 0
    ALOGI("converted %s to:", msg->debugString(0).c_str());
+4 −1
Original line number Diff line number Diff line
@@ -14,7 +14,10 @@ LOCAL_SRC_FILES:= EbmlUtil.cpp \
                  WebmWriter.cpp


LOCAL_C_INCLUDES += $(TOP)/frameworks/av/include
LOCAL_C_INCLUDES += $(TOP)/frameworks/av/include \
                    $(TOP)/frameworks/av/media/libavextensions \
                    $(TOP)/frameworks/av/media/libstagefright/mpeg2ts \
                    $(TOP)/frameworks/native/include/media/openmax

LOCAL_SHARED_LIBRARIES += libstagefright_foundation \
                          libstagefright \
Loading