Beispiel #1
0
        public int sceMpegAvcDecode(int mpeg, int au, int framewidth, int buffer, int num)
        {
            Debug.Assert(num != 0);

            byte *   pmpeg   = _memorySystem.Translate(( uint )mpeg);
            SceMpeg *sceMpeg = ( SceMpeg * )pmpeg;
            byte *   ptr     = RingBuffer.Read(
                _memorySystem.Translate(( uint )sceMpeg->Ringbuffer->pData),
                sceMpeg->Ringbuffer->iPackets, sceMpeg->Ringbuffer->iPacketSize,
                ref sceMpeg->Ringbuffer->iReadPackets);

            uint  pbuffer  = *(( uint * )_memorySystem.Translate(( uint )buffer));
            uint *ppbuffer = ( uint * )_memorySystem.Translate(pbuffer);

            for (int n = 0; n < framewidth; n++)
            {
                *(ppbuffer++) = ( uint )(0xCCDDEEFF + n);
            }

            // 1 = decoded something, else 0
            if (num != 0)
            {
                uint *pnum = ( uint * )_memorySystem.Translate(( uint )num);
                *     pnum = 1;
            }

            return(0);
        }
Beispiel #2
0
        public int sceMpegCreate(SceMpegPointer *sceMpegPointer, void *mpegData, int mpegSize,
                                 SceMpegRingbuffer *sceMpegRingbuffer, int frameWidth, int mode, int ddrTop)
        {
            //return -1;

            var mpeg = GetMpeg(sceMpegPointer);

            if (mpegSize < sceMpegQueryMemSize(0))
            {
                throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_MEMORY));
            }

            // Update the ring buffer struct.
            if (sceMpegRingbuffer->PacketSize == 0)
            {
                sceMpegRingbuffer->PacketsAvailable = 0;
            }
            else
            {
                sceMpegRingbuffer->PacketsAvailable =
                    (int)((sceMpegRingbuffer->DataEnd.Address - sceMpegRingbuffer->Data.Address) /
                          sceMpegRingbuffer->PacketSize);
            }

            sceMpegRingbuffer->SceMpeg = Memory.PointerToPspPointer(sceMpegPointer);

            SceMpeg *sceMpegData = (SceMpeg *)(((byte *)mpegData) + 0x30);

            sceMpegPointer->SceMpeg = Memory.PointerToPspPointer(sceMpegData);

            PointerUtils.StoreStringOnPtr("LIBMPEG", Encoding.UTF8, sceMpegData->MagicBytes);
            PointerUtils.StoreStringOnPtr("001", Encoding.UTF8, sceMpegData->VersionBytes);
            sceMpegData->Pad = -1;
            sceMpegData->RingBufferAddress          = Memory.PointerToPspPointer(sceMpegRingbuffer);
            sceMpegData->RingBufferAddressDataUpper = sceMpegRingbuffer->DataEnd;
            sceMpegData->FrameWidth                 = frameWidth;
            sceMpegData->SceMpegAvcMode.Mode        = -1;
            sceMpegData->SceMpegAvcMode.PixelFormat = GuPixelFormats.Rgba8888;
            sceMpegData->VideoFrameCount            = 0;
            sceMpegData->AudioFrameCount            = 0;

            sceMpegRingbuffer->PacketsTotal = 0;

            mpeg.ReadPackets = numPackets => (int)HleInterop.ExecuteFunctionNow(sceMpegRingbuffer->Callback,
                                                                                sceMpegRingbuffer->Data,
                                                                                numPackets, sceMpegRingbuffer->CallbackParameter);

            mpeg._Mpeg = sceMpegPointer;
            mpeg.Data  = sceMpegData;
            mpeg.Create();

            return(0);
        }
