[Mediaportal-svn] SF.net SVN: mediaportal: [17217] trunk/TvEngine3/Filters/sources/ NewTsWriter/sou
Turn your PC into a very advanced MediaCenter/HTPC
Brought to you by:
gereonheitmann,
morpheus_xx
From: <ge...@us...> - 2008-01-30 14:45:02
|
Revision: 17217 http://mediaportal.svn.sourceforge.net/mediaportal/?rev=17217&view=rev Author: gemx Date: 2008-01-30 06:44:54 -0800 (Wed, 30 Jan 2008) Log Message: ----------- Some changes for new TsWriter Modified Paths: -------------- trunk/TvEngine3/Filters/sources/NewTsWriter/source/NITDecoder.cpp trunk/TvEngine3/Filters/sources/NewTsWriter/source/Section.cpp trunk/TvEngine3/Filters/sources/NewTsWriter/source/SectionDecoder.cpp trunk/TvEngine3/Filters/sources/NewTsWriter/source/TsWriter.cpp Modified: trunk/TvEngine3/Filters/sources/NewTsWriter/source/NITDecoder.cpp =================================================================== --- trunk/TvEngine3/Filters/sources/NewTsWriter/source/NITDecoder.cpp 2008-01-30 14:42:50 UTC (rev 17216) +++ trunk/TvEngine3/Filters/sources/NewTsWriter/source/NITDecoder.cpp 2008-01-30 14:44:54 UTC (rev 17217) @@ -37,7 +37,7 @@ void CNITDecoder::OnNewSection(CSection& sections) { - byte* section=&(sections.Data[5]); + byte* section=sections.Data; decodeNITTable(section); } Modified: trunk/TvEngine3/Filters/sources/NewTsWriter/source/Section.cpp =================================================================== --- trunk/TvEngine3/Filters/sources/NewTsWriter/source/Section.cpp 2008-01-30 14:42:50 UTC (rev 17216) +++ trunk/TvEngine3/Filters/sources/NewTsWriter/source/Section.cpp 2008-01-30 14:44:54 UTC (rev 17217) @@ -50,7 +50,7 @@ bool CSection::DecodeHeader() { - if (BufferPos<8) return false; + //if (BufferPos<8) return false; TableId=Data[0]; SectionSyntaxIndicator = (Data[1]>>7) & 1; SectionLength=((Data[1] & 0xF) << 8) + Data[2]; Modified: trunk/TvEngine3/Filters/sources/NewTsWriter/source/SectionDecoder.cpp =================================================================== --- trunk/TvEngine3/Filters/sources/NewTsWriter/source/SectionDecoder.cpp 2008-01-30 14:42:50 UTC (rev 17216) +++ trunk/TvEngine3/Filters/sources/NewTsWriter/source/SectionDecoder.cpp 2008-01-30 14:44:54 UTC (rev 17217) @@ -94,7 +94,7 @@ { int newstart=-1; int len=-1; - if (index+sectionLen < 186) + if (index+sectionLen < 184) { len=sectionLen+3; newstart = index+sectionLen+3; @@ -107,6 +107,7 @@ m_section.Reset(); memcpy(m_section.Data,&tsPacket[index],len); m_section.BufferPos=len; + m_section.DecodeHeader(); return newstart; } @@ -134,11 +135,21 @@ int CSectionDecoder::SnapshotSectionLength(byte* tsPacket,int start) { - if (start >= 185) + if (start >= 184) return -1; return (int)(((tsPacket[start+1] & 0xF) << 8) + tsPacket[start+2]); } +bool OnlyStuffingBytesFollowing(byte* tsPacket,int start) +{ + for (int i=start;i<188;i++) + { + if (tsPacket[i]!=0xFF) + return false; + } + return true; +} + void CSectionDecoder::OnTsPacket(CTsHeader& header,byte* tsPacket) { try @@ -151,6 +162,11 @@ int start = header.PayLoadStart; if (header.PayloadUnitStart) { + if (m_section.BufferPos != 0) + { + OnNewSection(m_section); + m_section.Reset(); + } int n = tsPacket[start]; start = start + n + 1; @@ -173,12 +189,14 @@ while (start < 188) { - if (tsPacket[start] == 0xFF) break; // Only stuffing bytes following + // if (tsPacket[start] == 0xFF) break; // Only stuffing bytes following - THAT'S WRONG 0xFF is just reserved. Other sections maybe following + if (OnlyStuffingBytesFollowing(tsPacket,start)) + break; if (m_section.BufferPos==0) { int section_length=SnapshotSectionLength(tsPacket,start); if (section_length!=-1) - start+=StartNewSection(tsPacket,start,section_length); + start=StartNewSection(tsPacket,start,section_length); else break; } Modified: trunk/TvEngine3/Filters/sources/NewTsWriter/source/TsWriter.cpp =================================================================== --- trunk/TvEngine3/Filters/sources/NewTsWriter/source/TsWriter.cpp 2008-01-30 14:42:50 UTC (rev 17216) +++ trunk/TvEngine3/Filters/sources/NewTsWriter/source/TsWriter.cpp 2008-01-30 14:44:54 UTC (rev 17217) @@ -328,8 +328,8 @@ { m_id=0; + DeleteFile("TsWriter.log"); LogDebug("CMpTs::ctor()"); - DeleteFile("TsWriter.log"); b_dumpRawPakets=false; m_pFilter = new CMpTsFilter(this, GetOwner(), &m_Lock, phr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |