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;
}
Exemple #2
0
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);
}