HRESULT TvideoCodecLibmpeg2::decompress(const unsigned char *src,size_t srcLen,IMediaSample *pIn) { TffdshowVideoInputPin::TrateAndFlush *rateInfo = (TffdshowVideoInputPin::TrateAndFlush*)deciV->getRateInfo(); HRESULT hr=decompressI(src,srcLen,pIn); // decompressI temporarily unlocks m_csCodecs_and_imgFilters in TffdshowDecVideo::deliverProcessedSample. Check if the context is valid here. if (rateInfo->m_flushing || rateInfo->m_endflush) { return hr; } int len=(int)(mpeg2dec->buf_end - mpeg2dec->buf_start); if (len>0) { unsigned char *b=(unsigned char *)buffer->alloc(len); memcpy(b, mpeg2dec->buf_start, len); mpeg2_buffer(mpeg2dec, b, b+len); } return hr; }
void decompress(unsigned char s, unsigned char *dst) { dst[0]=decompressI(s & 0x0F); dst[1]=decompressI((s & 0xF0) >> 4); }