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

Commit 1792299e authored by Mingming Yin's avatar Mingming Yin Committed by Linux Build Service Account
Browse files

audio: add encoding support for linear PCM format

- add encoding support for linear PCM format.
- add changes for buffer Aggregatation in AudioSource.

Change-Id: Iecf402064d67d35d5057b814c842d79af92756d0
parent 2abf54e5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -406,6 +406,7 @@ private:
    static VideoEncoderCap* createDefaultH263VideoEncoderCap();
    static VideoEncoderCap* createDefaultM4vVideoEncoderCap();
    static AudioEncoderCap* createDefaultAmrNBEncoderCap();
    static AudioEncoderCap* createDefaultLpcmEncoderCap();

    static int findTagForName(const NameToTagMap *map, size_t nMappings, const char *name);

+3 −2
Original line number Diff line number Diff line
@@ -61,7 +61,8 @@ protected:
    virtual ~AudioSource();

    enum {
        kMaxBufferSize = 2048,
        //calculated for max duration 80 msec with 48K sampling rate.
        kMaxBufferSize = 30720,

        // After the initial mute, we raise the volume linearly
        // over kAutoRampDurationUs.
@@ -104,7 +105,7 @@ protected:
    void queueInputBuffer_l(MediaBuffer *buffer, int64_t timeUs);
    void releaseQueuedFrames_l();
    void waitOutstandingEncodingFrames_l();
    status_t reset();
    virtual status_t reset();

    AudioSource(const AudioSource &);
    AudioSource &operator=(const AudioSource &);
+6 −1
Original line number Diff line number Diff line
@@ -87,7 +87,12 @@ struct AVFactory {
            const sp<IGraphicBufferProducer>& surface,
            int64_t timeBetweenFrameCaptureUs,
            bool storeMetaDataInVideoBuffers = true);

      virtual AudioSource* createAudioSource(
            audio_source_t inputSource,
            const String16 &opPackageName,
            uint32_t sampleRate,
            uint32_t channels,
            uint32_t outSampleRate = 0);
    virtual MPEG4Writer *CreateMPEG4Writer(int fd);

    // ----- NO TRESSPASSING BEYOND THIS LINE ------
+10 −1
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@
#include <media/stagefright/MediaExtractor.h>
#include <media/stagefright/CameraSourceTimeLapse.h>
#include <media/stagefright/MPEG4Writer.h>
#include <media/stagefright/AudioSource.h>

#include "common/ExtensionsLoader.hpp"
#include "stagefright/AVExtensions.h"
@@ -98,7 +99,15 @@ ElementaryStreamQueue* AVFactory::createESQueue(
         ElementaryStreamQueue::Mode , uint32_t ) {
    return NULL;
}

AudioSource* AVFactory::createAudioSource(
            audio_source_t inputSource,
            const String16 &opPackageName,
            uint32_t sampleRate,
            uint32_t channels,
            uint32_t outSampleRate) {
    return new AudioSource(inputSource, opPackageName, sampleRate,
                            channels, outSampleRate);
}
// ----- NO TRESSPASSING BEYOND THIS LINE ------
AVFactory::AVFactory() {
}
+11 −1
Original line number Diff line number Diff line
@@ -46,7 +46,8 @@ const MediaProfiles::NameToTagMap MediaProfiles::sAudioEncoderNameMap[] = {
    {"amrwb",  AUDIO_ENCODER_AMR_WB},
    {"aac",    AUDIO_ENCODER_AAC},
    {"heaac",  AUDIO_ENCODER_HE_AAC},
    {"aaceld", AUDIO_ENCODER_AAC_ELD}
    {"aaceld", AUDIO_ENCODER_AAC_ELD},
    {"lpcm",  AUDIO_ENCODER_LPCM},
};

const MediaProfiles::NameToTagMap MediaProfiles::sFileFormatMap[] = {
@@ -794,6 +795,7 @@ MediaProfiles::createDefaultCamcorderProfiles(MediaProfiles *profiles)
MediaProfiles::createDefaultAudioEncoders(MediaProfiles *profiles)
{
    profiles->mAudioEncoders.add(createDefaultAmrNBEncoderCap());
    profiles->mAudioEncoders.add(createDefaultLpcmEncoderCap());
}

/*static*/ void
@@ -828,6 +830,14 @@ MediaProfiles::createDefaultAmrNBEncoderCap()
        AUDIO_ENCODER_AMR_NB, 5525, 12200, 8000, 8000, 1, 1);
}


/*static*/ MediaProfiles::AudioEncoderCap*
MediaProfiles::createDefaultLpcmEncoderCap()
{
    return new MediaProfiles::AudioEncoderCap(
        AUDIO_ENCODER_LPCM, 768000, 4608000, 8000, 48000, 1, 6);
}

/*static*/ void
MediaProfiles::createDefaultImageEncodingQualityLevels(MediaProfiles *profiles)
{
Loading