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

github.com/mpc-hc/LAVFilters.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2016-11-28 16:34:28 +0300
committerHendrik Leppkes <h.leppkes@gmail.com>2016-11-28 17:20:12 +0300
commit8b2deccd005e305e8cc524eb941c9e7ef549d774 (patch)
treed18f0b936faf37974f46c58f2896074b48e99b3f /demuxer/Demuxers/LAVFDemuxer.cpp
parent68a6ab2501ce2ef91b409215324140b3642697fd (diff)
Add functions to export stream-level sidedata through the output pin
Diffstat (limited to 'demuxer/Demuxers/LAVFDemuxer.cpp')
-rw-r--r--demuxer/Demuxers/LAVFDemuxer.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/demuxer/Demuxers/LAVFDemuxer.cpp b/demuxer/Demuxers/LAVFDemuxer.cpp
index 1c28c839..18b42de2 100644
--- a/demuxer/Demuxers/LAVFDemuxer.cpp
+++ b/demuxer/Demuxers/LAVFDemuxer.cpp
@@ -24,6 +24,7 @@
#include "ILAVPinInfo.h"
#include "LAVFVideoHelper.h"
#include "ExtradataParser.h"
+#include "IMediaSideDataFFmpeg.h"
#include "LAVSplitterSettingsInternal.h"
@@ -2501,6 +2502,27 @@ STDMETHODIMP_(int) CLAVFDemuxer::GetHasBFrames(DWORD dwStream)
return m_avFormat->streams[dwStream]->codecpar->video_delay;
}
+STDMETHODIMP CLAVFDemuxer::GetSideData(DWORD dwStream, GUID guidType, const BYTE **pData, size_t *pSize)
+{
+ if (!m_avFormat || dwStream >= m_avFormat->nb_streams)
+ return E_INVALIDARG;
+
+ if (guidType == IID_MediaSideDataFFMpeg) {
+ CBaseDemuxer::stream *pStream = FindStream(dwStream);
+ if (!pStream)
+ return E_FAIL;
+
+ pStream->SideData.side_data = m_avFormat->streams[dwStream]->side_data;
+ pStream->SideData.side_data_elems = m_avFormat->streams[dwStream]->nb_side_data;
+ *pData = (BYTE*)&pStream->SideData;
+ *pSize = sizeof(pStream->SideData);
+
+ return S_OK;
+ }
+
+ return E_INVALIDARG;
+}
+
STDMETHODIMP CLAVFDemuxer::GetBSTRMetadata(const char *key, BSTR *pbstrValue, int stream)
{
if (!m_avFormat)