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

Commit 48b1038e authored by Eric Laurent's avatar Eric Laurent Committed by Automerger Merge Worker
Browse files

Merge "nuplayer: fix audioFormat error in offload mode" into main am: 9a9ad82f

parents fa4bf0c9 9a9ad82f
Loading
Loading
Loading
Loading
+0 −18
Original line number Diff line number Diff line
@@ -102,24 +102,6 @@ const NuPlayer::Renderer::PcmInfo NuPlayer::Renderer::AUDIO_PCMINFO_INITIALIZER
// static
const int64_t NuPlayer::Renderer::kMinPositionUpdateDelayUs = 100000ll;

static audio_format_t constexpr audioFormatFromEncoding(int32_t pcmEncoding) {
    switch (pcmEncoding) {
    case kAudioEncodingPcmFloat:
        return AUDIO_FORMAT_PCM_FLOAT;
    case kAudioEncodingPcm32bit:
        return AUDIO_FORMAT_PCM_32_BIT;
    case kAudioEncodingPcm24bitPacked:
        return AUDIO_FORMAT_PCM_24_BIT_PACKED;
    case kAudioEncodingPcm16bit:
        return AUDIO_FORMAT_PCM_16_BIT;
    case kAudioEncodingPcm8bit:
        return AUDIO_FORMAT_PCM_8_BIT; // TODO: do we want to support this?
    default:
        ALOGE("%s: Invalid encoding: %d", __func__, pcmEncoding);
        return AUDIO_FORMAT_INVALID;
    }
}

NuPlayer::Renderer::Renderer(
        const sp<MediaPlayerBase::AudioSink> &sink,
        const sp<MediaClock> &mediaClock,
+24 −0
Original line number Diff line number Diff line
@@ -2422,6 +2422,24 @@ void mapAACProfileToAudioFormat( audio_format_t& format, uint64_t eAacProfile)
    return;
}

audio_format_t audioFormatFromEncoding(int32_t pcmEncoding) {
    switch (pcmEncoding) {
    case kAudioEncodingPcmFloat:
        return AUDIO_FORMAT_PCM_FLOAT;
    case kAudioEncodingPcm32bit:
        return AUDIO_FORMAT_PCM_32_BIT;
    case kAudioEncodingPcm24bitPacked:
        return AUDIO_FORMAT_PCM_24_BIT_PACKED;
    case kAudioEncodingPcm16bit:
        return AUDIO_FORMAT_PCM_16_BIT;
    case kAudioEncodingPcm8bit:
        return AUDIO_FORMAT_PCM_8_BIT; // TODO: do we want to support this?
    default:
        ALOGE("%s: Invalid encoding: %d", __func__, pcmEncoding);
        return AUDIO_FORMAT_INVALID;
    }
}

status_t getAudioOffloadInfo(const sp<MetaData>& meta, bool hasVideo,
        bool isStreaming, audio_stream_type_t streamType, audio_offload_info_t *info)
{
@@ -2441,6 +2459,12 @@ status_t getAudioOffloadInfo(const sp<MetaData>& meta, bool hasVideo,
        ALOGV("Mime type \"%s\" mapped to audio_format %d", mime, info->format);
    }

    int32_t pcmEncoding;
    if (meta->findInt32(kKeyPcmEncoding, &pcmEncoding)) {
        info->format = audioFormatFromEncoding(pcmEncoding);
        ALOGV("audio_format use kKeyPcmEncoding value %d first", info->format);
    }

    if (AUDIO_FORMAT_INVALID == info->format) {
        // can't offload if we don't know what the source format is
        ALOGE("mime type \"%s\" not a known audio format", mime);
+3 −0
Original line number Diff line number Diff line
@@ -44,6 +44,9 @@ const uint8_t *findNextNalStartCode(const uint8_t *data, size_t length);
// Convert a MIME type to a AudioSystem::audio_format
status_t mapMimeToAudioFormat(audio_format_t& format, const char* mime);

// Convert a pcm-encoding to a AudioSystem::audio_format
audio_format_t audioFormatFromEncoding(int32_t pcmEncoding);

// Convert a aac profile to a AudioSystem::audio_format
void mapAACProfileToAudioFormat(audio_format_t& format, uint64_t eAacProfile);