Compare commits
7 Commits
libwebm-1.
...
libwebm-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91dbee4b6e | ||
|
|
1e6c5cbaf7 | ||
|
|
c62b9f8a21 | ||
|
|
5dd6000dc7 | ||
|
|
3ea595b132 | ||
|
|
14e42cf98b | ||
|
|
30bf3472bf |
26
RELEASE.TXT
26
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
|
1.0.0.2
|
||||||
* added support for Cues element
|
* added support for Cues element
|
||||||
* seeking was improved
|
* seeking was improved
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ void mkvparser::GetVersion(int& major, int& minor, int& build, int& revision)
|
|||||||
major = 1;
|
major = 1;
|
||||||
minor = 0;
|
minor = 0;
|
||||||
build = 0;
|
build = 0;
|
||||||
revision = 6;
|
revision = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2340,7 +2340,7 @@ void CuePoint::TrackPosition::Parse(
|
|||||||
|
|
||||||
assert(m_pos >= 0);
|
assert(m_pos >= 0);
|
||||||
assert(m_track > 0);
|
assert(m_track > 0);
|
||||||
assert(m_block > 0);
|
//assert(m_block > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -3125,7 +3125,7 @@ long Track::GetNext(
|
|||||||
|
|
||||||
pNextEntry = pCluster->GetNext(pCurrEntry);
|
pNextEntry = pCluster->GetNext(pCurrEntry);
|
||||||
|
|
||||||
for (int i = 0; i < 100; ++i) //arbitrary upper bound to search
|
for (int i = 0; ; )
|
||||||
{
|
{
|
||||||
while (pNextEntry)
|
while (pNextEntry)
|
||||||
{
|
{
|
||||||
@@ -3171,6 +3171,14 @@ long Track::GetNext(
|
|||||||
}
|
}
|
||||||
|
|
||||||
pNextEntry = pCluster->GetFirst();
|
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
|
//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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ protected:
|
|||||||
EOSBlock();
|
EOSBlock();
|
||||||
|
|
||||||
bool EOS() const;
|
bool EOS() const;
|
||||||
Cluster* GetCluster() const;
|
const Cluster* GetCluster() const;
|
||||||
size_t GetIndex() const;
|
size_t GetIndex() const;
|
||||||
const Block* GetBlock() const;
|
const Block* GetBlock() const;
|
||||||
bool IsBFrame() const;
|
bool IsBFrame() const;
|
||||||
|
|||||||
15
sample.cpp
15
sample.cpp
@@ -220,7 +220,7 @@ int main(int argc, char* argv[])
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
mkvparser::Cluster* pCluster = pSegment->GetFirst();
|
const mkvparser::Cluster* pCluster = pSegment->GetFirst();
|
||||||
|
|
||||||
while ((pCluster != NULL) && !pCluster->EOS())
|
while ((pCluster != NULL) && !pCluster->EOS())
|
||||||
{
|
{
|
||||||
@@ -238,15 +238,22 @@ int main(int argc, char* argv[])
|
|||||||
const unsigned long trackNum = pBlock->GetTrackNumber();
|
const unsigned long trackNum = pBlock->GetTrackNumber();
|
||||||
const Track* const pTrack = pTracks->GetTrackByNumber(trackNum);
|
const Track* const pTrack = pTracks->GetTrackByNumber(trackNum);
|
||||||
const long long trackType = pTrack->GetType();
|
const long long trackType = pTrack->GetType();
|
||||||
const long size = pBlock->GetSize();
|
const int frameCount = pBlock->GetFrameCount();
|
||||||
const long long time_ns = pBlock->GetTime(pCluster);
|
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",
|
(trackType == VIDEO_TRACK) ? "V" : "A",
|
||||||
size,
|
|
||||||
pBlock->IsKey() ? "I" : "P",
|
pBlock->IsKey() ? "I" : "P",
|
||||||
time_ns);
|
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);
|
pBlockEntry = pCluster->GetNext(pBlockEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user