IMediaSideData
| 89 | |
| 90 | // IMediaSideData |
| 91 | STDMETHODIMP CMediaSampleSideData::SetSideData(GUID guidType, const BYTE *pData, size_t size) |
| 92 | { |
| 93 | if (!pData || !size) |
| 94 | return E_POINTER; |
| 95 | |
| 96 | CAutoLock Lock(&m_csSideData); |
| 97 | |
| 98 | auto it = m_SideData.find(guidType); |
| 99 | if (it != m_SideData.end()) |
| 100 | { |
| 101 | SideDataEntry *sd = &(it->second); |
| 102 | BYTE *newData = (BYTE *)_aligned_realloc(sd->pData, size, 16); |
| 103 | if (newData) { |
| 104 | sd->size = size; |
| 105 | sd->pData = newData; |
| 106 | memcpy(newData, pData, size); |
| 107 | } |
| 108 | else |
| 109 | { |
| 110 | return E_OUTOFMEMORY; |
| 111 | } |
| 112 | } |
| 113 | else |
| 114 | { |
| 115 | SideDataEntry sd; |
| 116 | sd.pData = (BYTE *)_aligned_malloc(size, 16); |
| 117 | if (sd.pData) { |
| 118 | sd.size = size; |
| 119 | memcpy(sd.pData, pData, size); |
| 120 | } |
| 121 | else |
| 122 | { |
| 123 | return E_OUTOFMEMORY; |
| 124 | } |
| 125 | |
| 126 | m_SideData[guidType] = sd; |
| 127 | } |
| 128 | |
| 129 | return S_OK; |
| 130 | } |
| 131 | |
| 132 | STDMETHODIMP CMediaSampleSideData::GetSideData(GUID guidType, const BYTE **pData, size_t *pSize) |
| 133 | { |
nothing calls this directly
no outgoing calls
no test coverage detected