Compare commits
7 Commits
libwebm-1.
...
libwebm-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91dbee4b6e | ||
|
|
1e6c5cbaf7 | ||
|
|
c62b9f8a21 | ||
|
|
5dd6000dc7 | ||
|
|
3ea595b132 | ||
|
|
14e42cf98b | ||
|
|
30bf3472bf |
28
RELEASE.TXT
28
RELEASE.TXT
@@ -1,3 +1,29 @@
|
||||
1.0.0.5
|
||||
* Handled case when no duration
|
||||
* Handled empty clusters
|
||||
* Handled empty clusters when seeking
|
||||
* Implemented check lacing bits
|
||||
|
||||
1.0.0.4
|
||||
* Made Cues member variables mutables
|
||||
* Defined against badly-formatted cue points
|
||||
* Segment::GetCluster returns CuePoint too
|
||||
* Separated cue-based searches
|
||||
|
||||
1.0.0.3
|
||||
* Added Block::GetOffset() to get a frame's offset in a block
|
||||
* Changed cluster count type from size_t to long
|
||||
* Parsed SeekHead to find cues
|
||||
* Allowed seeking beyond end of cluster cache
|
||||
* Added not to attempt to reparse cues element
|
||||
* Restructured Segment::LoadCluster
|
||||
* Marked position of cues without parsing cues element
|
||||
* Allowed cue points to be loaded incrementally
|
||||
* Implemented to load lazily cue points as they're searched
|
||||
* Merged Cues::LoadCuePoint into Cues::Find
|
||||
* Lazy init cues
|
||||
* Loaded cue point during find
|
||||
|
||||
1.0.0.2
|
||||
* added support for Cues element
|
||||
* seeking was improved
|
||||
@@ -5,4 +31,4 @@
|
||||
1.0.0.1
|
||||
* fixed item 141
|
||||
* added item 142
|
||||
* added this file, RELEASE.TXT, to repository
|
||||
* added this file, RELEASE.TXT, to repository
|
||||
|
||||
@@ -25,7 +25,7 @@ void mkvparser::GetVersion(int& major, int& minor, int& build, int& revision)
|
||||
major = 1;
|
||||
minor = 0;
|
||||
build = 0;
|
||||
revision = 6;
|
||||
revision = 7;
|
||||
}
|
||||
|
||||
|
||||
@@ -2340,7 +2340,7 @@ void CuePoint::TrackPosition::Parse(
|
||||
|
||||
assert(m_pos >= 0);
|
||||
assert(m_track > 0);
|
||||
assert(m_block > 0);
|
||||
//assert(m_block > 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -3125,7 +3125,7 @@ long Track::GetNext(
|
||||
|
||||
pNextEntry = pCluster->GetNext(pCurrEntry);
|
||||
|
||||
for (int i = 0; i < 100; ++i) //arbitrary upper bound to search
|
||||
for (int i = 0; ; )
|
||||
{
|
||||
while (pNextEntry)
|
||||
{
|
||||
@@ -3171,6 +3171,14 @@ long Track::GetNext(
|
||||
}
|
||||
|
||||
pNextEntry = pCluster->GetFirst();
|
||||
|
||||
if (pNextEntry == NULL) //empty cluster
|
||||
continue;
|
||||
|
||||
++i;
|
||||
|
||||
if (i >= 100)
|
||||
break;
|
||||
}
|
||||
|
||||
//NOTE: if we get here, it means that we didn't find a block with
|
||||
@@ -3193,7 +3201,7 @@ bool Track::EOSBlock::EOS() const
|
||||
}
|
||||
|
||||
|
||||
Cluster* Track::EOSBlock::GetCluster() const
|
||||
const Cluster* Track::EOSBlock::GetCluster() const
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ protected:
|
||||
EOSBlock();
|
||||
|
||||
bool EOS() const;
|
||||
Cluster* GetCluster() const;
|
||||
const Cluster* GetCluster() const;
|
||||
size_t GetIndex() const;
|
||||
const Block* GetBlock() const;
|
||||
bool IsBFrame() const;
|
||||
|
||||
15
sample.cpp
15
sample.cpp
@@ -220,7 +220,7 @@ int main(int argc, char* argv[])
|
||||
return -1;
|
||||
}
|
||||
|
||||
mkvparser::Cluster* pCluster = pSegment->GetFirst();
|
||||
const mkvparser::Cluster* pCluster = pSegment->GetFirst();
|
||||
|
||||
while ((pCluster != NULL) && !pCluster->EOS())
|
||||
{
|
||||
@@ -238,15 +238,22 @@ int main(int argc, char* argv[])
|
||||
const unsigned long trackNum = pBlock->GetTrackNumber();
|
||||
const Track* const pTrack = pTracks->GetTrackByNumber(trackNum);
|
||||
const long long trackType = pTrack->GetType();
|
||||
const long size = pBlock->GetSize();
|
||||
const int frameCount = pBlock->GetFrameCount();
|
||||
const long long time_ns = pBlock->GetTime(pCluster);
|
||||
|
||||
printf("\t\t\tBlock\t\t:%s,%15ld,%s,%15lld\n",
|
||||
printf("\t\t\tBlock\t\t:%s,%s,%15lld\n",
|
||||
(trackType == VIDEO_TRACK) ? "V" : "A",
|
||||
size,
|
||||
pBlock->IsKey() ? "I" : "P",
|
||||
time_ns);
|
||||
|
||||
for (int i = 0; i < frameCount; ++i)
|
||||
{
|
||||
const Block::Frame& theFrame = pBlock->GetFrame(i);
|
||||
const long size = theFrame.len;
|
||||
const long offset = theFrame.pos;
|
||||
printf("\t\t\t %15ld,%15lx\n", size, offset);
|
||||
}
|
||||
|
||||
pBlockEntry = pCluster->GetNext(pBlockEntry);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user