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

Commit 13f103b2 authored by Nick Desaulniers's avatar Nick Desaulniers
Browse files

[frameworks][av] fix -Wimplicit-int-float-conversion



IEEE754 single precision cannot precisely represent
INT32_MAX/UINT_MAX/RAND_MAX.

IEEE754 double precision cannot precisely represent INT64_MAX.

As such, implicit conversions from operations with floating point and
integral operands may result in a loss of precision.

Accept the imprecision with by making the existing implicit casts
explicit.

Bug: 139945549
Test: mm
Change-Id: Ic66b3d3bbac9e644e27ad8233018f24dfce3209f
Signed-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
parent 54ae7b77
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -304,7 +304,7 @@ static void playSource(sp<MediaSource> &source) {
            seekTimeUs = -1;

            if (shouldSeek) {
                seekTimeUs = (rand() * (float)durationUs) / RAND_MAX;
                seekTimeUs = (rand() * (float)durationUs) / (float)RAND_MAX;
                options.setSeekTo(seekTimeUs);

                printf("seeking to %" PRId64 " us (%.2f secs)\n",
+1 −1
Original line number Diff line number Diff line
@@ -2436,7 +2436,7 @@ status_t ACodec::setOperatingRate(float rateFloat, bool isVideo) {
        }
        rate = (OMX_U32)(rateFloat * 65536.0f + 0.5f);
    } else {
        if (rateFloat > UINT_MAX) {
        if (rateFloat > (float)UINT_MAX) {
            return BAD_VALUE;
        }
        rate = (OMX_U32)(rateFloat);
+1 −1
Original line number Diff line number Diff line
@@ -281,7 +281,7 @@ void MediaClock::processTimers_l() {
            it = mTimers.erase(it);
        } else {
            if (mPlaybackRate != 0.0
                && (double)diffMediaUs < INT64_MAX * (double)mPlaybackRate) {
                && (double)diffMediaUs < (double)INT64_MAX * (double)mPlaybackRate) {
                int64_t targetRealUs = diffMediaUs / (double)mPlaybackRate;
                if (targetRealUs < nextLapseRealUs) {
                    nextLapseRealUs = targetRealUs;
+1 −1
Original line number Diff line number Diff line
@@ -1874,7 +1874,7 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) {
    if (msg->findInt32("frame-rate", &fps) && fps > 0) {
        meta->setInt32(kKeyFrameRate, fps);
    } else if (msg->findFloat("frame-rate", &fpsFloat)
            && fpsFloat >= 1 && fpsFloat <= INT32_MAX) {
            && fpsFloat >= 1 && fpsFloat <= (float)INT32_MAX) {
        // truncate values to distinguish between e.g. 24 vs 23.976 fps
        meta->setInt32(kKeyFrameRate, (int32_t)fpsFloat);
    }
+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ extern "C"
#endif

#include "pvmp3_audio_type_defs.h"
#define Qfmt_31(a)   (Int32)((float)(a)*0x7FFFFFFF)
#define Qfmt_31(a)   (Int32)((float)(a)*(float)0x7FFFFFFF)

#define Qfmt15(x)   (Int16)((x)*((Int32)1<<15) + ((x)>=0?0.5F:-0.5F))

Loading