資源簡(jiǎn)介
基于jrtplib實(shí)現(xiàn)了RTP發(fā)送和接收功能,支持發(fā)送H264、PS、TS等文件流,接收端讀取發(fā)送端發(fā)來(lái)的數(shù)據(jù)后,取Payload數(shù)據(jù),通過(guò)FFmpeg分離、解碼出視頻,將RGB格式的視頻在窗口中顯示。該代碼對(duì)應(yīng)我博客上的一篇文章:https://blog.csdn.net/zhoubotong2012/article/details/86502327
代碼片段和文件信息
//?VideoDrawer.cpp:?implementation?of?the?CDDrawData?class.
//
//////////////////////////////////////////////////////////////////////
#include?“DDrawData.h“
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
#define?SAFE_RELEASE(p)?{?if?(?(p)?)?{?(p)->Release();?(p)?=?0;?}?}
CDDrawData::CDDrawData()
{
????m_pDD????????????????=?NULL;
????m_pddsFrontBuffer????=?NULL;
????m_pddsBackBuffer?????=?NULL;
????m_dwWidth?=?0;
????m_dwHeight?=?0;
}
CDDrawData::~CDDrawData()
{
????Destroyobjects();
}
HRESULT?CDDrawData::Init(HWND?hWndRECT?rect)
{
????HRESULT?hr;
????//?Cleanup?anything?from?a?previous?call
????Destroyobjects();
????//?DDraw?stuff?begins?here
????if(?FAILED(?hr?=?DirectDrawCreateEx(?NULL?(VOID**)&m_pDD
?????????????????????????????????????????IID_IDirectDraw7?NULL?)?)?)
????????return?E_FAIL;
????//?Set?cooperative?level
????hr?=?m_pDD->SetCooperativeLevel(?hWnd?DDSCL_NORMAL?);
????if(?FAILED(hr)?)
????????return?E_FAIL;
????
????DWORD?dwWidthdwHeight;
????dwWidth?=?rect.right-rect.left;
????dwHeight?=?rect.bottom?-?rect.top;
?/*???RECT??rcWork;
????RECT??rc;
????DWORD?dwstyle;
????//?If?we?are?still?a?WS_POPUP?window?we?should?convert?to?a?normal?app
????//?window?so?we?look?like?a?windows?app.
????dwstyle??=?GetWindowstyle(?hWnd?);
????dwstyle?&=?~WS_POPUP;
????dwstyle?|=?WS_OVERLAPPED?|?WS_CAPTION?|?WS_THICKframe?|?WS_MINIMIZEBOX;
????SetWindowLong(?hWnd?GWL_style?dwstyle?);
????//?Aet?window?size
????SetRect(?&rc?0?0?dwWidth?dwHeight?);
????AdjustWindowRectEx(?&rc?GetWindowstyle(hWnd)?GetMenu(hWnd)?!=?NULL
????????????????????????GetWindowExstyle(hWnd)?);
????SetWindowPos(?hWnd?NULL?0?0?rc.right-rc.left?rc.bottom-rc.top
??????????????????SWP_NOMOVE?|?SWP_NOZORDER?|?SWP_NOACTIVATE?);
????SetWindowPos(?hWnd?HWND_NOTOPMOST?0?0?0?0
??????????????????SWP_NOSIZE?|?SWP_NOMOVE?|?SWP_NOACTIVATE?);
????//??Make?sure?our?window?does?not?hang?outside?of?the?work?area
????SystemParametersInfo(?SPI_GETWORKAREA?0?&rcWork?0?);
????GetWindowRect(?hWnd?&rc?);
????if(?rc.left?????if(?rc.top??????SetWindowPos(?hWnd?NULL?rc.left?rc.top?0?0
??????????????????SWP_NOSIZE?|?SWP_NOZORDER?|?SWP_NOACTIVATE?);
*/
????GetWindowRect(?hWnd?&m_rcWindow?);
????LPDIRECTDRAWCLIPPER?pcClipper;
????
????//?Create?the?primary?surface
????DDSURFACEDESC2?ddsd;
????ZeroMemory(?&ddsd?sizeof(?ddsd?)?);
????ddsd.dwSize?????????=?sizeof(?ddsd?);
????ddsd.dwFlags????????=?DDSD_CAPS;
????ddsd.ddsCaps.dwCaps?=?DDSCAPS_PRIMARYSURFACE;
????if(?FAILED(?m_pDD->CreateSurface(?&ddsd?&m_pddsFrontBuffer?NULL?)?)?)
????????return?E_FAIL;
?????if(?FAILED(?hr?=?m_pDD->CreateClipper(?0?&pcClipper?NULL?)?)?)
????????return?E_FAIL;
????if(?FAILED(?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????7995??2014-03-10?15:46??yuvdisplay.cpp
?????文件????????904??2014-03-10?15:46??yuvdisplay.h
?????文件??????13969??2014-03-10?15:46??DDrawData.cpp
?????文件???????2169??2014-03-10?15:46??DDrawData.h
?????文件???????6431??2014-10-21?09:49??DecoderRtp.cpp
?????文件???????1073??2014-10-21?09:49??DecoderRtp.h
-----------?---------??----------?-----??----
????????????????32541????????????????????6
評(píng)論
共有 條評(píng)論