[matroska] r1117 - trunk/DvdMenuXtractor
[email protected] Sat, 9 Apr 2005 22:30:33 +0400 (MSD)
Newsgroups
gmane.comp.multimedia.matroska.cvs
Message-ID
<[email protected] >
Author: robux4
Date: 2005-04-09 22:30:20 +0400 (Sat, 09 Apr 2005)
New Revision: 1117
Modified:
trunk/DvdMenuXtractor/VobParser.cpp
Log:
DMX: better detection of video gaps at the end of cells, but still not very good...
Modified: trunk/DvdMenuXtractor/VobParser.cpp
===================================================================
--- trunk/DvdMenuXtractor/VobParser.cpp 2005-04-09 18:28:58 UTC (rev 1116)
+++ trunk/DvdMenuXtractor/VobParser.cpp 2005-04-09 18:30:20 UTC (rev 1117)
@@ -664,7 +664,7 @@
ParsePESHeaderData();
m_demuxer.ProcessStream(VIDEO_STREAM, &m_buff[m_index],
- length - 3 - pes_header_data_content.PES_header_data_len, pktinfo.pts/90, pktinfo.dts/90, wxString::Format("DTS %d PTS %d - %d %d\n", m_startdts/90, m_startpts/90, pktinfo.dts/90, pktinfo.pts/90));
+ length - 3 - pes_header_data_content.PES_header_data_len, pktinfo.dts/90, pktinfo.pts/90, wxString::Format("DTS %d PTS %d - %d %d\n", m_startdts/90, m_startpts/90, pktinfo.dts/90, pktinfo.pts/90));
}
void VobParser::ParseAudioPacket(int StreamID)
@@ -921,17 +921,8 @@
void VideoDemuxWriter::WriteTimecodeInfo(uint32_t start_time, uint32_t end_time, uint64_t filepos, const wxString & debug)
{
- m_TimecodeFile = GetTimecodeFile();
- if (start_time > m_last_end_timecode)
- {
- if (m_last_end_timecode > m_start_timecode)
- fprintf(m_TimecodeFile, "%lf\n", (m_last_end_timecode - m_start_timecode) / 1000.0);
- fprintf(m_TimecodeFile, "%lf\n", (m_last_end_timecode - m_last_start_timecode) / 1000.0);
- fprintf(m_TimecodeFile, "gap,%lf\n", (start_time - m_last_end_timecode) / 1000.0);
- m_start_timecode = start_time;
- }
- m_last_start_timecode = start_time;
- m_last_end_timecode = end_time;
+ if (end_time > m_last_end_timecode)
+ m_last_end_timecode = end_time;
}
// ============================================================================
@@ -940,12 +931,19 @@
{
m_TimecodeFile = GetTimecodeFile();
+ m_last_end_timecode += 1000.0 / m_fps;
+
if (m_end_timecode != 0)
{
if (m_is_still) {
fwrite(" (Still)\n", 1, 9, m_TimecodeFile);
fprintf(m_TimecodeFile, "%lf,%lf\n", (m_end_timecode - m_start_timecode) / 1000.0, 1000.0 / (m_end_timecode - m_start_timecode));
}
+ else if (m_last_end_timecode < m_end_timecode)
+ {
+ fprintf(m_TimecodeFile, "\n%lf\n", (m_last_end_timecode - m_start_timecode) / 1000.0);
+ fprintf(m_TimecodeFile, "gap,%lf\n", (m_end_timecode - m_last_end_timecode) / 1000.0);
+ }
else
fprintf(m_TimecodeFile, "\n%lf\n", (m_end_timecode - m_start_timecode) / 1000.0);
}
@@ -1073,12 +1071,20 @@
{
m_TimecodeFile = GetTimecodeFile();
+ m_last_end_timecode += 1000.0 / m_fps;
+
if (m_end_timecode != 0)
{
if (m_is_still) {
fwrite(" (Still)\n", 1, 9, m_TimecodeFile);
fprintf(m_TimecodeFile, "%lf,%lf\n", (m_end_timecode - m_start_timecode) / 1000.0, 1000.0 / (m_end_timecode - m_start_timecode));
- } else
+ }
+ else if (m_last_end_timecode < m_end_timecode)
+ {
+ fprintf(m_TimecodeFile, "\n%lf\n", (m_last_end_timecode - m_start_timecode) / 1000.0);
+ fprintf(m_TimecodeFile, "gap,%lf\n", (m_end_timecode - m_last_end_timecode) / 1000.0);
+ }
+ else
fprintf(m_TimecodeFile, "\n%lf\n", (m_end_timecode - m_start_timecode) / 1000.0);
}
}