mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Merge pull request #9760 from LunaMoo/sceJpegWidth
Fix jpeg's with width not matching psp buffer size.
This commit is contained in:
commit
2d882b7370
1 changed files with 9 additions and 2 deletions
|
@ -139,12 +139,19 @@ static int __DecodeJpeg(u32 jpegAddr, int jpegSize, u32 imageAddr) {
|
|||
if (actual_components == 3) {
|
||||
u24_be *imageBuffer = (u24_be*)jpegBuf;
|
||||
u32 *abgr = (u32*)Memory::GetPointer(imageAddr);
|
||||
int pspWidth = 0;
|
||||
for (int w = 2; w <= 4096; w *= 2) {
|
||||
if (w >= width && w >= height) {
|
||||
pspWidth = w;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int y = 0; y < height; ++y) {
|
||||
for (int x = 0; x < width; x++) {
|
||||
abgr[x] = convertARGBtoABGR(imageBuffer[x]);
|
||||
}
|
||||
imageBuffer += width;
|
||||
abgr += width;
|
||||
abgr += pspWidth; // Smallest value power of 2 fitting width and height(needs to be square!)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -230,7 +237,7 @@ static int __JpegGetOutputInfo(u32 jpegAddr, int jpegSize, u32 colourInfoAddr) {
|
|||
#ifdef JPEG_DEBUG
|
||||
char jpeg_fname[256];
|
||||
u8 *jpegDumpBuf = Memory::GetPointer(jpegAddr);
|
||||
u32 jpeg_xxhash = XXH32((const char *)jpegBuf, jpegSize, 0xC0108888);
|
||||
u32 jpeg_xxhash = XXH32((const char *)jpegDumpBuf, jpegSize, 0xC0108888);
|
||||
sprintf(jpeg_fname, "Jpeg\\%X.jpg", jpeg_xxhash);
|
||||
FILE *wfp = fopen(jpeg_fname, "wb");
|
||||
if (!wfp) {
|
||||
|
|
Loading…
Add table
Reference in a new issue