[Deinterlace-checkins] CVS: DScaler5/Filters/Decoders/DivxVideo DivxDecoder.cpp, 1.19, 1.20 DivxDec
Brought to you by:
adcockj,
dschmelzer
From: John A. <ad...@us...> - 2007-12-15 14:49:33
|
Update of /cvsroot/deinterlace/DScaler5/Filters/Decoders/DivxVideo In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv6598/Filters/Decoders/DivxVideo Modified Files: DivxDecoder.cpp DivxDecoder.h DivxVideo2005.vcproj Log Message: Start code fixes for h264 Deactivate made safer Index: DivxDecoder.cpp =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/Filters/Decoders/DivxVideo/DivxDecoder.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -r1.19 -r1.20 *** DivxDecoder.cpp 11 Dec 2007 18:07:36 -0000 1.19 --- DivxDecoder.cpp 15 Dec 2007 14:49:29 -0000 1.20 *************** *** 26,29 **** --- 26,33 ---- // // $Log$ + // Revision 1.20 2007/12/15 14:49:29 adcockj + // Start code fixes for h264 + // Deactivate made safer + // // Revision 1.19 2007/12/11 18:07:36 adcockj // try this for timestamp issues *************** *** 619,625 **** else { ! // return early if until we get the sync point flag ! // TODO: need to check this doesn't hang with haali splitter ! return S_OK ; } } --- 623,647 ---- else { ! // return early if until we get an SPS start code ! if(m_CodecContext->codec_tag == MAKEFOURCC('A', 'V', 'C', '1')) ! { ! if(pSampleProperties->pbBuffer[0] != 0 || ! pSampleProperties->pbBuffer[1] != 0 || ! pSampleProperties->pbBuffer[2] != 0 || ! pSampleProperties->pbBuffer[4] != 0x67) ! { ! return S_OK; ! } ! } ! else ! { ! if(pSampleProperties->pbBuffer[0] != 0 || ! pSampleProperties->pbBuffer[1] != 0 || ! pSampleProperties->pbBuffer[2] != 0x01 || ! pSampleProperties->pbBuffer[3] != 0x67) ! { ! return S_OK; ! } ! } } } *************** *** 698,702 **** HRESULT hr = S_OK; TCHAR frametype[] = {'?','I', 'P', 'B', 'S', '1', '2',}; ! LOG(DBGLOG_FLOW, ("%010I64d - %010I64d [%c] [repeat %d keyframe %d int %d tff %d]\n", CurrentPicture->m_rtStartCoded, CurrentPicture->m_rtStartDisplay, frametype[NextFrame.pict_type], --- 720,724 ---- HRESULT hr = S_OK; TCHAR frametype[] = {'?','I', 'P', 'B', 'S', '1', '2',}; ! LOG(DBGLOG_FLOW, ("%010I64d - %010I64d [%c] [repeat %d keyframe %d int %d tff %d] %d\n", CurrentPicture->m_rtStartCoded, CurrentPicture->m_rtStartDisplay, frametype[NextFrame.pict_type], *************** *** 704,708 **** NextFrame.key_frame, NextFrame.interlaced_frame, ! NextFrame.top_field_first)); if(m_fWaitForKeyFrame) --- 726,731 ---- NextFrame.key_frame, NextFrame.interlaced_frame, ! NextFrame.top_field_first, ! NextFrame.coded_picture_number)); if(m_fWaitForKeyFrame) *************** *** 825,829 **** --- 848,861 ---- // tell the next filter that this is film if(m_NextFrameDeint == DIWeave) + { Props.dwTypeSpecificFlags |= AM_VIDEO_FLAG_WEAVE; + } + else + { + if(NextFrame.top_field_first) + { + Props.dwTypeSpecificFlags |= AM_VIDEO_FLAG_FIELD1FIRST; + } + } if(FAILED(hr = pOut2->SetProperties(sizeof(AM_SAMPLE2_PROPERTIES), (BYTE*)&Props))) *************** *** 987,990 **** --- 1019,1024 ---- HRESULT CDivxDecoder::Deactivate() { + CProtectCode WhileVarInScope2(&m_DeliverLock); + if(m_Codec != NULL) { *************** *** 1159,1163 **** int RetVal = m_OldGetBuffer(c, pic); CFrameBuffer* FrameBuffer = GetNextBuffer(); ! FrameBuffer->m_rtStartCoded = m_LastInputTime; pic->opaque = FrameBuffer; return RetVal; --- 1193,1205 ---- int RetVal = m_OldGetBuffer(c, pic); CFrameBuffer* FrameBuffer = GetNextBuffer(); ! LOG(DBGLOG_FLOW, ("Get ref - %d type - %d age - %d cpn - %d\n", pic->reference, pic->type, pic->age, pic->coded_picture_number)); ! if(pic->reference) ! { ! FrameBuffer->m_rtStartCoded = m_LastInputTime; ! } ! else ! { ! FrameBuffer->m_rtStartCoded = m_LastInputTime; ! } pic->opaque = FrameBuffer; return RetVal; Index: DivxDecoder.h =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/Filters/Decoders/DivxVideo/DivxDecoder.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** DivxDecoder.h 11 Dec 2007 17:59:11 -0000 1.9 --- DivxDecoder.h 15 Dec 2007 14:49:29 -0000 1.10 *************** *** 38,42 **** } - DEFINE_GUID(CLSID_CDivxDecoder, 0x4775acfd, 0x8fe4, 0x483d, 0x96, 0x2b, 0xaf, 0x4b, 0x5e, 0x74, 0xb3, 0xbf); --- 38,41 ---- Index: DivxVideo2005.vcproj =================================================================== RCS file: /cvsroot/deinterlace/DScaler5/Filters/Decoders/DivxVideo/DivxVideo2005.vcproj,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** DivxVideo2005.vcproj 11 Dec 2007 17:59:11 -0000 1.3 --- DivxVideo2005.vcproj 15 Dec 2007 14:49:29 -0000 1.4 *************** *** 62,65 **** --- 62,66 ---- WarningLevel="3" SuppressStartupBanner="true" + DebugInformationFormat="3" CompileAs="0" /> *************** *** 84,87 **** --- 85,89 ---- AdditionalLibraryDirectories="..\..\..\Release" ModuleDefinitionFile=".\DivxVideo.def" + GenerateDebugInformation="true" ProgramDatabaseFile=".\Release/DivxVideo.pdb" SubSystem="2" |