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

网站建设公司找哪家北京平面设计公司排名

网站建设公司找哪家,北京平面设计公司排名,wordpress服务端,手工加工网在虚拟机上yuv420可以正常显示 #xff0c;而945#xff08;D525#xff09;模块上却无法显示 #xff0c;后来验证了directdraw的yuv420也无法显示 #xff0c;由此怀疑显卡不支持 #xff0c;后把420转换为422显示。420显示如下#xff1a;/* 编译命令#xff1a;arm… 在虚拟机上yuv420可以正常显示 而945D525模块上却无法显示 后来验证了directdraw的yuv420也无法显示 由此怀疑显卡不支持 后把420转换为422显示。420显示如下/* 编译命令arm-linux-gcc -o show2642 264showyuv2.c -I/usr/local/ffmpeg_arm/include/ -L/usr/local/ffmpeg_arm/lib/ -lswresample -lavformat -lavutil -lavcodec -lswscale -lx264 libSDL.agcc -o test test.c -I/usr/local/ffmpeg/include/ -L/usr/local/ffmpeg/lib/ -lswresample -lavformat -lavutil -lavcodec -lswscale -lx264 -lSDL */ #include stdio.h #include stdlib.h#include libavformat/avformat.h #include libavdevice/avdevice.h #include libswresample/swresample.h #include libavutil/opt.h #include libavutil/channel_layout.h #include libavutil/parseutils.h #include libavutil/samplefmt.h #include libavutil/fifo.h #include libavutil/intreadwrite.h #include libavutil/dict.h #include libavutil/mathematics.h #include libavutil/pixdesc.h #include libavutil/avstring.h #include libavutil/imgutils.h #include libavutil/timestamp.h #include libavutil/bprint.h #include libavutil/time.h #include libavutil/threadmessage.h #include SDL/SDL.h//#include libavfilter/avcodec.h #include libavcodec/avcodec.h#if HAVE_SYS_RESOURCE_H #include sys/time.h #include sys/types.h #include sys/resource.h #elif HAVE_GETPROCESSTIMES #include windows.h #endif #if HAVE_GETPROCESSMEMORYINFO #include windows.h #include psapi.h #endif#if HAVE_SYS_SELECT_H #include sys/select.h #endif#if HAVE_TERMIOS_H #include fcntl.h #include sys/ioctl.h #include sys/time.h #include termios.h #elif HAVE_KBHIT #include conio.h #endif#if HAVE_PTHREADS #include pthread.h #endif#include time.h#include libavutil/avassert.h#define MAX_LEN 1024 * 50此方法参考官网的例子 static void pgm_save(unsigned char *buf, int wrap, int xsize, int ysize,FILE *f) {// FILE *f;int i;// f fopen(filename,w);// fprintf(f, P5\n%d %d\n%d\n, xsize, ysize, 255);for (i 0; i ysize; i);// fwrite(buf i * wrap, 1, xsize, f);// fclose(f); }int main() {//下面初始化h264解码库//avcodec_init();int w 720;int h 576,retu;SDL_Rect rect;av_register_all();AVFrame *pFrame_ NULL;/* find the video encoder */AVCodec *videoCodec avcodec_find_decoder(AV_CODEC_ID_H264);//得到264的解码器类if(!videoCodec){printf(avcodec_find_decoder error\n);return -1;}AVCodecParserContext *avParserContext av_parser_init(AV_CODEC_ID_H264);//得到解析帧类主要用于后面的帧头查找if(!avParserContext){printf(av_parser_init error\n);return -1;}AVCodecContext *codec_ avcodec_alloc_context3(videoCodec);//解码会话层if(!codec_){printf(avcodec_alloc_context3 error\n);return -1;}//初始化参数下面的参数应该由具体的业务决定codec_-time_base.num 1;codec_-frame_number 1; //每包一个视频帧codec_-codec_type AVMEDIA_TYPE_VIDEO;codec_-bit_rate 0;codec_-time_base.den 25;//帧率codec_-width 720;//视频宽codec_-height 576;//视频高if(avcodec_open2(codec_, videoCodec, NULL) 0)//打开解码器{pFrame_ av_frame_alloc();// Allocate video frame 成功打开解码器后 此时可以分配帧内存 当然你也可以在后面每次都分配、释放 在此我省功夫 只在开始分配一次if (!pFrame_) {fprintf(stderr, Could not allocate video frame\n);exit(1);}}else{printf(avcodec_open2 error\n);return -1;}AVPacket packet {0};int dwBufsize 10;int frameFinished dwBufsize;//这个是随便填入数字没什么作用av_init_packet(packet);packet.data NULL;//这里填入一个指向完整H264数据帧的指针packet.size 0;//这个填入H264数据帧的大小FILE *myH264 fopen(1.264, rb);//解码的文件264if(myH264 NULL){perror(cant open 264 file\n);return -1;}FILE *yuvfile fopen(my264.yuv, wb);//成功解码后保存成的YUV文件 可以用YUV工具打开浏览if(yuvfile NULL){perror(cant open YUV file\n);return -1;}int readFileLen 1;char readBuf[MAX_LEN];unsigned char *parseBuf malloc(20*MAX_LEN);//这个地方浪费了我一个下午时间 当时我用的是栈内存即unsigned char parseBuf[20*MAX_LEN] 结果运行程序一直报错 此处需要用堆内存才能正常解码int parseBufLen 0;int frameCount 0;printf(begin...\n);printf(readBuf address is %x\n, readBuf); /SDL initSDL_Surface* hello NULL;SDL_Surface* screen NULL;//Start SDL// SDL_Init( SDL_INIT_EVERYTHING );SDL_Init(SDL_INIT_VIDEO);//Set up screenscreen SDL_SetVideoMode( 1024, 768, 32, SDL_SWSURFACE );SDL_Overlay* overlay SDL_CreateYUVOverlay(w, h, SDL_YV12_OVERLAY, screen);SDL_LockSurface(screen);SDL_LockYUVOverlay(overlay); //while(readFileLen 0)//开始解码工作{//printf(begin...\n);readFileLen fread(readBuf, 1, sizeof(readBuf), myH264);//首先从文件里读出数据if(readFileLen 0){printf(read over\n);break;}else{int handleLen 0;int handleFileLen readFileLen;while(handleFileLen 0){int nLength av_parser_parse2(avParserContext, codec_, parseBuf, parseBufLen, readBuf handleLen, handleFileLen, 0, 0, 0);//查找264帧头handleFileLen - nLength;handleLen nLength;if(parseBufLen 0)//当parseBufLen大于0时说明查找到了帧头{continue;}packet.size parseBufLen;//将查找到的帧长度送入packet.data parseBuf;//将查找到的帧内存送入if(frameCount100)break;//printf(parseBuf address is %x\n, parseBuf);while(packet.size 0){//下面开始真正的解码int decodeLen avcodec_decode_video2(codec_, pFrame_, frameFinished, packet);if(decodeLen 0)break;packet.size - decodeLen;packet.data decodeLen;if(frameFinished 0)//成功解码{int picSize codec_-height * codec_-width;//int newSize picSize * 1.5;//申请内存//unsigned char *buf malloc(newSize);int height pFrame_-height;int width pFrame_-width;//printf(OK, get data\n);//printf(Frame height is %d\n, height);//printf(Frame width is %d\n, width);frameCount ;printf(Frame count is %d\n, frameCount);pgm_save(pFrame_-data[0], pFrame_-linesize[0],//保存Ycodec_-width, codec_-height, yuvfile);pgm_save(pFrame_-data[1], pFrame_-linesize[1],//保存Ucodec_-width/2, codec_-height/2, yuvfile);pgm_save(pFrame_-data[2], pFrame_-linesize[2],//保存Vcodec_-width/2, codec_-height/2, yuvfile);///有了YUV数据 后面可以用FFMPEG提供的转换方法将其转成RGB数据进行后续的显示或其它的图像处理工作sdlint i;for(i0;i576;i){//fwrite(buf i * wrap, 1, xsize, f);memcpy(overlay-pixels[0]i*1280, pFrame_-data[0]i*pFrame_-linesize[0], 720); }for(i0;i288;i){memcpy(overlay-pixels[2]i*640, pFrame_-data[1]i*pFrame_-linesize[1], 360);memcpy(overlay-pixels[1]i*640, pFrame_-data[2]i*pFrame_-linesize[2], 360); }SDL_UnlockYUVOverlay(overlay);SDL_UnlockSurface(screen);rect.w w;rect.h h;rect.x rect.y 0;SDL_DisplayYUVOverlay(overlay, rect);//sdlSDL_Delay(40);}elseprintf(failed to decodec\n);}}}}//释放工作avcodec_close(codec_);av_free(codec_);av_free_packet(packet);av_frame_free(pFrame_);//SDLSDL_FreeYUVOverlay(overlay);SDL_FreeSurface(screen);//Quit SDLSDL_Quit();fclose(yuvfile);fclose(myH264);}422显示如下/* 编译命令arm-linux-gcc -o show2642 264showyuv2.c -I/usr/local/ffmpeg_arm/include/ -L/usr/local/ffmpeg_arm/lib/ -lswresample -lavformat -lavutil -lavcodec -lswscale -lx264 libSDL.agcc -o test test.c -I/usr/local/ffmpeg/include/ -L/usr/local/ffmpeg/lib/ -lswresample -lavformat -lavutil -lavcodec -lswscale -lx264 -lSDL */ #include stdio.h #include stdlib.h#include libavformat/avformat.h #include libavdevice/avdevice.h #include libswresample/swresample.h #include libavutil/opt.h #include libavutil/channel_layout.h #include libavutil/parseutils.h #include libavutil/samplefmt.h #include libavutil/fifo.h #include libavutil/intreadwrite.h #include libavutil/dict.h #include libavutil/mathematics.h #include libavutil/pixdesc.h #include libavutil/avstring.h #include libavutil/imgutils.h #include libavutil/timestamp.h #include libavutil/bprint.h #include libavutil/time.h #include libavutil/threadmessage.h #include SDL/SDL.h//#include libavfilter/avcodec.h #include libavcodec/avcodec.h#if HAVE_SYS_RESOURCE_H #include sys/time.h #include sys/types.h #include sys/resource.h #elif HAVE_GETPROCESSTIMES #include windows.h #endif #if HAVE_GETPROCESSMEMORYINFO #include windows.h #include psapi.h #endif#if HAVE_SYS_SELECT_H #include sys/select.h #endif#if HAVE_TERMIOS_H #include fcntl.h #include sys/ioctl.h #include sys/time.h #include termios.h #elif HAVE_KBHIT #include conio.h #endif#if HAVE_PTHREADS #include pthread.h #endif#include time.h#include libavutil/avassert.h#define MAX_LEN 1024 * 50此方法参考官网的例子此方法参考官网的例子 static void pgm_save(unsigned char *buf, int wrap, int xsize, int ysize,FILE *f) {// FILE *f;int i;// f fopen(filename,w);// fprintf(f, P5\n%d %d\n%d\n, xsize, ysize, 255);for (i 0; i ysize; i);// fwrite(buf i * wrap, 1, xsize, f);// fclose(f); }int main() {//下面初始化h264解码库//avcodec_init();int w 720;int h 576,retu;SDL_Rect rect;av_register_all();AVFrame *pFrame_ NULL;/* find the video encoder */AVCodec *videoCodec avcodec_find_decoder(AV_CODEC_ID_H264);//得到264的解码器类if(!videoCodec){printf(avcodec_find_decoder error\n);return -1;}AVCodecParserContext *avParserContext av_parser_init(AV_CODEC_ID_H264);//得到解析帧类主要用于后面的帧头查找if(!avParserContext){printf(av_parser_init error\n);return -1;}AVCodecContext *codec_ avcodec_alloc_context3(videoCodec);//解码会话层if(!codec_){printf(avcodec_alloc_context3 error\n);return -1;}//初始化参数下面的参数应该由具体的业务决定codec_-time_base.num 1;codec_-frame_number 1; //每包一个视频帧codec_-codec_type AVMEDIA_TYPE_VIDEO;codec_-bit_rate 0;codec_-time_base.den 25;//帧率codec_-width 720;//视频宽codec_-height 576;//视频高if(avcodec_open2(codec_, videoCodec, NULL) 0)//打开解码器{pFrame_ av_frame_alloc();// Allocate video frame 成功打开解码器后 此时可以分配帧内存 当然你也可以在后面每次都分配、释放 在此我省功夫 只在开始分配一次if (!pFrame_) {fprintf(stderr, Could not allocate video frame\n);exit(1);}}else{printf(avcodec_open2 error\n);return -1;}AVPacket packet {0};int dwBufsize 10;int frameFinished dwBufsize;//这个是随便填入数字没什么作用av_init_packet(packet);packet.data NULL;//这里填入一个指向完整H264数据帧的指针packet.size 0;//这个填入H264数据帧的大小FILE *myH264 fopen(1.264, rb);//解码的文件264if(myH264 NULL){perror(cant open 264 file\n);return -1;}FILE *yuvfile fopen(my264.yuv, wb);//成功解码后保存成的YUV文件 可以用YUV工具打开浏览if(yuvfile NULL){perror(cant open YUV file\n);return -1;}int readFileLen 1;char readBuf[MAX_LEN];unsigned char *parseBuf malloc(20*MAX_LEN);//这个地方浪费了我一个下午时间 当时我用的是栈内存即unsigned char parseBuf[20*MAX_LEN] 结果运行程序一直报错 此处需要用堆内存才能正常解码int parseBufLen 0;int frameCount 0;printf(begin...\n);printf(readBuf address is %x\n, readBuf); /SDL initSDL_Surface* hello NULL;SDL_Surface* screen NULL;//Start SDL// SDL_Init( SDL_INIT_EVERYTHING );SDL_Init(SDL_INIT_VIDEO);//Set up screenscreen SDL_SetVideoMode( 720, 576, 32, SDL_SWSURFACE );SDL_Overlay* overlay SDL_CreateYUVOverlay(w, h, SDL_YUY2_OVERLAY, screen);SDL_LockSurface(screen);SDL_LockYUVOverlay(overlay); unsigned char yuv422[768*576*2]; //while(readFileLen 0)//开始解码工作{//printf(begin...\n);readFileLen fread(readBuf, 1, sizeof(readBuf), myH264);//首先从文件里读出数据if(readFileLen 0){printf(read over\n);break;}else{int handleLen 0;int handleFileLen readFileLen;while(handleFileLen 0){int nLength av_parser_parse2(avParserContext, codec_, parseBuf, parseBufLen, readBuf handleLen, handleFileLen, 0, 0, 0);//查找264帧头handleFileLen - nLength;handleLen nLength;if(parseBufLen 0)//当parseBufLen大于0时说明查找到了帧头{continue;}packet.size parseBufLen;//将查找到的帧长度送入packet.data parseBuf;//将查找到的帧内存送入if(frameCount100)break;//printf(parseBuf address is %x\n, parseBuf);while(packet.size 0){//下面开始真正的解码int decodeLen avcodec_decode_video2(codec_, pFrame_, frameFinished, packet);//if(decodeLen 0)break;packet.size - decodeLen;packet.data decodeLen;if(frameFinished 0)//成功解码{int picSize codec_-height * codec_-width;//int newSize picSize * 1.5;//申请内存//unsigned char *buf malloc(newSize);int height pFrame_-height;int width pFrame_-width;//printf(OK, get data\n);//printf(Frame height is %d\n, height);//printf(Frame width is %d\n, width);frameCount ;printf(Frame count is %d\n, frameCount);pgm_save(pFrame_-data[0], pFrame_-linesize[0],//保存Ycodec_-width, codec_-height, yuvfile);pgm_save(pFrame_-data[1], pFrame_-linesize[1],//保存Ucodec_-width/2, codec_-height/2, yuvfile);pgm_save(pFrame_-data[2], pFrame_-linesize[2],//保存Vcodec_-width/2, codec_-height/2, yuvfile);///有了YUV数据 后面可以用FFMPEG提供的转换方法将其转成RGB数据进行后续的显示或其它的图像处理工作sdlint i;/* for(i0;i576;i){//fwrite(buf i * wrap, 1, xsize, f);memcpy(overlay-pixels[0]i*720, pFrame_-data[0]i*pFrame_-linesize[0], 720); }for(i0;i288;i){memcpy(overlay-pixels[2]i*360, pFrame_-data[1]i*pFrame_-linesize[1], 360);memcpy(overlay-pixels[1]i*360, pFrame_-data[2]i*pFrame_-linesize[2], 360); }*/int k0,y,x; //yuv420 - yuv422for( y0;y576;y){for( x0;x720;x){yuv422[k] pFrame_-data[0][y*pFrame_-linesize[0]x];yuv422[k] x%20?pFrame_-data[1][(y/2)*pFrame_-linesize[1]x/2]:pFrame_-data[2][(y/2)*pFrame_-linesize[2]x/2];}}memcpy(overlay-pixels[0],yuv422, codec_-width*codec_-height*2);SDL_UnlockYUVOverlay(overlay);SDL_UnlockSurface(screen);rect.w w;rect.h h;rect.x rect.y 0;SDL_DisplayYUVOverlay(overlay, rect);//sdlSDL_Delay(40);}elseprintf(failed to decodec\n);}}}}//释放工作avcodec_close(codec_);av_free(codec_);av_free_packet(packet);av_frame_free(pFrame_);//SDLSDL_FreeYUVOverlay(overlay);SDL_FreeSurface(screen);//Quit SDLSDL_Quit();fclose(yuvfile);fclose(myH264);}采用sws_scale 实现的数据转换/* 编译命令arm-linux-gcc -o show2642 264showyuv2.c -I/usr/local/ffmpeg_arm/include/ -L/usr/local/ffmpeg_arm/lib/ -lswresample -lavformat -lavutil -lavcodec -lswscale -lx264 libSDL.agcc -o test test.c -I/usr/local/ffmpeg/include/ -L/usr/local/ffmpeg/lib/ -lswresample -lavformat -lavutil -lavcodec -lswscale -lx264 -lSDL */ #include stdio.h #include stdlib.h#include libavformat/avformat.h #include libavdevice/avdevice.h #include libswresample/swresample.h #include libavutil/opt.h #include libavutil/channel_layout.h #include libavutil/parseutils.h #include libavutil/samplefmt.h #include libavutil/fifo.h #include libavutil/intreadwrite.h #include libavutil/dict.h #include libavutil/mathematics.h #include libavutil/pixdesc.h #include libavutil/avstring.h #include libavutil/imgutils.h #include libavutil/timestamp.h #include libavutil/bprint.h #include libavutil/time.h #include libavutil/threadmessage.h #include SDL/SDL.h//#include libavfilter/avcodec.h #include libavcodec/avcodec.h#if HAVE_SYS_RESOURCE_H #include sys/time.h #include sys/types.h #include sys/resource.h #elif HAVE_GETPROCESSTIMES #include windows.h #endif #if HAVE_GETPROCESSMEMORYINFO #include windows.h #include psapi.h #endif#if HAVE_SYS_SELECT_H #include sys/select.h #endif#if HAVE_TERMIOS_H #include fcntl.h #include sys/ioctl.h #include sys/time.h #include termios.h #elif HAVE_KBHIT #include conio.h #endif#if HAVE_PTHREADS #include pthread.h #endif#include time.h#include libavutil/avassert.h#define MAX_LEN 1024 * 50此方法参考官网的例子 static void pgm_save(unsigned char *buf, int wrap, int xsize, int ysize,FILE *f) {// FILE *f;int i;// f fopen(filename,w);// fprintf(f, P5\n%d %d\n%d\n, xsize, ysize, 255);for (i 0; i ysize; i);// fwrite(buf i * wrap, 1, xsize, f);// fclose(f); }int main() {//下面初始化h264解码库//avcodec_init();int w 720;int h 576,retu;SDL_Rect rect;av_register_all();AVFrame *pFrame_ NULL,*pFrameYUV;struct SwsContext *img_convert_ctx NULL;pFrameYUV av_frame_alloc();/* find the video encoder */AVCodec *videoCodec avcodec_find_decoder(AV_CODEC_ID_H264);//得到264的解码器类if(!videoCodec){printf(avcodec_find_decoder error\n);return -1;}AVCodecParserContext *avParserContext av_parser_init(AV_CODEC_ID_H264);//得到解析帧类主要用于后面的帧头查找if(!avParserContext){printf(av_parser_init error\n);return -1;}AVCodecContext *codec_ avcodec_alloc_context3(videoCodec);//解码会话层if(!codec_){printf(avcodec_alloc_context3 error\n);return -1;}//初始化参数下面的参数应该由具体的业务决定codec_-time_base.num 1;codec_-frame_number 1; //每包一个视频帧codec_-codec_type AVMEDIA_TYPE_VIDEO;codec_-bit_rate 0;codec_-time_base.den 25;//帧率codec_-width 720;//视频宽codec_-height 576;//视频高if(avcodec_open2(codec_, videoCodec, NULL) 0)//打开解码器{pFrame_ av_frame_alloc();// Allocate video frame 成功打开解码器后 此时可以分配帧内存 当然你也可以在后面每次都分配、释放 在此我省功夫 只在开始分配一次if (!pFrame_) {fprintf(stderr, Could not allocate video frame\n);exit(1);}}else{printf(avcodec_open2 error\n);return -1;}AVPacket packet {0};int dwBufsize 10;int frameFinished dwBufsize;//这个是随便填入数字没什么作用av_init_packet(packet);packet.data NULL;//这里填入一个指向完整H264数据帧的指针packet.size 0;//这个填入H264数据帧的大小FILE *myH264 fopen(1.264, rb);//解码的文件264if(myH264 NULL){perror(cant open 264 file\n);return -1;}FILE *yuvfile fopen(my264.yuv, wb);//成功解码后保存成的YUV文件 可以用YUV工具打开浏览if(yuvfile NULL){perror(cant open YUV file\n);return -1;}int readFileLen 1;char readBuf[MAX_LEN];unsigned char *parseBuf malloc(20*MAX_LEN);//这个地方浪费了我一个下午时间 当时我用的是栈内存即unsigned char parseBuf[20*MAX_LEN] 结果运行程序一直报错 此处需要用堆内存才能正常解码int parseBufLen 0;int frameCount 0;printf(begin...\n);printf(readBuf address is %x\n, readBuf); /SDL initSDL_Surface* hello NULL;SDL_Surface* screen NULL;//Start SDL// SDL_Init( SDL_INIT_EVERYTHING );SDL_Init(SDL_INIT_VIDEO);//Set up screenscreen SDL_SetVideoMode( 720, 576, 32, SDL_SWSURFACE );SDL_Overlay* overlay SDL_CreateYUVOverlay(w, h, SDL_YUY2_OVERLAY, screen);SDL_LockSurface(screen);SDL_LockYUVOverlay(overlay); // //int numBytes avpicture_get_size(AV_PIX_FMT_YUYV422, codec_-width, codec_-height); uint8_t* yuv422 (uint8_t *)av_malloc(numBytes*sizeof(uint8_t)); avpicture_fill((AVPicture *)pFrameYUV, yuv422, AV_PIX_FMT_YUYV422, codec_-width, codec_-height); ///while(readFileLen 0)//开始解码工作{//printf(begin...\n);readFileLen fread(readBuf, 1, sizeof(readBuf), myH264);//首先从文件里读出数据if(readFileLen 0){printf(read over\n);break;}else{int handleLen 0;int handleFileLen readFileLen;while(handleFileLen 0){int nLength av_parser_parse2(avParserContext, codec_, parseBuf, parseBufLen, readBuf handleLen, handleFileLen, 0, 0, 0);//查找264帧头handleFileLen - nLength;handleLen nLength;if(parseBufLen 0)//当parseBufLen大于0时说明查找到了帧头{continue;}packet.size parseBufLen;//将查找到的帧长度送入packet.data parseBuf;//将查找到的帧内存送入if(frameCount100)break;//printf(parseBuf address is %x\n, parseBuf);while(packet.size 0){//下面开始真正的解码int decodeLen avcodec_decode_video2(codec_, pFrame_, frameFinished, packet);if(decodeLen 0)break;packet.size - decodeLen;packet.data decodeLen;if(frameFinished 0)//成功解码{int picSize codec_-height * codec_-width;//int newSize picSize * 1.5;//申请内存//unsigned char *buf malloc(newSize);int height pFrame_-height;int width pFrame_-width;//printf(OK, get data\n);//printf(Frame height is %d\n, height);//printf(Frame width is %d\n, width);frameCount ;printf(Frame count is %d\n, frameCount);pgm_save(pFrame_-data[0], pFrame_-linesize[0],//保存Ycodec_-width, codec_-height, yuvfile);pgm_save(pFrame_-data[1], pFrame_-linesize[1],//保存Ucodec_-width/2, codec_-height/2, yuvfile);pgm_save(pFrame_-data[2], pFrame_-linesize[2],//保存Vcodec_-width/2, codec_-height/2, yuvfile);///有了YUV数据 后面可以用FFMPEG提供的转换方法将其转成RGB数据进行后续的显示或其它的图像处理工作sdlint i;/* for(i0;i576;i){//fwrite(buf i * wrap, 1, xsize, f);memcpy(overlay-pixels[0]i*720, pFrame_-data[0]i*pFrame_-linesize[0], 720); }for(i0;i288;i){memcpy(overlay-pixels[2]i*360, pFrame_-data[1]i*pFrame_-linesize[1], 360);memcpy(overlay-pixels[1]i*360, pFrame_-data[2]i*pFrame_-linesize[2], 360); }*/img_convert_ctx sws_getContext(codec_-width, codec_-height, codec_-pix_fmt, codec_-width, codec_-height, AV_PIX_FMT_YUYV422, 2, NULL, NULL, NULL); sws_scale(img_convert_ctx, (const uint8_t* const*) pFrame_-data, pFrame_-linesize, 0, codec_-height, pFrameYUV-data,pFrameYUV-linesize); memcpy(overlay-pixels[0],yuv422, codec_-width*codec_-height*2);SDL_UnlockYUVOverlay(overlay);SDL_UnlockSurface(screen);rect.w w;rect.h h;rect.x rect.y 0;SDL_DisplayYUVOverlay(overlay, rect);//sdlSDL_Delay(40);}elseprintf(failed to decodec\n);}}}}//释放工作avcodec_close(codec_);av_free(codec_);av_free_packet(packet);av_frame_free(pFrame_);//SDLSDL_FreeYUVOverlay(overlay);SDL_FreeSurface(screen);//Quit SDLSDL_Quit();fclose(yuvfile);fclose(myH264);}转载于:https://www.cnblogs.com/mao0504/p/5589743.html
http://www.zqtcl.cn/news/300294/

