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

Commit 389b6f3b authored by Brint E. Kriebel's avatar Brint E. Kriebel
Browse files

Merge branch 'cm-11.0' into stable/cm-11.0

Conflicts:
	media/libstagefright/AwesomePlayer.cpp
	media/libstagefright/Utils.cpp

Change-Id: I215fddc4f0af1fbda9ad5a2171de5f98321e7690
parents 361b8e14 7425b205
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -162,6 +162,19 @@ const char CameraParameters::KEY_METERING[] = "metering";
const char CameraParameters::KEY_WDR[] = "wdr";
const char CameraParameters::KEY_WEATHER[] = "weather";
const char CameraParameters::KEY_CITYID[] = "contextualtag-cityid";

const char CameraParameters::KEY_DYNAMIC_RANGE_CONTROL[] = "dynamic-range-control";
const char CameraParameters::KEY_SUPPORTED_DYNAMIC_RANGE_CONTROL[] = "dynamic-range-control-values";
const char CameraParameters::KEY_PHASE_AF[] = "phase-af";
const char CameraParameters::KEY_SUPPORTED_PHASE_AF[] = "phase-af-values";
const char CameraParameters::KEY_RT_HDR[] = "rt-hdr";
const char CameraParameters::KEY_SUPPORTED_RT_HDR[] = "rt-hdr-values";
const char CameraParameters::DRC_ON[] = "on";
const char CameraParameters::DRC_OFF[] = "off";
const char CameraParameters::PAF_ON[] = "on";
const char CameraParameters::PAF_OFF[] = "off";
const char CameraParameters::RTHDR_ON[] = "on";
const char CameraParameters::RTHDR_OFF[] = "off";
#endif

