#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