博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
yuv转bmp
阅读量:6227 次
发布时间:2019-06-21

本文共 2257 字,大约阅读时间需要 7 分钟。

#ifdef   _INTERFACE_H#error   _INTERFACE_H has be  exsisted#else#define  _INTERFACE_H#include "stdafx.h"//类型定义在这个文件中#include "stdlib.h"#include "windows.h"void SaveYUV(AVFrame *picture, int width, int height,int iFrame) #pragma once#ifndef _WINGDI_#define   _WINGDI_typedef struct tagBITMAPFILEHEADER {        	WORD    bfType;     	DWORD   bfSize;            	WORD    bfReserved1;            	WORD    bfReserved2;            	DWORD   bfOffBits;  } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;   typedef struct tagBITMAPINFOHEADER{ 		DWORD      biSize;		LONG       biWidth;		LONG       biHeight;		WORD       biPlanes; 		WORD       biBitCount;		DWORD      biCompression;		DWORD      biSizeImage; 		LONG       biXPelsPerMeter;		LONG       biYPelsPerMeter;		DWORD      biClrUsed;		DWORD      biClrImportant;   } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;  #endif#endifvoid SaveYUVS(uint8_t* yuv, int width, int height, int iFrame) {	FILE *pFile;	char szFilename[32];	int y;	sprintf(szFilename, ".\\yuv\\rotate%d_%d_%d.yuv", iFrame, width, height);  	pFile=fopen(szFilename, "ab+");	if(pFile == NULL)	   return;	fwrite(yuv,sizeof(char),width * height*3/2,pFile);// 		fflush(pFile);	fclose(pFile);}#if 1picture->data[0] += picture->linesize[0] * (pAVCodecCtx->height - 1);    picture->linesize[0] *= -1;    picture->data[1] += picture->linesize[1] * (pAVCodecCtx->height / 2 - 1);    picture->linesize[1] *= -1;    picture->data[2] += picture->linesize[2] * (pAVCodecCtx->height / 2 - 1);    picture->linesize[2] *= -1;    //转换图像格式,将解压出来的YUV420P的图像转换为BRG24的图像int PictureSize=avpicture_get_size (PIX_FMT_BGR24, pAVCodecCtx->width, pAVCodecCtx->height); uint8_t* buf = (uint8_t*)av_malloc(PictureSize);   avpicture_fill ( (AVPicture *)pFrameRGB, buf, PIX_FMT_BGR24, pAVCodecCtx->width, pAVCodecCtx->height);   SwsContext* pSwsCtx = sws_getContext (pAVCodecCtx->width,pAVCodecCtx->height,pAVCodecCtx->pix_fmt,pAVCodecCtx->width,pAVCodecCtx->height,PIX_FMT_BGR24,SWS_BICUBIC,NULL, NULL, NULL);  sws_scale (pSwsCtx,picture->data,picture->linesize,0,pAVCodecCtx->height,pFrameRGB->data,pFrameRGB->linesize);    SaveAsBMP (pFrameRGB,pAVCodecCtx->width,pAVCodecCtx->height, count, 24);    av_free(buf);sws_freeContext(pSwsCtx);#endif

转载地址:http://qunna.baihongyu.com/

你可能感兴趣的文章
优雅的类写法
查看>>
ReactNative开发必备ES6知识
查看>>
基于BIGINT溢出错误的SQL注入
查看>>
Burp Suite使用介绍(二)
查看>>
Struts2 Tomcat class.classLoader.resources.dirContext.docBase赋值造成的DoS及远程代码执行利用!...
查看>>
当失控的预装行为以非正当手段伸向行货机时_北京鼎开预装刷机数据统计apk(rom固化版)分析...
查看>>
最近招聘的一些思考
查看>>
PHP 单元测试
查看>>
魔幻特效,慢放世界,nova 3带你玩转抖音新技能
查看>>
声明式调用---Feign
查看>>
有效的沟通,如忍者的最后一击!
查看>>
从零开始搭建一个简单的基于webpack的vue开发环境
查看>>
【功能盘点】升级后的媒体处理MPS有哪些能力?
查看>>
聊聊redis的slowlog与latency monitor
查看>>
【iOS 印象】Swift 中值类型与引用类型指北
查看>>
vim-galore 中文翻译
查看>>
云数据库Memcache版使用教程
查看>>
重构了一下小博客
查看>>
redux简单实现与分析
查看>>
iOS12的捷径你玩过了吗
查看>>