void YCbCrImageDataSerializer::InitializeBufferInfo(uint32_t aYOffset, uint32_t aCbOffset, uint32_t aCrOffset, uint32_t aYStride, uint32_t aCbCrStride, const gfx::IntSize& aYSize, const gfx::IntSize& aCbCrSize, StereoMode aStereoMode) { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData, mDataSize); MOZ_ASSERT(info); // OK to assert here, this method is client-side-only uint32_t info_size = MOZ_ALIGN_WORD(sizeof(YCbCrBufferInfo)); info->mYOffset = info_size + aYOffset; info->mCbOffset = info_size + aCbOffset; info->mCrOffset = info_size + aCrOffset; info->mYStride = aYStride; info->mYWidth = aYSize.width; info->mYHeight = aYSize.height; info->mCbCrStride = aCbCrStride; info->mCbCrWidth = aCbCrSize.width; info->mCbCrHeight = aCbCrSize.height; info->mStereoMode = aStereoMode; Validate(); }
void YCbCrImageDataSerializer::InitializeBufferInfo(const gfx::IntSize& aYSize, const gfx::IntSize& aCbCrSize) { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData); info->mYOffset = MOZ_ALIGN_WORD(sizeof(YCbCrBufferInfo)); info->mCbOffset = info->mYOffset + MOZ_ALIGN_WORD(aYSize.width * aYSize.height); info->mCrOffset = info->mCbOffset + MOZ_ALIGN_WORD(aCbCrSize.width * aCbCrSize.height); info->mYWidth = aYSize.width; info->mYHeight = aYSize.height; info->mCbCrWidth = aCbCrSize.width; info->mCbCrHeight = aCbCrSize.height; }
void YCbCrImageDataDeserializerBase::Validate() { mIsValid = false; if (!mData) { return; } YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData, mDataSize); if (!info) { return; } size_t requiredSize = ComputeMinBufferSize( IntSize(info->mYWidth, info->mYHeight), info->mYStride, IntSize(info->mCbCrWidth, info->mCbCrHeight), info->mCbCrStride); mIsValid = requiredSize && requiredSize <= mDataSize; }
gfxIntSize YCbCrImageDataDeserializerBase::GetCbCrSize() { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData); return gfxIntSize(info->mCbCrWidth, info->mCbCrHeight); }
uint32_t YCbCrImageDataDeserializerBase::GetCbCrStride() { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData); return info->mCbCrWidth; }
uint8_t* YCbCrImageDataDeserializerBase::GetData() { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData); return (reinterpret_cast<uint8_t*>(info)) + MOZ_ALIGN_WORD(sizeof(YCbCrBufferInfo)); }
uint8_t* YCbCrImageDataDeserializerBase::GetCrData() { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData); return reinterpret_cast<uint8_t*>(info) + info->mCrOffset; }
StereoMode YCbCrImageDataDeserializerBase::GetStereoMode() { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData, mDataSize); return info->mStereoMode; }
gfx::IntSize YCbCrImageDataDeserializerBase::GetYSize() { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData, mDataSize); return gfx::IntSize(info->mYWidth, info->mYHeight); }
uint32_t YCbCrImageDataDeserializerBase::GetYStride() { YCbCrBufferInfo* info = GetYCbCrBufferInfo(mData, mDataSize); return info->mYStride; }