Exemple #1
0
        public int sceMpegAvcDecode(SceMpegPointer* SceMpegPointer, SceMpegAu* MpegAccessUnit, int FrameWidth, PspPointer* OutputBufferPointer, PspPointer* Init)
        {
            //if (*Init == 1)
            //{
            //	throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
            //}

            var SceMpegData = GetSceMpegData(SceMpegPointer);
            var Mpeg = GetMpeg(SceMpegPointer);

            // Dummy
            var VideoPacket = new VideoPacket();

            //Console.Error.WriteLine("0x{0:X}", PspMemory.PointerToPspAddress(OutputBuffer));
            //Console.WriteLine("{0:X8}", (*OutputBufferPointer).Address);
            Mpeg.AvcDecode(
                MpegAccessUnit,
                FrameWidth,
                SceMpegData->SceMpegAvcMode.PixelFormat,
                (*OutputBufferPointer)
            );

            SceMpegData->AvcFrameStatus = 1;
            //Init = SceMpegData->AvcFrameStatus;

            //throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
            return 0;
        }
Exemple #2
0
 public int sceMpegAtracDecode(SceMpegPointer* SceMpegPointer, SceMpegAu* MpegAccessUnit, byte* OutputBuffer, int Init)
 {
     var Mpeg = GetMpeg(SceMpegPointer);
     if (!Mpeg.HasData) throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
     Mpeg.AtracDecode(MpegAccessUnit, OutputBuffer, (Init != 0));
     return 0;
 }
Exemple #3
0
 public int sceMpegGetAtracAu(SceMpegPointer* SceMpegPointer, StreamId StreamId, out SceMpegAu MpegAccessUnit, out PspPointer Atrac3PlusPointer)
 {
     var Mpeg = GetMpeg(SceMpegPointer);
     if (!Mpeg.HasData) throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
     MpegAccessUnit = Mpeg.GetAtracAu(StreamId);
     Atrac3PlusPointer.Address = 0;
     return 0;
 }
Exemple #4
0
        public int sceMpegGetAtracAu(SceMpegPointer* Mpeg, StreamId StreamId, SceMpegAu* MpegAccessUnit, void* Atrac3PlusPointer)
        {
            CheckEnabledMpeg();

            //Mpeg->SceMpegData.

            throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
        }
Exemple #5
0
		public int sceMpegGetAvcAu(SceMpegPointer* Mpeg, StreamId StreamId, SceMpegAu* MpegAccessUnit, int* DataAttributes)
		{
			CheckEnabledMpeg();

			if (DataAttributes != null)
			{
				*DataAttributes = 1;
			}

			throw(new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));

			//throw(new NotImplementedException());
			//return 0;
		}
Exemple #6
0
        public int sceMpegInitAu(SceMpegPointer* Mpeg, int ElementaryStreamBuffer, SceMpegAu* MpegAccessUnit)
        {
            CheckEnabledMpeg();

            MpegAccessUnit->PresentationTimestampBe = unchecked((uint)0);
            MpegAccessUnit->PresentationTimestampLe = unchecked((uint)0);
            MpegAccessUnit->DecodeTimestampBe = unchecked((uint)0);
            MpegAccessUnit->DecodeTimestampLe = unchecked((uint)0);
            MpegAccessUnit->EsBuffer = ElementaryStreamBuffer;

            if (ElementaryStreamBuffer >= 1 && ElementaryStreamBuffer <= AbvEsBufAllocated.Length && AbvEsBufAllocated[ElementaryStreamBuffer - 1])
            {
                MpegAccessUnit->AuSize = MPEG_AVC_ES_SIZE;
            }
            else
            {
                MpegAccessUnit->AuSize = MPEG_ATRAC_ES_SIZE;
            }

            return 0;
        }
Exemple #7
0
        public int sceMpegInitAu(SceMpegPointer *sceMpegPointer, int elementaryStreamBuffer,
                                 out SceMpegAu mpegAccessUnit)
        {
            var mpeg = GetMpeg(sceMpegPointer);

            mpegAccessUnit          = default(SceMpegAu);
            mpegAccessUnit.EsBuffer = elementaryStreamBuffer;

            if (elementaryStreamBuffer >= 1 && elementaryStreamBuffer <= AbvEsBufAllocated.Length &&
                AbvEsBufAllocated[elementaryStreamBuffer - 1])
            {
                mpegAccessUnit.AuSize = MPEG_AVC_ES_SIZE;
                mpeg.AvcAu.SceMpegAu  = mpegAccessUnit;
            }
            else
            {
                mpegAccessUnit.AuSize  = MPEG_ATRAC_ES_SIZE;
                mpeg.AtracAu.SceMpegAu = mpegAccessUnit;
            }

            return(0);
        }
Exemple #8
0
        public int sceMpegAvcDecode(SceMpegPointer* Mpeg, SceMpegAu* MpegAccessUnit, int FrameWidth, PspPointer* OutputBufferPointer, int* Init)
        {
            CheckEnabledMpeg();

            if (*Init == 1)
            {
                throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
            }
            var SceMpegData = GetSceMpegData(Mpeg);

            //Console.Error.WriteLine("0x{0:X}", PspMemory.PointerToPspAddress(OutputBuffer));

            var OutputBuffer = (byte*)PspMemory.PspAddressToPointerSafe(OutputBufferPointer->Address);

            for (int n = 0; n < FrameWidth * 272 * 4; n++)
            {
                OutputBuffer[n] = 0xFF;
            }

            SceMpegData->AvcFrameStatus = 1;
            *Init = SceMpegData->AvcFrameStatus;
            //throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
            return 0;
        }
Exemple #9
0
 public int sceMpegGetAvcAu(SceMpeg* Mpeg, SceMpegStream* pStream, SceMpegAu* pAu, int* iUnk)
 {
     //throw(new NotImplementedException());
     return 0;
 }
Exemple #10
0
        //[HlePspNotImplemented]
        public int sceMpegGetAvcAu(SceMpegPointer *SceMpegPointer, StreamId StreamId, out SceMpegAu MpegAccessUnit,
                                   int *DataAttributes)
        {
            if (DataAttributes != null)
            {
                *DataAttributes = 1;
            }

            var Mpeg = GetMpeg(SceMpegPointer);

            if (!Mpeg.HasData)
            {
                throw new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA);
            }
            MpegAccessUnit = Mpeg.GetAvcAu(StreamId);
            return(0);
        }
Exemple #11
0
        public int sceMpegGetAtracAu(SceMpegPointer *SceMpegPointer, StreamId StreamId, out SceMpegAu MpegAccessUnit,
                                     out PspPointer Atrac3PlusPointer)
        {
            var Mpeg = GetMpeg(SceMpegPointer);

            if (!Mpeg.HasData)
            {
                throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
            }
            MpegAccessUnit            = Mpeg.GetAtracAu(StreamId);
            Atrac3PlusPointer.Address = 0;
            return(0);
        }
Exemple #12
0
 public int sceMpegAvcDecode(SceMpeg* Mpeg, SceMpegAu* pAu, int iFrameWidth, void* pBuffer, int* iInit)
 {
     //throw(new NotImplementedException());
     return 0;
 }
Exemple #13
0
        public int sceMpegGetAvcAu(SceMpegPointer* SceMpegPointer, StreamId StreamId, out SceMpegAu MpegAccessUnit, int* DataAttributes)
        {
            if (DataAttributes != null)
            {
                *DataAttributes = 1;
            }

            var Mpeg = GetMpeg(SceMpegPointer);
            if (!Mpeg.HasData) throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_DATA));
            MpegAccessUnit = Mpeg.GetAvcAu(StreamId);
            return 0;
        }
Exemple #14
0
        public int sceMpegAtracDecode(SceMpegPointer* Mpeg, SceMpegAu* MpegAccessUnit, byte* OutputBuffer, int Init)
        {
            CheckEnabledMpeg();

            throw (new SceKernelException(SceKernelErrors.ERROR_ATRAC_NO_DATA));
        }
Exemple #15
0
 public int sceMpegInitAu(SceMpeg* Mpeg, void* pEsBuffer, SceMpegAu* pAu)
 {
     //throw(new NotImplementedException());
     return -1;
 }
Exemple #16
0
 public int sceMpegAtracDecode(SceMpeg* Mpeg, SceMpegAu* pAu, void* pBuffer, int iInit)
 {
     //throw(new NotImplementedException());
     return -1;
 }