#ifdef HTC_CAMERA_HARDWARE
+4 −1
Original line number Diff line number Diff line
@@ -519,8 +519,11 @@ static status_t recordScreen(const char* fileName) {
    // Main encoder loop.
    err = runEncoder(encoder, muxer);
    if (err != NO_ERROR) {
        // If err occurs, make sure the mp4 file is ended correctly,
        // In other words, sample table is written to the end of file.
        encoder->stop();
        muxer->stop();
        encoder->release();
        encoder.clear();

        return err;
    }
+13 −0
Original line number Diff line number Diff line
@@ -646,6 +646,19 @@ public:
    static const char KEY_WDR[];
    static const char KEY_WEATHER[];
    static const char KEY_CITYID[];

    static const char KEY_DYNAMIC_RANGE_CONTROL[];
    static const char KEY_SUPPORTED_DYNAMIC_RANGE_CONTROL[];
    static const char KEY_PHASE_AF[];
    static const char KEY_SUPPORTED_PHASE_AF[];
    static const char KEY_RT_HDR[];
    static const char KEY_SUPPORTED_RT_HDR[];
    static const char DRC_ON[];
    static const char DRC_OFF[];
    static const char PAF_ON[];
    static const char PAF_OFF[];
    static const char RTHDR_ON[];
    static const char RTHDR_OFF[];
#endif

#ifdef HTC_CAMERA_HARDWARE
+6 −9
Original line number Diff line number Diff line
@@ -487,6 +487,11 @@ status_t AudioTrack::set(
    else {
#endif

    if (cbf != NULL) {
        mAudioTrackThread = new AudioTrackThread(*this, threadCanCallJava);
        mAudioTrackThread->run("AudioTrack", ANDROID_PRIORITY_AUDIO, 0 /*stack*/);
    }

    // create the IAudioTrack
    status_t status = createTrack_l(streamType,
                                  sampleRate,
@@ -497,11 +502,6 @@ status_t AudioTrack::set(
                                  output,
                                  0 /*epoch*/);

    if (cbf != NULL && status == NO_ERROR) {
        mAudioTrackThread = new AudioTrackThread(*this, threadCanCallJava);
        mAudioTrackThread->run("AudioTrack", ANDROID_PRIORITY_AUDIO, 0 /*stack*/);
    }

    if (status != NO_ERROR) {
        if (mAudioTrackThread != 0) {
            mAudioTrackThread->requestExit();   // see comment in AudioTrack.h
@@ -1639,10 +1639,7 @@ nsecs_t AudioTrack::processAudioBuffer(const sp<AudioTrackThread>& thread)
    // Currently the AudioTrack thread is not created if there are no callbacks.
    // Would it ever make sense to run the thread, even without callbacks?
    // If so, then replace this by checks at each use for mCbf != NULL.
    if (mCblk == NULL) {
        ALOGE("mCblk is NULL");
        return NS_NEVER;
    }
    LOG_ALWAYS_FATAL_IF(mCblk == NULL);

    mLock.lock();
    if (mAwaitBoost) {
+8 −81
Original line number Diff line number Diff line
@@ -14,11 +14,6 @@
 * limitations under the License.
 */

//#define LOG_NDEBUG 0
#define LOG_TAG "MediaScannerClient"

#include <utils/Log.h>

#include <media/mediascanner.h>

#include "StringArray.h"
@@ -46,11 +41,7 @@ void MediaScannerClient::setLocale(const char* locale)
{
    if (!locale) return;

    if (!strncmp(locale, "en_US", 5))
        mLocaleEncoding = kEncodingUTF8;
    else if (!strncmp(locale, "es_US", 5) || !strncmp(locale, "de_DE", 5))
        mLocaleEncoding = kEncodingCP1252;
    else if (!strncmp(locale, "ja", 2))
    if (!strncmp(locale, "ja", 2))
        mLocaleEncoding = kEncodingShiftJIS;
    else if (!strncmp(locale, "ko", 2))
        mLocaleEncoding = kEncodingEUCKR;
@@ -63,7 +54,6 @@ void MediaScannerClient::setLocale(const char* locale)
            mLocaleEncoding = kEncodingBig5;
        }
    }
    ALOGV("setLocale [%s], mLocaleEncoding [%u]", locale, mLocaleEncoding);
}

void MediaScannerClient::beginFile()
@@ -145,9 +135,6 @@ void MediaScannerClient::convertValues(uint32_t encoding)
        case kEncodingEUCKR:
            enc = "EUC-KR";
            break;
        case kEncodingCP1252:
            enc = "windows-1252";
            break;
    }

    if (enc) {
@@ -214,76 +201,16 @@ void MediaScannerClient::endFile()
{
    if (mLocaleEncoding != kEncodingNone) {
        int size = mNames->size();

        int count = 0;
        int percent = 0;
        uint32_t encoding = kEncodingAll;
        uint32_t tmpEncoding = kEncodingAll;
        uint32_t srcEncoding = kEncodingNone;
        // compute a bit mask containing all possible encodings
        for (int i = 0; i < mNames->size(); i++) {
            tmpEncoding = possibleEncodings(mValues->getEntry(i));
            // If no multibyte encoding is detected or GBK is the only possible multibyte encoding,
            // just ignore
            if( (kEncodingNone == tmpEncoding) || ((kEncodingGBK | kEncodingCP1252) == tmpEncoding) ) {
                continue;
            }

            if( kEncodingCP1252 == tmpEncoding ) {
                ++count;
                continue;
            }

            encoding &= tmpEncoding;
            ALOGV("value: %s, tmpEncoding: %x\n", mValues->getEntry(i), tmpEncoding);
        }

        if(size > 0) {
            percent = (count*100)/size;
        }

        if(percent >= 50) {
            ALOGV("Force kEncodingAll, percentage: %d\n", percent);
            encoding = kEncodingAll;
        }
        ALOGV("possibleEncodings: %x\n", encoding);

        /*
         **  Leave the highest encoding methodolgy in bit mask,
         **  EXCEPT:
         **     ASCII characters are detected.
         **     Locale encodings matches.
         **     GBK is one of the encodings.
         */
        while( kEncodingNone != encoding ) {
            // If bit mask contains all possible encodings,
            // that probably means ASCII char is detected.
            // Don't need convertion.
            if(kEncodingAll == encoding) {
                srcEncoding = kEncodingAll;
                break;
            }

            // Set locale native encoding, if it matches.
            if(encoding & mLocaleEncoding) {
                srcEncoding = mLocaleEncoding;
                break;
            }

            // Set GBK as preference, if GBK is one of the possible encodings.
            if(encoding & kEncodingGBK) {
                srcEncoding = kEncodingGBK;
                break;
            }
        // compute a bit mask containing all possible encodings
        for (int i = 0; i < mNames->size(); i++)
            encoding &= possibleEncodings(mValues->getEntry(i));

            // Clear the lowest bit in bit mask and continue to loop
            srcEncoding = encoding;
            encoding &= (encoding - 1);
        }
        // if the locale encoding matches, then assume we have a native encoding.
        if (encoding & mLocaleEncoding)
            convertValues(mLocaleEncoding);

        if( (kEncodingNone != srcEncoding) && (kEncodingAll != srcEncoding) ) {
            convertValues(srcEncoding);
        }
        // finally, push all name/value pairs to the client
        for (int i = 0; i < mNames->size(); i++) {
            status_t status = handleStringTag(mNames->getEntry(i), mValues->getEntry(i));
Loading