bool EncodeInputCamera::getOneFrameInput(VideoFrameRawData &inputBuffer) { int frameIndex = dequeFrame(); ASSERT((frameIndex >= 0) && ((uint32_t)frameIndex < m_frameBufferCount)); memset(&inputBuffer, 0, sizeof(inputBuffer)); bool ret = fillFrameRawData(&inputBuffer, m_fourcc, m_width, m_height, m_frameBuffers[frameIndex]); if(ret) inputBuffer.internalID = frameIndex; return ret; }
Encode_Status VaapiEncoderBase::encode(VideoEncRawBuffer *inBuffer) { FUNC_ENTER(); if (!inBuffer || (!inBuffer->data && !inBuffer->size)) { // XXX handle EOS when there is B frames inBuffer->bufAvailable = true; return ENCODE_SUCCESS; } VideoFrameRawData frame; if (!fillFrameRawData(&frame, inBuffer->fourcc, width(), height(), inBuffer->data)) return ENCODE_INVALID_PARAMS; inBuffer->bufAvailable = true; if (inBuffer->forceKeyFrame) frame.flags |= VIDEO_FRAME_FLAGS_KEY; frame.timeStamp = inBuffer->timeStamp; return encode(&frame); }