Exemple #17
0
		public void AvcDecode(SceMpegAu* MpegAccessUnit, int FrameWidth, GuPixelFormats GuPixelFormat, PspPointer OutputBuffer)
		{
			if (MpegAccessUnit != null) *MpegAccessUnit = GetAvcAu(StreamId.Avc);

			while (MpegPsDemuxer.HasMorePackets)
			{
				if (!DecodePsPacket()) return;
			}

			if (VideoStream.Length <= 0) return;

			// Buffer 1MB
			//if (VideoStream.Length <= 1 * 1024 * 1024) return;

			try
			{
				//if (H264FrameDecoder.HasMorePackets)
				{
					//Console.WriteLine("VideoStream.Length: {0}", VideoStream.Length);
					var Frame = H264FrameDecoder.DecodeFrame();

					ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.DarkGreen, () => { Console.WriteLine("DecodedFrame: {0}", FrameIndex); });

					var Bitmap = FrameUtils.imageFromFrameWithoutEdges(Frame, FrameWidth, 272);

					var TempBuffer = new byte[PixelFormatDecoder.GetPixelsSize(GuPixelFormat, Bitmap.Width * Bitmap.Height)];
					fixed (byte* TempBufferPtr = TempBuffer)
					{
						var TempBufferPtr2 = TempBufferPtr;
						Bitmap.LockBitsUnlock(PixelFormat.Format32bppArgb, (BitmapData) =>
						{
							var InputBuffer = (OutputPixel*)BitmapData.Scan0.ToPointer();
							int Count = Bitmap.Width * Bitmap.Height;

							for (int n = 0; n < Count; n++)
							{
								var Color = InputBuffer[n];
								InputBuffer[n].R = Color.B;
								InputBuffer[n].G = Color.G;
								InputBuffer[n].B = Color.R;
								InputBuffer[n].A = 0xFF;
							}

							PixelFormatDecoder.Encode(GuPixelFormat, InputBuffer, TempBufferPtr2, Bitmap.Width * Bitmap.Height);
							PixelFormatDecoder.Encode(PspDisplay.CurrentInfo.PixelFormat, InputBuffer, (byte*)Memory.PspAddressToPointerSafe(PspDisplay.CurrentInfo.FrameAddress), 512, Bitmap.Width, Bitmap.Height);
							PspDisplay.CurrentInfo.PlayingVideo = true;
						});
						PspDisplay.CurrentInfo.PlayingVideo = true;
						Memory.WriteBytes(OutputBuffer.Address, TempBufferPtr, TempBuffer.Length);
						GpuImpl.InvalidateCache(OutputBuffer.Address, TempBuffer.Length);
					}

					if (SaveBitmapFrame) Bitmap.Save(@"c:\temp\frame" + (FrameIndex) + ".png");
					FrameIndex++;
				}
				//PixelFormat

				return;
			}
			catch (EndOfStreamException)
			{
				ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.Red, () => { Console.WriteLine("H264FrameDecoder.DecodeFrame: EndOfStreamException"); });
			}
		}
Exemple #18
0
		public void AtracDecode(SceMpegAu* MpegAccessUnit, byte* OutputBuffer, bool Init)
		{
			if (MpegAccessUnit != null) *MpegAccessUnit = GetAtracAu(StreamId.Atrac);
		}
Exemple #19
0
        public int sceMpegInitAu(SceMpegPointer* SceMpegPointer, int ElementaryStreamBuffer, out SceMpegAu MpegAccessUnit)
        {
            var Mpeg = GetMpeg(SceMpegPointer);
            MpegAccessUnit = default(SceMpegAu);
            MpegAccessUnit.EsBuffer = ElementaryStreamBuffer;

            if (ElementaryStreamBuffer >= 1 && ElementaryStreamBuffer <= AbvEsBufAllocated.Length && AbvEsBufAllocated[ElementaryStreamBuffer - 1])
            {
                MpegAccessUnit.AuSize = MPEG_AVC_ES_SIZE;
                Mpeg.AvcAu.SceMpegAu = MpegAccessUnit;
            }
            else
            {
                MpegAccessUnit.AuSize = MPEG_ATRAC_ES_SIZE;
                Mpeg.AtracAu.SceMpegAu = MpegAccessUnit;
            }

            return 0;
        }