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

Commit d098f35f authored by Sharad Sangle's avatar Sharad Sangle Committed by Linux Build Service Account
Browse files

audio: add support for offload FLAC

  Add support for FLAC playback in
  compressed offload mode

Change-Id: I617b41b867277272212d6cf1a6f82f646c5b1032
parent 3f854035
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -31,12 +31,14 @@

#include <media/stagefright/DataSource.h>
#include <common/AVExtensionsCommon.h>
#include <system/audio.h>

namespace android {

struct ACodec;
class MediaExtractor;
struct MediaCodec;
class AudioParameter;

/*
 * Factory to create objects of base-classes in libstagefright
@@ -58,6 +60,8 @@ struct AVUtils {
    virtual status_t convertMetaDataToMessage(
            const sp<MetaData> &meta, sp<AMessage> *format);
    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);

    virtual sp<MediaCodec> createCustomComponentByName(const sp<ALooper> &looper,
                const char* mime, bool encoder);
+10 −0
Original line number Diff line number Diff line
@@ -49,6 +49,16 @@ status_t AVUtils::convertMetaDataToMessage(
    return OK;
}

status_t AVUtils::mapMimeToAudioFormat(
        audio_format_t&, const char* ) {
        return OK;
}

status_t AVUtils::sendMetaDataToHal(
        const sp<MetaData>&, AudioParameter *){
        return OK;
}

static bool dumbSniffer(
        const sp<DataSource> &, String8 *,
        float *, sp<AMessage> *) {
+2 −1
Original line number Diff line number Diff line
@@ -727,6 +727,7 @@ status_t sendMetaDataToHal(sp<MediaPlayerBase::AudioSink>& sink,
        param.addInt(String8(AUDIO_OFFLOAD_CODEC_PADDING_SAMPLES), paddingSamples);
    }

    AVUtils::get()->sendMetaDataToHal(meta, &param);
    ALOGV("sendMetaDataToHal: bitRate %d, sampleRate %d, chanMask %d,"
          "delaySample %d, paddingSample %d", bitRate, sampleRate,
          channelMask, delaySamples, paddingSamples);
@@ -762,7 +763,7 @@ const struct mime_conv_t* p = &mimeLookup[0];
        ++p;
    }

    return BAD_VALUE;
    return AVUtils::get()->mapMimeToAudioFormat(format, mime);
}

struct aac_format_conv_t {
+5 −0
Original line number Diff line number Diff line
@@ -30,6 +30,11 @@ LOCAL_C_INCLUDES += \

LOCAL_EXPORT_C_INCLUDE_DIRS := \
    $(LOCAL_PATH)/include
ifeq ($(call is-vendor-board-platform,QCOM),true)
ifeq ($(strip $(AUDIO_FEATURE_ENABLED_FLAC_OFFLOAD)),true)
LOCAL_CFLAGS     += -DFLAC_OFFLOAD_ENABLED
endif
endif

LOCAL_MODULE := libaudiopolicycomponents

+3 −0
Original line number Diff line number Diff line
@@ -201,6 +201,9 @@ const StringToEnum sFormatNameToEnumTable[] = {
    STRING_TO_ENUM(AUDIO_FORMAT_E_AC3),
    STRING_TO_ENUM(AUDIO_FORMAT_DTS),
    STRING_TO_ENUM(AUDIO_FORMAT_DTS_HD),
#ifdef FLAC_OFFLOAD_ENABLED
    STRING_TO_ENUM(AUDIO_FORMAT_FLAC),
#endif
};

const StringToEnum sOutChannelsNameToEnumTable[] = {