Beispiel #3
0
        public int sceMpegCreate(int mpeg, int data, int size, int ringbuffer, int framewidth, int unk1, int unk2)
        {
            Log.WriteLine(Verbosity.Normal, Feature.Bios, "sceMpegCreate({0:X8}, {1:X8}, {2}, {3:X8}, {4}, {5}, {6})", mpeg, data, size, ringbuffer, framewidth, unk1, unk2);
            byte *pmpeg = _memorySystem.Translate(( uint )mpeg);
            byte *pdata = _memorySystem.Translate(( uint )data);
            // size = size returned from sceMpegQueryMemSize
            byte *prb = _memorySystem.Translate(( uint )ringbuffer);

            SceMpeg *sceMpeg = ( SceMpeg * )pmpeg;

            sceMpeg->Ringbuffer = ( sceMpegRingbuffer * )prb;

            return(0);
        }
Beispiel #4
0
 private void _FinishMpeg(SceMpeg *SceMpegData)
 {
     Console.WriteLine("_FinishMpeg");
 }
Beispiel #5
0
 public int sceMpegQueryAtracEsSize(SceMpeg *Mpeg, int *iEsSize, int *iOutSize)
 {
     //throw(new NotImplementedException());
     return(0);
 }
Beispiel #6
0
 public int sceMpegGetAvcAu(SceMpeg *Mpeg, SceMpegStream *pStream, SceMpegAu *pAu, int *iUnk)
 {
     //throw(new NotImplementedException());
     return(0);
 }
Beispiel #7
0
 public int sceMpegCreate(SceMpeg *Mpeg, void *pData, int iSize, SceMpegRingbuffer *Ringbuffer, int iFrameWidth, int iUnk1, int iUnk2)
 {
     //throw (new NotImplementedException());
     //Ringbuffer.iPackets = 0;
     return(-1);
 }
Beispiel #8
0
 public int sceMpegAvcDecode(SceMpeg *Mpeg, SceMpegAu *pAu, int iFrameWidth, void *pBuffer, int *iInit)
 {
     //throw(new NotImplementedException());
     return(0);
 }
Beispiel #9
0
 public void *sceMpegMallocAvcEsBuf(SceMpeg *Mpeg)
 {
     //throw(new NotImplementedException());
     return(null);
 }
Beispiel #10
0
 public int sceMpegQueryStreamOffset(SceMpeg *Mpeg, void *pBuffer, int *iOffset)
 {
     //throw(new NotImplementedException());
     *iOffset = 0;
     return(0);
 }
Beispiel #11
0
 public int sceMpegInitAu(SceMpeg *Mpeg, void *pEsBuffer, SceMpegAu *pAu)
 {
     //throw(new NotImplementedException());
     return(-1);
 }
Beispiel #12
0
 public SceMpegStream *sceMpegRegistStream(SceMpeg *Mpeg, int iStreamID, int iUnk)
 {
     //throw(new NotImplementedException());
     return(null);
 }
Beispiel #13
0
 public void sceMpegDelete(SceMpeg *Mpeg)
 {
     //throw(new NotImplementedException());
 }
Beispiel #14
0
 public int sceMpegFlushAllStream(SceMpeg *Mpeg)
 {
     //throw(new NotImplementedException());
     return(-1);
 }
Beispiel #15
0
 public int sceMpegAvcDecodeStop(SceMpeg *Mpeg, int iFrameWidth, void *pBuffer, int *iStatus)
 {
     //throw(new NotImplementedException());
     return(-1);
 }
Beispiel #16
0
 public int sceMpegAtracDecode(SceMpeg *Mpeg, SceMpegAu *pAu, void *pBuffer, int iInit)
 {
     //throw(new NotImplementedException());
     return(-1);
 }
Beispiel #17
0
 public int sceMpegAvcDecodeMode(SceMpeg *Mpeg, SceMpegAvcMode *pMode)
 {
     //throw(new NotImplementedException());
     return(-1);
 }
Beispiel #18
0
 public void sceMpegFreeAvcEsBuf(SceMpeg *Mpeg, void *pBuf)
 {
     //throw(new NotImplementedException());
     return;
 }