当前位置: 首页 > news >正文

卖网站模板wordpress入门

卖网站模板,wordpress入门,宣传软文范例,wordpress前端修改影响升级目录 概述 流程 相关流程 初始化方法 初始化代码 转换方法 转换代码 释放方法 整体代码介绍 代码路径 概述 本篇简单说一下基于FFmpeg的libswscale的颜色空间转换#xff1b;Libswscale里面实现了各种图像像素格式的转换#xff0c;例如#xff1a;YUV与RGB之间的…目录 概述 流程 相关流程 初始化方法 初始化代码 转换方法 转换代码 释放方法 整体代码介绍 代码路径 概述 本篇简单说一下基于FFmpeg的libswscale的颜色空间转换Libswscale里面实现了各种图像像素格式的转换例如YUV与RGB之间的转换等这里简单说以下Libswscale的颜色空间转换的使用方法。 流程 相关流程 Libswscale使用起来很方便最主要的函数只有3个 1       sws_getContext()使用参数初始化SwsContext结构体。 2       sws_scale()转换一帧图像。 3       sws_freeContext()释放SwsContext结构体。 其中sws_getContext()也可以用另一个接口函数sws_getCachedContext()取代。 初始化方法 初始化SwsContext我们这里选用sws_getContext()除了上述函数之外还有另一种方法更加灵活可以配置更多的参数。该方法调用的函数如下所示 1)  sws_alloc_context()为SwsContext结构体分配内存。 2)  av_opt_set_XXX()通过av_opt_set_int()av_opt_set()…等等一系列方法设置SwsContext结构体的值。在这里需要注意SwsContext结构体的定义看不到所以不能对其中的成员变量直接进行赋值必须通过av_opt_set()这类的API才能对其进行赋值。 3)  sws_init_context()初始化SwsContext结构体。 与第一种方式相比这种复杂的方法可以配置一些sws_getContext()配置不了的参数。比如说设置图像的YUV像素的取值范围是JPEG标准Y、U、V取值范围都是0-255还是MPEG标准Y取值范围是16-235U、V的取值范围是16-240。 初始化代码 m_imgConvertCtx sws_getContext(cfg-srcWide, cfg-srcHigh, srcIter-second,cfg-dstWide, cfg-dstHigh, dstIter-second, SWS_BICUBIC, NULL, NULL, NULL); 转换方法 对于转换函数就没有特别说明的了调用sws_scale();值得注意就是这个函数的参数的传递需要按照对应的颜色空间进行排列 转换代码 sws_scale(m_imgConvertCtx, m_srcPointers, m_srcLinesizes, 0, m_srcHigh, m_dstPointers, m_dstLinesizes); 释放方法 if (nullptr ! m_imgConvertCtx){sws_freeContext(m_imgConvertCtx);}m_imgConvertCtx nullptr; 整体代码介绍 对应FFmpeg 颜色空间转换的demo这边封装成了一个类函数主要提供了  NV12、NV21、YUV420P、YUV422P、RGB24、RGBA相互转换功能。如需扩展则实现对应函数即可。 头文件:ColorConversionFFmpeg.h /*** FFmpeg的颜色空间转换* YUV Transformation** 梁启东 qidong.liang* 18088708700163.com* https://blog.csdn.net/u011645307*** 本程序实现了FFmpeg的YUV数据之间的转换和YUV与RGB的转换。* 提供了如下* FFMPEG_AV_PIX_FMT_NOKNOW,* FFMPEG_AV_PIX_FMT_NV12,* FFMPEG_AV_PIX_FMT_NV21,* FFMPEG_AV_PIX_FMT_YUV420P,* FFMPEG_AV_PIX_FMT_YUV422P,* FFMPEG_AV_PIX_FMT_RGB24,* FFMPEG_AV_PIX_FMT_RGBA* 相互转换功能*/ #ifndef COLOR_CONVERSION_FFMPEG_H #define COLOR_CONVERSION_FFMPEG_H#ifdef _WIN32 //Windows extern C { #include libswscale/swscale.h #include libavutil/opt.h #include libavutil/imgutils.h }; #else //Linux... #ifdef __cplusplus extern C { #endif #include libavutil/opt.h #include libswscale/swscale.h #include libavutil/imgutils.h #ifdef __cplusplus }; #endif #endif#include map #include functional#ifndef FFMPEG_PIX_FORMAT #define FFMPEG_PIX_FORMAT typedef enum FFmpegAVPixelFormat {FFMPEG_AV_PIX_FMT_NOKNOW,FFMPEG_AV_PIX_FMT_NV12,FFMPEG_AV_PIX_FMT_NV21,FFMPEG_AV_PIX_FMT_YUV420P,FFMPEG_AV_PIX_FMT_YUV422P,FFMPEG_AV_PIX_FMT_RGB24,FFMPEG_AV_PIX_FMT_RGBA}FFmpegAVPixelFormat;#endif//FFMPEG_PIX_FORMAT #ifndef FFMPEG_SCALE_CONFIG #define FFMPEG_SCALE_CONFIG typedef struct FFmpegSwscaleConfig {unsigned int srcWide;unsigned int srcHigh;FFmpegAVPixelFormat srcFormat;unsigned int dstWide;unsigned int dstHigh;FFmpegAVPixelFormat dstFormat;FFmpegSwscaleConfig(){srcWide 0;srcHigh 0;srcFormat FFMPEG_AV_PIX_FMT_NOKNOW;dstWide 0;dstHigh 0;dstFormat FFMPEG_AV_PIX_FMT_NOKNOW;} }FFmpegSwscaleConfig; #endif // !FFMPEG_SCALE_CONFIGclass ColorConversionFFmpeg { public:ColorConversionFFmpeg();~ColorConversionFFmpeg();long Init(FFmpegSwscaleConfig* cfg);long Conversion(const char* inputBuff, char* outputBuff);long UnInit();private:long BuffToAVPixFmtYUV420P(char* inputBuff, unsigned char** pixBuff);long BuffToAVPixFmtRGBA(char* inputBuff, unsigned char** pixBuff);long BuffToAVPixFmtRGB24(char* inputBuff, unsigned char** pixBuff);long BuffToAVPixFmtNV12(char* inputBuff, unsigned char** pixBuff);long BuffToAVPixFmtNV21(char* inputBuff, unsigned char** pixBuff);long BuffToAVPixFmtYUV422P(char* inputBuff, unsigned char** pixBuff);long AVPixFmtYUV420PToBuff(unsigned char** pixBuff, char* outputBuff);long AVPixFmtNV12ToBuff(unsigned char** pixBuff, char* outputBuff);long AVPixFmtNV21ToBuff(unsigned char** pixBuff, char* outputBuff);long AVPixFmtYUV422PToBuff(unsigned char** pixBuff, char* outputBuff);long AVPixFmtRGB24ToBuff(unsigned char** pixBuff, char* outputBuff);long AVPixFmtRGBAToBuff(unsigned char** pixBuff, char* outputBuff);private:SwsContext* m_imgConvertCtx;uint8_t* m_srcPointers[4]{ nullptr,nullptr,nullptr,nullptr };int m_srcLinesizes[4]{0,0,0,0};uint8_t* m_dstPointers[4]{ nullptr,nullptr,nullptr,nullptr };int m_dstLinesizes[4]{ 0,0,0,0 };int m_srcHigh;int m_srcWide;std::function long(char* inputBuff, unsigned char** pixBuff) m_infun;std::function long(unsigned char** pixBuff, char* outputBuff) m_outfun;std::mapFFmpegAVPixelFormat, AVPixelFormat m_PixelFormatMap;std::mapFFmpegAVPixelFormat,std::function long(char* inputBuff,unsigned char** pixBuff) m_srcFormatFunMap;std::mapFFmpegAVPixelFormat,std::function long(unsigned char** pixBuff,char* outputBuff) m_dstFormatFunMap; }; #endif//COLOR_CONVERSION_FFMPEG_H源文件ColorConversionFFmpeg.cpp #include ColorConversionFFmpeg.hColorConversionFFmpeg::ColorConversionFFmpeg(): m_imgConvertCtx(nullptr), m_infun(nullptr), m_outfun(nullptr), m_srcHigh(0), m_srcWide(0) {m_PixelFormatMap.insert(std::pairFFmpegAVPixelFormat, AVPixelFormat(FFMPEG_AV_PIX_FMT_NV12, AV_PIX_FMT_NV12));m_PixelFormatMap.insert(std::pairFFmpegAVPixelFormat, AVPixelFormat(FFMPEG_AV_PIX_FMT_NV21, AV_PIX_FMT_NV21));m_PixelFormatMap.insert(std::pairFFmpegAVPixelFormat, AVPixelFormat(FFMPEG_AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV420P));m_PixelFormatMap.insert(std::pairFFmpegAVPixelFormat, AVPixelFormat(FFMPEG_AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV422P));m_PixelFormatMap.insert(std::pairFFmpegAVPixelFormat, AVPixelFormat(FFMPEG_AV_PIX_FMT_RGB24, AV_PIX_FMT_RGB24));m_PixelFormatMap.insert(std::pairFFmpegAVPixelFormat, AVPixelFormat(FFMPEG_AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA));m_srcFormatFunMap[FFMPEG_AV_PIX_FMT_NV12] std::bind(ColorConversionFFmpeg::BuffToAVPixFmtNV12,this,std::placeholders::_1,std::placeholders::_2);m_srcFormatFunMap[FFMPEG_AV_PIX_FMT_NV21] std::bind(ColorConversionFFmpeg::BuffToAVPixFmtNV21,this,std::placeholders::_1,std::placeholders::_2);m_srcFormatFunMap[FFMPEG_AV_PIX_FMT_YUV420P] std::bind(ColorConversionFFmpeg::BuffToAVPixFmtYUV420P,this,std::placeholders::_1,std::placeholders::_2);m_srcFormatFunMap[FFMPEG_AV_PIX_FMT_YUV422P] std::bind(ColorConversionFFmpeg::BuffToAVPixFmtYUV422P,this,std::placeholders::_1,std::placeholders::_2);m_srcFormatFunMap[FFMPEG_AV_PIX_FMT_RGB24] std::bind(ColorConversionFFmpeg::BuffToAVPixFmtRGB24,this,std::placeholders::_1,std::placeholders::_2);m_srcFormatFunMap[FFMPEG_AV_PIX_FMT_RGBA] std::bind(ColorConversionFFmpeg::BuffToAVPixFmtRGBA,this,std::placeholders::_1,std::placeholders::_2);m_dstFormatFunMap[FFMPEG_AV_PIX_FMT_NV12] std::bind(ColorConversionFFmpeg::AVPixFmtNV12ToBuff,this,std::placeholders::_1,std::placeholders::_2);m_dstFormatFunMap[FFMPEG_AV_PIX_FMT_NV21] std::bind(ColorConversionFFmpeg::AVPixFmtNV21ToBuff,this,std::placeholders::_1,std::placeholders::_2);m_dstFormatFunMap[FFMPEG_AV_PIX_FMT_YUV420P] std::bind(ColorConversionFFmpeg::AVPixFmtYUV420PToBuff,this,std::placeholders::_1,std::placeholders::_2);m_dstFormatFunMap[FFMPEG_AV_PIX_FMT_YUV422P] std::bind(ColorConversionFFmpeg::AVPixFmtYUV422PToBuff,this,std::placeholders::_1,std::placeholders::_2);m_dstFormatFunMap[FFMPEG_AV_PIX_FMT_RGB24] std::bind(ColorConversionFFmpeg::AVPixFmtRGB24ToBuff,this,std::placeholders::_1,std::placeholders::_2);m_dstFormatFunMap[FFMPEG_AV_PIX_FMT_RGBA] std::bind(ColorConversionFFmpeg::AVPixFmtRGBAToBuff,this,std::placeholders::_1,std::placeholders::_2);}ColorConversionFFmpeg::~ColorConversionFFmpeg() {m_PixelFormatMap.clear();m_srcFormatFunMap.clear();m_dstFormatFunMap.clear();}long ColorConversionFFmpeg::Init(FFmpegSwscaleConfig* cfg) {if (nullptr cfg){return -1;}auto srcIter m_PixelFormatMap.find(cfg-srcFormat);auto dstIter m_PixelFormatMap.find(cfg-dstFormat);if (srcIter m_PixelFormatMap.end() ||dstIter m_PixelFormatMap.end()){return -2;}auto srcFormatFunIter m_srcFormatFunMap.find(cfg-srcFormat);auto dstFormatFunIter m_dstFormatFunMap.find(cfg-dstFormat);if (dstFormatFunIter m_dstFormatFunMap.end() ||srcFormatFunIter m_srcFormatFunMap.end()){return -3;}m_infun srcFormatFunIter-second;m_outfun dstFormatFunIter-second;int nSrctBuffLen 0, nDstBuffLen 0;nSrctBuffLen av_image_alloc(m_srcPointers, m_srcLinesizes, cfg-srcWide, cfg-srcHigh, srcIter-second, 1);if (nSrctBuffLen 0){return -4;}nDstBuffLen av_image_alloc(m_dstPointers, m_dstLinesizes, cfg-dstWide, cfg-dstHigh, dstIter-second, 1);if (nDstBuffLen 0 ){av_freep(m_srcPointers[0]);return -5;}m_imgConvertCtx sws_getContext(cfg-srcWide, cfg-srcHigh, srcIter-second,cfg-dstWide, cfg-dstHigh, dstIter-second, SWS_BICUBIC, NULL, NULL, NULL);if (nullptr m_imgConvertCtx){av_freep(m_srcPointers);av_freep(m_dstPointers);return -6;}m_srcHigh cfg-srcHigh;m_srcWide cfg-srcWide;return 0; }long ColorConversionFFmpeg::Conversion(const char* inputBuff, char* outputBuff) {if (nullptr m_infun ||nullptr m_outfun ||nullptr m_dstPointers[0] ||nullptr m_srcPointers[0] ||nullptr m_imgConvertCtx){return 0;}m_infun(const_castchar*(inputBuff), m_srcPointers);sws_scale(m_imgConvertCtx, m_srcPointers, m_srcLinesizes, 0, m_srcHigh, m_dstPointers, m_dstLinesizes);m_outfun(m_dstPointers, outputBuff);return 0; }long ColorConversionFFmpeg::UnInit() {if (m_srcPointers){av_freep(m_srcPointers);}if (m_dstPointers){av_freep(m_dstPointers);}m_dstPointers[0] nullptr;m_srcPointers[0] nullptr;if (nullptr ! m_imgConvertCtx){sws_freeContext(m_imgConvertCtx);}m_imgConvertCtx nullptr;m_outfun nullptr;m_infun nullptr;return 0; }long ColorConversionFFmpeg::BuffToAVPixFmtYUV420P(char* inputBuff, unsigned char** pixBuff) {memcpy(pixBuff[0], inputBuff, static_castsize_t(m_srcWide * m_srcHigh)); //Ymemcpy(pixBuff[1], inputBuff m_srcWide * m_srcHigh, m_srcWide * m_srcHigh / 4); //Umemcpy(pixBuff[2], inputBuff m_srcWide * m_srcHigh * 5 / 4, m_srcWide * m_srcHigh / 4); //Vreturn 0; }long ColorConversionFFmpeg::BuffToAVPixFmtRGBA(char* inputBuff, unsigned char** pixBuff) {memcpy(pixBuff[0], inputBuff, m_srcWide * m_srcHigh*4);return 0; }long ColorConversionFFmpeg::BuffToAVPixFmtRGB24(char* inputBuff, unsigned char** pixBuff) {memcpy(pixBuff[0], inputBuff, m_srcWide * m_srcHigh * 3);return 0; }long ColorConversionFFmpeg::BuffToAVPixFmtNV12(char* inputBuff, unsigned char** pixBuff) {memcpy(pixBuff[0], inputBuff, m_srcHigh*m_srcWide); //Ymemcpy(pixBuff[1], inputBuff m_srcHigh * m_srcWide, m_srcHigh*m_srcWide / 2); //Uvreturn 0; }long ColorConversionFFmpeg::BuffToAVPixFmtNV21(char* inputBuff, unsigned char** pixBuff) {memcpy(pixBuff[0], inputBuff, m_srcHigh * m_srcWide); //Ymemcpy(pixBuff[1], inputBuff m_srcHigh * m_srcWide, m_srcHigh * m_srcWide / 2); //Uvreturn 0; }long ColorConversionFFmpeg::BuffToAVPixFmtYUV422P(char* inputBuff, unsigned char** pixBuff) {memcpy(pixBuff[0], inputBuff, m_srcWide * m_srcHigh); //Ymemcpy(pixBuff[1], inputBuff m_srcWide * m_srcHigh, m_srcWide * m_srcHigh / 2); //Umemcpy(pixBuff[2], inputBuff m_srcWide * m_srcHigh * 3 / 2, m_srcWide * m_srcHigh / 2); //Vreturn 0; }long ColorConversionFFmpeg::AVPixFmtYUV420PToBuff(unsigned char** pixBuff, char* outputBuff) {memcpy(outputBuff, pixBuff[0], m_srcWide * m_srcHigh); //Ymemcpy(outputBuff m_srcWide * m_srcHigh, pixBuff[1], m_srcWide * m_srcHigh / 4); //Umemcpy(outputBuff m_srcWide * m_srcHigh * 5 / 4, pixBuff[2], m_srcWide * m_srcHigh / 4); //Vreturn 0; }long ColorConversionFFmpeg::AVPixFmtNV12ToBuff(unsigned char** pixBuff, char* outputBuff) {memcpy( outputBuff, pixBuff[0], m_srcHigh * m_srcWide); //Ymemcpy( outputBuff m_srcHigh * m_srcWide, pixBuff[1], m_srcHigh * m_srcWide / 2); //Uvreturn 0; }long ColorConversionFFmpeg::AVPixFmtNV21ToBuff(unsigned char** pixBuff, char* outputBuff) {memcpy(outputBuff, pixBuff[0], m_srcHigh * m_srcWide); //Ymemcpy(outputBuff m_srcHigh * m_srcWide, pixBuff[1], m_srcHigh * m_srcWide / 2); //Uvreturn 0; }long ColorConversionFFmpeg::AVPixFmtYUV422PToBuff(unsigned char** pixBuff, char* outputBuff) {memcpy(outputBuff, pixBuff[0], m_srcWide * m_srcHigh); //Ymemcpy(outputBuff m_srcWide * m_srcHigh, pixBuff[1], m_srcWide * m_srcHigh / 2); //Umemcpy(outputBuff m_srcWide * m_srcHigh * 3 / 2, pixBuff[2], m_srcWide * m_srcHigh / 2); //Vreturn 0; }long ColorConversionFFmpeg::AVPixFmtRGB24ToBuff(unsigned char** pixBuff, char* outputBuff) {memcpy(outputBuff, pixBuff[0], m_srcWide * m_srcHigh * 3);return 0; }long ColorConversionFFmpeg::AVPixFmtRGBAToBuff(unsigned char** pixBuff, char* outputBuff) {memcpy(outputBuff, pixBuff[0], m_srcWide * m_srcHigh * 4);return 0; }测试文件main.cpp /** * FFmpeg的颜色空间转换的测试程序 * YUV Transformation * * 梁启东 qidong.liang * 18088708700163.com * https://blog.csdn.net/u011645307 * * * FFmpeg的颜色空间转换的测试程序 */#include iostream #include ColorConversionFFmpeg.h#define NV12_To_I420 0 #define I420_To_NV12 0 #define NV21_To_I420 0 #define I420_To_NV21 0 #define I420_To_RGB32 0 #define RGB32_To_I420 0 #define I420_To_RGB24 0 #define RGB24_To_I420 0 #define NV12_To_YUV422P 0 #define YUV422P_To_NV12 1 int main() {FILE* file_in nullptr;FILE* file_out nullptr;char* input_name nullptr;char* output_name nullptr;int w 0, h 0;float flotScale 0;int out_w 0, out_h 0;float out_flotScale 0;FFmpegSwscaleConfig cfg;ColorConversionFFmpeg obj;#if NV12_To_YUV422Pinput_name const_castchar*(../in/nv21_480x272.yuv);output_name const_castchar*(../out/yuvv422p_480x272.yuv);cfg.srcWide 480;cfg.dstWide 480;cfg.dstHigh 272;cfg.srcHigh 272;cfg.srcFormat FFMPEG_AV_PIX_FMT_NV12;cfg.dstFormat FFMPEG_AV_PIX_FMT_YUV422P;w 480;h 272;flotScale 1.5;out_w 480;out_h 272;out_flotScale 2;#endif#if YUV422P_To_NV12input_name const_castchar*(../in/YV16(422)_480x272.yuv);output_name const_castchar*(../out/nv21_480x272.yuv);cfg.srcWide 480;cfg.dstWide 480;cfg.dstHigh 272;cfg.srcHigh 272;cfg.srcFormat FFMPEG_AV_PIX_FMT_YUV422P;cfg.dstFormat FFMPEG_AV_PIX_FMT_NV12;w 480;h 272;flotScale 2;out_w 480;out_h 272;out_flotScale 1.5;#endif#if NV21_To_I420input_name const_castchar*(../in/nv21_480x272.yuv);output_name const_castchar*(../out/I420_480x272.yuv);cfg.srcWide 480;cfg.dstWide 480;cfg.dstHigh 272;cfg.srcHigh 272;cfg.srcFormat FFMPEG_AV_PIX_FMT_NV21;cfg.dstFormat FFMPEG_AV_PIX_FMT_YUV420P;w 480;h 272;flotScale 1.5;out_w 480;out_h 272;out_flotScale 1.5;#endif#if I420_To_NV21input_name const_castchar*(../in/I420_480x272.yuv);output_name const_castchar*(../out/nv21_480x272.yuv);cfg.srcWide 480;cfg.dstWide 480;cfg.dstHigh 272;cfg.srcHigh 272;cfg.srcFormat FFMPEG_AV_PIX_FMT_YUV420P;cfg.dstFormat FFMPEG_AV_PIX_FMT_NV21;w 480;h 272;flotScale 1.5;out_w 480;out_h 272;out_flotScale 1.5;#endif#if NV12_To_I420input_name const_castchar*(../in/nv12_480x272.yuv);output_name const_castchar*(../out/I420_480x272.yuv);cfg.srcWide 480;cfg.dstWide 480;cfg.dstHigh 272;cfg.srcHigh 272;cfg.srcFormat FFMPEG_AV_PIX_FMT_NV12;cfg.dstFormat FFMPEG_AV_PIX_FMT_YUV420P;w 480;h 272;flotScale 1.5;out_w 480;out_h 272;out_flotScale 1.5;#endif#if I420_To_NV12input_name const_castchar*(../in/I420_480x272.yuv);output_name const_castchar*(../out/nv12_480x272.yuv);cfg.srcWide 480;cfg.dstWide 480;cfg.dstHigh 272;cfg.srcHigh 272;cfg.srcFormat FFMPEG_AV_PIX_FMT_YUV420P;cfg.dstFormat FFMPEG_AV_PIX_FMT_NV12;w 480;h 272;flotScale 1.5;out_w 480;out_h 272;out_flotScale 1.5;#endif#if I420_To_RGB24input_name const_castchar*(../in/I420_480x272.yuv);output_name const_castchar*(../out/rgb_480x272.rgb);w 480;h 272;flotScale 1.5;out_w 480;out_h 272;out_flotScale 3;cfg.srcWide w;cfg.dstWide out_w;cfg.dstHigh out_h;cfg.srcHigh h;cfg.srcFormat FFMPEG_AV_PIX_FMT_YUV420P;cfg.dstFormat FFMPEG_AV_PIX_FMT_RGB24;#endif#if RGB24_To_I420input_name const_castchar*(../in/rgb_480x272.rgb);output_name const_castchar*(../out/I420_480x272.yuv);w 480;h 272;flotScale 3;out_w 480;out_h 272;out_flotScale 1.5;cfg.srcWide w;cfg.dstWide out_w;cfg.dstHigh out_h;cfg.srcHigh h;cfg.dstFormat FFMPEG_AV_PIX_FMT_YUV420P;cfg.srcFormat FFMPEG_AV_PIX_FMT_RGB24;#endif#if I420_To_RGB32input_name const_castchar*(../in/I420_480x272.yuv);output_name const_castchar*(../out/rgba_480x272.rgb);w 480;h 272;flotScale 1.5;out_w 480;out_h 272;out_flotScale 4;cfg.srcWide w;cfg.dstWide out_w;cfg.dstHigh out_h;cfg.srcHigh h;cfg.srcFormat FFMPEG_AV_PIX_FMT_YUV420P;cfg.dstFormat FFMPEG_AV_PIX_FMT_RGBA;#endif#if RGB32_To_I420input_name const_castchar*(../in/rgba_480x272.rgb);output_name const_castchar*(../out/I420_480x272.yuv);w 480;h 272;flotScale 4;out_w 480;out_h 272;out_flotScale 1.5;cfg.srcWide w;cfg.dstWide out_w;cfg.dstHigh out_h;cfg.srcHigh h;cfg.dstFormat FFMPEG_AV_PIX_FMT_YUV420P;cfg.srcFormat FFMPEG_AV_PIX_FMT_RGBA;#endifint in_buff_len w * h * flotScale;int out_buff_len out_w * out_h * out_flotScale;char* inbuff new char[in_buff_len];char* outbuff new char[out_buff_len];fopen_s(file_in, input_name, rb);fopen_s(file_out, output_name, wb);int ret obj.Init(cfg);if (0 ! ret){printf(ColorConversionFFmpeg::Init ret:%d\n, ret);fclose(file_in);fclose(file_out);file_in nullptr;file_out nullptr;return -1;}while (true){if (fread(inbuff, 1, in_buff_len, file_in) ! in_buff_len){break;}ret obj.Conversion(inbuff, outbuff);if (0 ! ret){printf(ColorConversionFFmpeg::Conversion ret:%d\n, ret);continue;}fwrite(outbuff, 1, out_buff_len, file_out);}ret obj.UnInit();if (0 ! ret){printf(ColorConversionFFmpeg::UnInit ret:%d\n, ret);}fclose(file_in);fclose(file_out);file_in nullptr;file_out nullptr;std::cout Hello World!\n; }代码路径 csdn:https://download.csdn.net/download/u011645307/21739481?spm1001.2014.3001.5501 github:https://github.com/liangqidong/ColorConversion.git
http://www.w-s-a.com/news/731280/

