⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ffimgfmt.cpp

📁 mpeg4 video codec mpeg4 video codec
💻 CPP
📖 第 1 页 / 共 2 页
字号:
       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_RGB32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_VYUY:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_RGB32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_ABGR:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_RGB32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_RGBA:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_ABGR ,       FF_CSP_BGR32,       FF_CSP_RGB32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_BGR32:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_RGB32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_BGR24:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_RGB24,       FF_CSP_BGR32,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_RGB32,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_BGR15:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_BGR32,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR24,       FF_CSP_BGR16,       FF_CSP_RGB32,       FF_CSP_RGB24,       FF_CSP_RGB15,       FF_CSP_RGB16,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_BGR16:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_BGR32,       FF_CSP_BGR24,       FF_CSP_BGR15,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_RGB32,       FF_CSP_RGB24,       FF_CSP_RGB15,       FF_CSP_RGB16,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,        FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_RGB32:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR15,       FF_CSP_BGR16,       FF_CSP_RGB15,       FF_CSP_RGB16,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_RGB24:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_BGR24,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_RGB32,       FF_CSP_BGR15,       FF_CSP_BGR16,       FF_CSP_RGB15,       FF_CSP_RGB16,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_RGB15:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_BGR15,       FF_CSP_RGB32,       FF_CSP_RGB24,       FF_CSP_RGB16,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_BGR24,       FF_CSP_BGR16,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_RGB16:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_RGB15,       FF_CSP_RGB32,       FF_CSP_RGB24,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_BGR24,       FF_CSP_BGR15,       FF_CSP_BGR16,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_PAL8:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_RGB32,       FF_CSP_BGR32,       FF_CSP_RGB24,       FF_CSP_BGR24,       FF_CSP_RGB15,       FF_CSP_BGR15,       FF_CSP_RGB16,       FF_CSP_BGR16,       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_CLJR:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_RGB32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_Y800:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_RGB32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_NULL      };     bestcsps=best;     break;     }   case FF_CSP_NV12:    {     static const int best[FF_CSPS_NUM]=      {       FF_CSP_420P ,       FF_CSP_422P ,       FF_CSP_444P ,       FF_CSP_411P ,       FF_CSP_410P ,       FF_CSP_YUY2 ,       FF_CSP_UYVY ,       FF_CSP_YVYU ,       FF_CSP_VYUY ,       FF_CSP_ABGR ,       FF_CSP_RGBA ,       FF_CSP_BGR32,       FF_CSP_RGB32,       FF_CSP_BGR24,       FF_CSP_RGB24,       FF_CSP_BGR16,       FF_CSP_RGB16,       FF_CSP_BGR15,       FF_CSP_RGB15,       FF_CSP_NULL       };     bestcsps=best;       break;    }      default:return FF_CSP_NULL;  }  if (rank) *rank=99;  while (*bestcsps)  {   if (*bestcsps&wantedCSPS)    return *bestcsps|(inCSP&~FF_CSPS_MASK);   bestcsps++;   if (rank) (*rank)--;  }   return FF_CSP_NULL;}bool csp_inFOURCCmask(int x,FOURCC fcc){ switch (fcc)  {   case FOURCC_MASK_YUV:return !!csp_isYUV(x);   case FOURCC_MASK_RGB:return !!csp_isRGB(x);   case FOURCC_MASK_PAL:return !!csp_isPAL(x);   default:return false;  }}bool TcspInfos::TsortFc::operator ()(const TcspInfo* csp1,const TcspInfo* csp2){ int rank1;csp_bestMatch(csp,csp1->id,&rank1); int rank2;csp_bestMatch(csp,csp2->id,&rank2); return rank1>rank2;}void TcspInfos::sort(int csp){ std::sort(begin(),end(),TsortFc(csp&FF_CSPS_MASK));}int getBMPcolorspace(const BITMAPINFOHEADER *hdr,const TcspInfos &forcedCsps){ int csp;  switch(hdr->biCompression)  {   case BI_RGB:    switch (hdr->biBitCount)     {      case  8:csp=FF_CSP_PAL8|FF_CSP_FLAGS_VFLIP;break;      case 15:csp=FF_CSP_RGB15|FF_CSP_FLAGS_VFLIP;break;      case 16:csp=FF_CSP_RGB16|FF_CSP_FLAGS_VFLIP;break;      case 24:csp=FF_CSP_RGB24|FF_CSP_FLAGS_VFLIP;break;      case 32:csp=FF_CSP_RGB32|FF_CSP_FLAGS_VFLIP;break;      default:return FF_CSP_NULL;     }     break;   case FOURCC_I420:   case FOURCC_IYUV:    csp=FF_CSP_420P|FF_CSP_FLAGS_YUV_ADJ|FF_CSP_FLAGS_YUV_ORDER;    break;   case FOURCC_YV12:    csp=FF_CSP_420P|FF_CSP_FLAGS_YUV_ADJ;    break;   case FOURCC_YUYV:   case FOURCC_YUY2:   case FOURCC_V422:    csp=FF_CSP_YUY2;    break;   case FOURCC_YVYU:    csp=FF_CSP_YVYU;    break;   case FOURCC_UYVY:    csp=FF_CSP_UYVY;    break;   case FOURCC_VYUY:    csp=FF_CSP_VYUY;    break;   case FOURCC_Y800:    csp=FF_CSP_Y800;    break;    case FOURCC_444P:   case FOURCC_YV24:    csp=FF_CSP_444P;    break;    case FOURCC_422P:   case FOURCC_YV16:    csp=FF_CSP_422P;    break;    case FOURCC_411P:   case FOURCC_Y41B:    csp=FF_CSP_411P;    break;    case FOURCC_410P:    csp=FF_CSP_410P;    break;    default:    return FF_CSP_NULL;  } bool ok;  if (!forcedCsps.empty())  ok=std::find(forcedCsps.begin(),forcedCsps.end(),csp_getInfo(csp))!=forcedCsps.end(); else   ok=true; return ok?csp:FF_CSP_NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -