Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksoid <aleksoid@users.sourceforge.net>2010-06-19 00:49:41 +0400
committerAleksoid <aleksoid@users.sourceforge.net>2010-06-19 00:49:41 +0400
commitcfa18d44c6892adee5160f397b0c61d070ffb56d (patch)
tree9d3cfd87ec36ad087a10752e45b2735011a3a01c /src/filters/parser
parent81c2ba81b02817c78c4a630d429a6e9892eea87c (diff)
Add : parse .webm files;
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@2059 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/filters/parser')
-rw-r--r--src/filters/parser/MatroskaSplitter/MatroskaFile.cpp3
-rw-r--r--src/filters/parser/MatroskaSplitter/MatroskaSplitter.cpp13
2 files changed, 15 insertions, 1 deletions
diff --git a/src/filters/parser/MatroskaSplitter/MatroskaFile.cpp b/src/filters/parser/MatroskaSplitter/MatroskaFile.cpp
index b6fd7d03a..e6479ddeb 100644
--- a/src/filters/parser/MatroskaSplitter/MatroskaFile.cpp
+++ b/src/filters/parser/MatroskaSplitter/MatroskaFile.cpp
@@ -25,6 +25,7 @@
#include "../../../thirdparty/zlib/zlib.h"
#define DOCTYPE _T("matroska")
+#define DOCTYPE_WEBM _T("webm")
#define DOCTYPEVERSION 2
static void LOG(LPCTSTR fmt, ...)
@@ -113,7 +114,7 @@ HRESULT CMatroskaFile::Parse(CMatroskaNode* pMN0)
BeginChunk
case 0x1A45DFA3:
m_ebml.Parse(pMN);
- if(m_ebml.DocType != DOCTYPE || m_ebml.DocTypeReadVersion > DOCTYPEVERSION)
+ if((m_ebml.DocType != DOCTYPE || m_ebml.DocTypeReadVersion > DOCTYPEVERSION) && m_ebml.DocType != DOCTYPE_WEBM)
return E_FAIL;
break;
case 0x18538067: if(m_segment.SegmentInfo.SegmentUID.IsEmpty()) m_segment.ParseMinimal(pMN); break;
diff --git a/src/filters/parser/MatroskaSplitter/MatroskaSplitter.cpp b/src/filters/parser/MatroskaSplitter/MatroskaSplitter.cpp
index 0fc106282..06df92503 100644
--- a/src/filters/parser/MatroskaSplitter/MatroskaSplitter.cpp
+++ b/src/filters/parser/MatroskaSplitter/MatroskaSplitter.cpp
@@ -337,6 +337,19 @@ avcsuccess:
mts.Add(mt);
}
+ else if(CodecID.Find("V_VP8") == 0)
+ {
+ mt.subtype = FOURCCMap('08PV');
+ mt.formattype = FORMAT_VideoInfo;
+ VIDEOINFOHEADER* pvih = (VIDEOINFOHEADER*)mt.AllocFormatBuffer(sizeof(VIDEOINFOHEADER) + pTE->CodecPrivate.GetCount());
+ memset(mt.Format(), 0, mt.FormatLength());
+ memcpy(mt.Format() + sizeof(VIDEOINFOHEADER), pTE->CodecPrivate.GetData(), pTE->CodecPrivate.GetCount());
+ pvih->bmiHeader.biSize = sizeof(pvih->bmiHeader);
+ pvih->bmiHeader.biWidth = (LONG)pTE->v.PixelWidth;
+ pvih->bmiHeader.biHeight = (LONG)pTE->v.PixelHeight;
+ pvih->bmiHeader.biCompression = mt.subtype.Data1;
+ mts.Add(mt);
+ }
/*
else if(CodecID == "V_DSHOW/MPEG1VIDEO") // V_MPEG1
{