資源簡介
??礖.264解碼 yv12轉換成rgb格式
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Runtime.InteropServices;
using?System.Drawing;
using?System.IO;
namespace?NetViewApp
{
????public?class?YV12ToBMP
????{
????????///BMP文件頭結構
????????[StructLayout(LayoutKind.Sequential)]
????????public?struct?BITMAPINFOHEADER
????????{
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?int?biSize;
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?Int32?biWidth;
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?Int32?biHeight;
????????????[MarshalAs(UnmanagedType.I2)]
????????????public?short?biPlanes;
????????????[MarshalAs(UnmanagedType.I2)]
????????????public?short?biBitCount;
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?UInt32?biCompression;
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?UInt32?biSizeImage;
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?Int32?biXPelsPerMeter;
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?Int32?biYPelsPerMeter;
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?UInt32?biClrUsed;
????????????[MarshalAs(UnmanagedType.I4)]
????????????public?UInt32?biClrImportant;
????????}
????????public?BITMAPINFOHEADER?BMPInfoHead()
????????{
????????????BITMAPINFOHEADER?myheader?=?new?BITMAPINFOHEADER();
????????????myheader.biSize?=?40;
????????????myheader.biPlanes?=?1;
????????????myheader.biBitCount?=?24;
????????????myheader.biCompression?=?0;
????????????myheader.biWidth?=?width;
????????????myheader.biHeight?=?-height;??//?bmp.Height;
????????????//myheader.biSizeImage?=?(uint)rgb24.Length;
????????????//myheader.biXPelsPerMeter?=?0;
????????????//myheader.biYPelsPerMeter?=?0;
????????????//myheader.biClrUsed?=?0;
????????????//myheader.biClrImportant?=?0;
????????????
????????????return?myheader;
????????????//結構體指針用法
????????????//IntPtr?pp?=?Marshal.AllocHGlobal(Marshal.SizeOf(myheader));
????????????//Marshal.StructureToPtr(myheader?pp?true);
????????????//Marshal.FreeHGlobal(pp);
????????}
????????private?int?width;
????????private?int?height;
????????private?int?length;
????????private?int?v;??//v值的起始位置
????????private?int?u;??//u值的起始位置
????????private?int[]?Table_fv1;
????????private?int[]?Table_fv2;
????????private?int[]?Table_fu1;
????????private?int[]?Table_fu2;
????????private?int[]?rgb?=?new?int[3];
????????
????????private?int?rdif?invgdif?bdif;
????????private?int?m?n?i?j?hfWidth;
????????private?bool?addHalf?=?true;
????????private?int?py;
????????private?int?pos?pos1;//dopod?595?圖像調整
????????private?byte?temp;
????????private?int?bytePerLine;
????????private?byte[]?rgb24;
????????public?YV12ToBMP(int?iWidth?int?iHeight)
????????{
????????????Table_fv1?=?new?int[256]?{?-180?-179?-177?-176?-174?-173?-172?-170?-169?-167?-166?-165?-163?-162?-160?-159?-158?-156?-155?-153?-152?-151?
?????????
- 上一篇:曼哈頓路徑預測算法C#尋路
- 下一篇:c#時間片輪轉算法
評論
共有 條評論