相关文章:

  • 金站网.营销型网站学校安全教育网站建设
  • 临沂市建设局网站公示军事新闻头条2023
  • 购物网网站建设lamp 做网站
  • 做网站网站庄家html5网站开发技术
  • 无锡门户网站制作电话广告设计公司的未来
  • 白云区专业网站建设网页设计模拟试题答案
  • 毕业设计网站代做多少钱制作旅游网站设计概述
  • 网站开发维护运维无人在线电视剧免费观看
  • 电子商务网站建设开题报告展馆网站建设
  • 门户网站建设的背景和意义手机网站前
  • 国内免费视频素材无水印素材网站国家最新消息
  • 襄阳seo站内优化学做网站论坛教程
  • 文明网站建设情况报告wordpress伪静态配置
  • 牙科网站模板个人微信网站建设
  • 厦门公司注册网站dw做简单小说网站
  • 网站建好以后每年都续费么wordpress 仿聚划算
  • 单位网站建设收费标准网上开店铺需要多少钱
  • 灯饰网站需要这么做申请域名的流程
  • 软件下载网站怎么赚钱wordpress减少数据库查询
  • 什么兼职网站可以做视频剪辑常见的推广平台有哪些
  • 网站开发是用html还是jsp设迹官网
  • 查公司信息的网站怎么学wordpress
  • 白银做网站长春一般建一个网站需要多少钱
  • 帮人做钓鱼网站的人网络推广培训职业学校
  • 淘宝客有必须做网站吗网站开发的形式有( )
  • 网站建设:上海珍岛网页版qq空间登录
  • 网站服务器ipteahouse wordpress主题
  • 深州市住房保障和城乡建设局网站做网站公司叫什么
  • 织梦网站转跳手机站注册公司代理记账费用
  • wordpress建站Pdf亚马逊aws在线观看