sceMpegGetUserDataAu: return ERROR_MPEG_NO_DATA. Add some notes for later implementing mpeg user data. Fixes part of #2172. Thanks to [unknown]
This commit is contained in:
parent
04df8ac4dc
commit
b8959b956b
2 changed files with 35 additions and 25 deletions
|
@ -1323,10 +1323,14 @@ int sceMpegAvcConvertToYuv420(u32 mpeg, u32 bufferOutput, u32 unknown1, int unkn
|
|||
int sceMpegGetUserdataAu(u32 mpeg, u32 streamUid, u32 auAddr, u32 resultAddr)
|
||||
{
|
||||
ERROR_LOG(HLE, "UNIMPL sceMpegGetUserdataAu(%08x, %08x, %08x, %08x)", mpeg, streamUid, auAddr, resultAddr);
|
||||
|
||||
// TODO: Are these at all right? Seen in Phantasy Star Portable 2.
|
||||
Memory::Write_U32(0, resultAddr);
|
||||
Memory::Write_U32(0, resultAddr + 4);
|
||||
return 0;
|
||||
|
||||
// We currently can't demux userdata so this seems like the best thing to return in the meantime..
|
||||
// Then we probably shouldn't do the above writes? but it works...
|
||||
return ERROR_MPEG_NO_DATA;
|
||||
}
|
||||
|
||||
const HLEFunction sceMpeg[] =
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
const int PACKET_START_CODE_MASK = 0xffffff00;
|
||||
const int PACKET_START_CODE_PREFIX = 0x00000100;
|
||||
|
||||
// http://dvd.sourceforge.net/dvdinfo/mpeghdrs.html
|
||||
|
||||
const int USER_DATA_START_CODE = 0x000001b2;
|
||||
const int SEQUENCE_START_CODE = 0x000001b3;
|
||||
const int EXT_START_CODE = 0x000001b5;
|
||||
const int SEQUENCE_END_CODE = 0x000001b7;
|
||||
|
@ -156,16 +159,15 @@ void MpegDemux::demux(int audioChannel)
|
|||
startCode = (startCode << 8) | read8();
|
||||
}
|
||||
switch (startCode) {
|
||||
case PACK_START_CODE: {
|
||||
case PACK_START_CODE:
|
||||
skip(10);
|
||||
break;
|
||||
}
|
||||
case SYSTEM_HEADER_START_CODE: {
|
||||
case SYSTEM_HEADER_START_CODE:
|
||||
skip(14);
|
||||
break;
|
||||
}
|
||||
case PADDING_STREAM:
|
||||
case PRIVATE_STREAM_2: {
|
||||
case PRIVATE_STREAM_2:
|
||||
{
|
||||
int length = read16();
|
||||
skip(length);
|
||||
break;
|
||||
|
@ -178,11 +180,15 @@ void MpegDemux::demux(int audioChannel)
|
|||
case 0x1E0: case 0x1E1: case 0x1E2: case 0x1E3:
|
||||
case 0x1E4: case 0x1E5: case 0x1E6: case 0x1E7:
|
||||
case 0x1E8: case 0x1E9: case 0x1EA: case 0x1EB:
|
||||
case 0x1EC: case 0x1ED: case 0x1EE: case 0x1EF: {
|
||||
case 0x1EC: case 0x1ED: case 0x1EE: case 0x1EF:
|
||||
// Video Stream
|
||||
demuxStream(false, startCode, -1);
|
||||
break;
|
||||
}
|
||||
case USER_DATA_START_CODE:
|
||||
// User data, probably same as queried by sceMpegGetUserdataAu.
|
||||
// Not sure what exactly to do or how much to read.
|
||||
// TODO: implement properly.
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue