#include "VideoFrame.h"

VideoFrame::VideoFrame()
{
    mYuv420Buffer = nullptr;
}

VideoFrame::~VideoFrame()
{
    if (mYuv420Buffer != nullptr)
    {
        free(mYuv420Buffer);
        mYuv420Buffer = nullptr;
    }
}

void VideoFrame::initBuffer(const int &width, const int &height)
{
    if (mYuv420Buffer != nullptr)
    {
        free(mYuv420Buffer);
        mYuv420Buffer = nullptr;
    }

    mWidth  = width;
    mHegiht = height;

    mYuv420Buffer = (uint8_t*)malloc(width * height * 3 / 2);

}

void VideoFrame::setYUVbuf(const uint8_t *buf)
{
    int Ysize = mWidth * mHegiht;
    memcpy(mYuv420Buffer, buf, Ysize * 3 / 2);
}

void VideoFrame::setYbuf(const uint8_t *buf)
{
    int Ysize = mWidth * mHegiht;
    memcpy(mYuv420Buffer, buf, Ysize);
}

void VideoFrame::setUbuf(const uint8_t *buf)
{
    int Ysize = mWidth * mHegiht;
    memcpy(mYuv420Buffer + Ysize, buf, Ysize / 4);
}

void VideoFrame::setVbuf(const uint8_t *buf)
{
    int Ysize = mWidth * mHegiht;
    memcpy(mYuv420Buffer + Ysize + Ysize / 4, buf, Ysize / 4);
}