相关文章:

  • 网站怎么在成都备案中企动力如何
  • 免费数据统计网站app推广拉新一手渠道
  • 网站推广效果不好原因zac seo博客
  • 高端网站设计合肥网站建设个人网站建设公
  • 廊坊建站模板系统做效果图的网站
  • 建网站打开需要验证四川省成都市建设厅官网
  • 网站文章列表如何排版珠海建设工程信息网站
  • 郑州个人做网站建设银行招聘网站
  • 杭州网站设计公司联系亿企邦网站怎么上百度
  • 网站建设的未来网站不备案访问
  • 网站改版效果图怎么做网站建设的五个基本要素
  • 河南建站网站做o2o网站需要多少钱
  • 重庆企业网站定制开发公司wordpress用户页
  • 电子商务网站seo网站规划与设计方向
  • 外贸双语网站源码wordpress 柚子
  • 隆昌市住房和城乡建设厅网站html5网页成品代码
  • 泉州丰泽建设局网站wordpress设置logo和公司名
  • 网页与网站设计实验总结网上商城互联网网站开发
  • 学院宣传网站建设简介郑州加盟网站建设
  • 上海网站建设sheji021wordpress ssl 图片
  • 网站管理人员队伍建设说明材料搞笑网站建设目的和意义
  • 网站建设应该考虑哪些问题如何规划网站栏目
  • 照片网站模版广告设计软件哪个好用
  • 商城网站前端更新商品天天做吗惠州网络营销公司
  • 买高端品牌网站建设公司做网站比较好的平台
  • 找个网站这么难2021公司名称大全好听
  • 网站要实名认证网站建设 简易合同
  • 网站建站公司费用建设网站改版
  • 做网站php与python新渝网门户网
  • 响应式网站建设外文文献中介做网站的别打电话