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

Commit 2426d11f authored by Ashok Bhat's avatar Ashok Bhat
Browse files

m4v_h263_enc: Use uint32_t for ULong



ULong is used in the encoder code as 32-bit unsigned integer type.
But it has been defined as an unsigned long, which will be 64-bit
on 64-bit platforms. This causes many problems including output
mismatch between 32-bit and 64-bit code and crash in certain cases.

This patch defines ULong as uint32_t. In addition, it uses uintptr_t
at places where an address is cast to an integer to check for alignment.

Change-Id: I2b0086824a5985b9fc4628ce6fbe81db156e37d2
Signed-off-by: default avatarAshok Bhat <ashok.bhat@arm.com>
parent bc0c2c2d
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -721,7 +721,7 @@ void SoftMPEG4Encoder::onQueueFilled(OMX_U32 /* portIndex */) {
            vin.uChan = vin.yChan + vin.height * vin.pitch;
            vin.uChan = vin.yChan + vin.height * vin.pitch;
            vin.vChan = vin.uChan + ((vin.height * vin.pitch) >> 2);
            vin.vChan = vin.uChan + ((vin.height * vin.pitch) >> 2);


            unsigned long modTimeMs = 0;
            ULong modTimeMs = 0;
            int32_t nLayer = 0;
            int32_t nLayer = 0;
            MP4HintTrack hintTrack;
            MP4HintTrack hintTrack;
            if (!PVEncodeVideoFrame(mHandle, &vin, &vout,
            if (!PVEncodeVideoFrame(mHandle, &vin, &vout,
+1 −1
Original line number Original line Diff line number Diff line
@@ -29,7 +29,7 @@ typedef int Int;
typedef unsigned short UShort;
typedef unsigned short UShort;
typedef short Short;
typedef short Short;
typedef unsigned int Bool;
typedef unsigned int Bool;
typedef unsigned long ULong;
typedef uint32_t ULong;


#define PV_CODEC_INIT  0
#define PV_CODEC_INIT  0
#define PV_CODEC_STOP  1
#define PV_CODEC_STOP  1
+4 −4
Original line number Original line Diff line number Diff line
@@ -363,7 +363,7 @@ Int GetPredAdvBy0x0(
    /* initialize offset to adjust pixel counter */
    /* initialize offset to adjust pixel counter */
    /*    the next row; full-pel resolution      */
    /*    the next row; full-pel resolution      */


    tmp = (ULong)prev & 0x3;
    tmp = (uintptr_t)prev & 0x3;


    if (tmp == 0)  /* word-aligned */
    if (tmp == 0)  /* word-aligned */
    {
    {
@@ -466,7 +466,7 @@ Int GetPredAdvBy0x1(
    /* Branch based on pixel location (half-pel or full-pel) for x and y */
    /* Branch based on pixel location (half-pel or full-pel) for x and y */
    rec -= 12; /* preset */
    rec -= 12; /* preset */


    tmp = (ULong)prev & 3;
    tmp = (uintptr_t)prev & 3;
    mask = 254;
    mask = 254;
    mask |= (mask << 8);
    mask |= (mask << 8);
    mask |= (mask << 16); /* 0xFEFEFEFE */
    mask |= (mask << 16); /* 0xFEFEFEFE */
@@ -791,7 +791,7 @@ Int GetPredAdvBy1x0(
    /* Branch based on pixel location (half-pel or full-pel) for x and y */
    /* Branch based on pixel location (half-pel or full-pel) for x and y */
    rec -= 12; /* preset */
    rec -= 12; /* preset */


    tmp = (ULong)prev & 3;
    tmp = (uintptr_t)prev & 3;
    mask = 254;
    mask = 254;
    mask |= (mask << 8);
    mask |= (mask << 8);
    mask |= (mask << 16); /* 0xFEFEFEFE */
    mask |= (mask << 16); /* 0xFEFEFEFE */
@@ -1140,7 +1140,7 @@ Int GetPredAdvBy1x1(
    mask |= (mask << 8);
    mask |= (mask << 8);
    mask |= (mask << 16); /* 0x3f3f3f3f */
    mask |= (mask << 16); /* 0x3f3f3f3f */


    tmp = (ULong)prev & 3;
    tmp = (uintptr_t)prev & 3;


    rec -= 4; /* preset */
    rec -= 4; /* preset */


+1 −1
Original line number Original line Diff line number Diff line
@@ -60,7 +60,7 @@ typedef unsigned short UShort;
typedef short Short;
typedef short Short;
typedef short int SInt;
typedef short int SInt;
typedef unsigned int Bool;
typedef unsigned int Bool;
typedef unsigned long   ULong;
typedef uint32_t ULong;
typedef void Void;
typedef void Void;


#define PV_CODEC_INIT       0
#define PV_CODEC_INIT       0