From 1d33a540cdb3d04128c7d4801e2357217252ed8d Mon Sep 17 00:00:00 2001 From: latelee Date: Sun, 16 Mar 2014 19:17:39 +0800 Subject: [PATCH] new branch for thread. no ok. Signed-off-by: latelee --- H264BSAnalyzer/H264BSAnalyzer.aps | Bin 108160 -> 91716 bytes H264BSAnalyzer/H264BSAnalyzerDlg.cpp | 67 ++++++++++++++++++++++++++- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/H264BSAnalyzer/H264BSAnalyzer.aps b/H264BSAnalyzer/H264BSAnalyzer.aps index 2852ccebb3e9496af014e66a70f69ecdc995e6f1..aaa1d0b383bbd6879d445db552f482bcbd9a9be7 100644 GIT binary patch delta 1111 zcmZuwT}YE*6h3GF%fD&LbUKl#(~HnK^M|r%Zqv=oStyA~N`y#8SyUGiVJRU?LO9W@ zx$-BGU4$TB=*8+P$jYFb?j*dli$GzJ5cGAvZw-Ief%p5~^E}V_`Of=(Ltk|7*R|sw zwc`p>dPCiCe{iKgh*Qbx&jc$*f$gZ0B+)a0Hm$_=h;|ySVtxXvWq4x(d*!!h63Z;G z&s42?=zuOr0y#*GO`<)4uZ7!SQ23SgNz72mi8iNV34I}@z{*ev2Q;E*7PAn)D0 z8nUTVWy#HviEdYYpuH{j^tVB!v!=!g7E13hXXh%s&)eJ@qZRTv=V9@3ox1Z(*|_R(iy!w|RCaRPG1C}mqp>e(&-Ktlzl$FGy8eST(G7pb zkv%O9`Nt^YuC?kkhbw;CtGJx*DL^&*RN=j#?FXJbef64Y+PjE@)Y33wh>h!)T7h>O z?&=nK#F9imnrxKOaMJiqajT(*(qCoLaAQ?Iz&2+*cn%}pk2pPwmXba`v}^Luo+Jz%QTEa%zg)ho&uFspD)0dx$+rm{b={PWdiqX^8QRWD!jJC~5A-B!JP0ZT6< I{dQab0`1K(O#lD@ delta 9913 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 vNalTypeVector; + int num; +}NALInfo_t; + +NALInfo_t g_foo; + +char* g_file = NULL; +int g_nMaxNalNum = 0; +vector g_vNalTypeVector; + +UINT ExecutingFunction(LPVOID pParam); // CH264BSAnalyzerDlg message handlers BOOL CH264BSAnalyzerDlg::OnInitDialog() @@ -399,6 +416,18 @@ BOOL CH264BSAnalyzerDlg::OnInitDialog() m_edHexInfo.SetOptions(1, 1, 1, 1); m_edHexInfo.SetBPR(16); // 16字节 + // + g_hSemaphore = CreateSemaphore(NULL, 0, 1, NULL); + if (g_hSemaphore == NULL) + { + return FALSE; + } + g_hAdapterOne = CreateSemaphore(NULL, 0, 1, NULL); + + //g_hAdapterOne = OpenSemaphore(MUTEX_ALL_ACCESS, FALSE, "abc"); + + AfxBeginThread(ExecutingFunction, NULL); + return TRUE; // return TRUE unless you set the focus to a control } @@ -459,6 +488,28 @@ void CH264BSAnalyzerDlg::SystemClear() m_nSliceIndex = 0; } +UINT ExecutingFunction(LPVOID pParam) +{ + //NALInfo_t* foo = (NALInfo_t *)pParam; + DWORD dwReturn; + while (1) + { + dwReturn = WaitForSingleObject(g_hSemaphore, 1000 * 60 * 10); + if(WAIT_OBJECT_0 == dwReturn) + { + //AfxMessageBox("abcd"); + + h264_nal_parse_1(g_file, g_vNalTypeVector, g_nMaxNalNum); + //h264_nal_parse_1(g_foo.file, *g_foo.vNalTypeVector, g_foo.num); + //AfxMessageBox("in ExecutingFunction"); + //Sleep(10*1000); + ReleaseSemaphore(g_hAdapterOne, 1, NULL); + } + Sleep(100); + } + return 0; +} + // 打开H264码流文件 void CH264BSAnalyzerDlg::OnBnClickedH264InputurlOpen() { @@ -507,9 +558,21 @@ void CH264BSAnalyzerDlg::OnBnClickedH264InputurlOpen() strcpy(str_szFileUrl,m_strFileUrl.GetBuffer()); + //NALInfo_t foo; + g_foo.file = str_szFileUrl; + g_foo.num = nMaxNalNum; + g_foo.vNalTypeVector = &m_vNalTypeVector; +g_file = str_szFileUrl; +g_nMaxNalNum = nMaxNalNum; +g_vNalTypeVector = m_vNalTypeVector; + ReleaseSemaphore(g_hSemaphore, 1, NULL); + //AfxBeginThread(ExecutingFunction, &foo); + //h264_nal_parse(this,str_szFileUrl); - h264_nal_parse_1(str_szFileUrl, m_vNalTypeVector, nMaxNalNum); + //h264_nal_parse_1(str_szFileUrl, m_vNalTypeVector, nMaxNalNum); + WaitForSingleObject(g_hAdapterOne, INFINITE); + m_vNalTypeVector = g_vNalTypeVector; for (int i = 0; i < (int)m_vNalTypeVector.size(); i++) { // 解析SPS @@ -524,7 +587,7 @@ void CH264BSAnalyzerDlg::OnBnClickedH264InputurlOpen() } ShowNLInfo_1(&m_vNalTypeVector[i]); } - // + // profile类型 switch (sps.profile_idc) { case 66: