Skip to content

Commit

Permalink
Merge pull request xbmc#23596 from CrystalP/videopicture-avtypes
Browse files Browse the repository at this point in the history
[videoplayer] use ffmpeg types in VideoPicture
  • Loading branch information
CrystalP authored Aug 10, 2023
2 parents 12f811d + 8090446 commit b9d83af
Show file tree
Hide file tree
Showing 9 changed files with 29 additions and 37 deletions.
4 changes: 2 additions & 2 deletions xbmc/cores/VideoPlayer/DVDCodecs/Video/AddonVideoCodec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -309,12 +309,12 @@ CDVDVideoCodec::VCReturn CAddonVideoCodec::GetPicture(VideoPicture* pVideoPictur
pVideoPicture->pts = static_cast<double>(picture.pts);
pVideoPicture->dts = DVD_NOPTS_VALUE;
pVideoPicture->iFlags = 0;
pVideoPicture->chroma_position = 0;
pVideoPicture->chroma_position = AVCHROMA_LOC_UNSPECIFIED;
pVideoPicture->colorBits = GetColorBitsFromVideoFormat(picture.videoFormat);
pVideoPicture->color_primaries = AVColorPrimaries::AVCOL_PRI_UNSPECIFIED;
pVideoPicture->color_range = 0;
pVideoPicture->color_space = AVCOL_SPC_UNSPECIFIED;
pVideoPicture->color_transfer = 0;
pVideoPicture->color_transfer = AVCOL_TRC_UNSPECIFIED;
pVideoPicture->hasDisplayMetadata = false;
pVideoPicture->hasLightMetadata = false;
pVideoPicture->iDuration = 0;
Expand Down
4 changes: 2 additions & 2 deletions xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ void VideoPicture::Reset()
iFrameType = 0;
color_space = AVCOL_SPC_UNSPECIFIED;
color_range = 0;
chroma_position = 0;
chroma_position = AVCHROMA_LOC_UNSPECIFIED;
color_primaries = AVColorPrimaries::AVCOL_PRI_UNSPECIFIED;
color_transfer = 0;
color_transfer = AVCOL_TRC_UNSPECIFIED;
colorBits = 8;
stereoMode.clear();

Expand Down
8 changes: 4 additions & 4 deletions xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodec.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ struct VideoPicture
double iRepeatPicture;
double iDuration;
unsigned int iFrameType : 4; //< see defines above // 1->I, 2->P, 3->B, 0->Undef
unsigned int color_space;
AVColorSpace color_space;
unsigned int color_range : 1; //< 1 indicate if we have a full range of color
unsigned int chroma_position;
unsigned int color_primaries;
unsigned int color_transfer;
AVChromaLocation chroma_position;
AVColorPrimaries color_primaries;
AVColorTransferCharacteristic color_transfer;
unsigned int colorBits = 8;
std::string stereoMode;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,9 @@ struct SupportedConversionsArgs

SupportedConversionsArgs(const VideoPicture& picture, bool isHdrOutput)
{
m_colorPrimaries = static_cast<AVColorPrimaries>(picture.color_primaries);
m_colorSpace = static_cast<AVColorSpace>(picture.color_space);
m_colorTransfer = static_cast<AVColorTransferCharacteristic>(picture.color_transfer);
m_colorPrimaries = picture.color_primaries;
m_colorSpace = picture.color_space;
m_colorTransfer = picture.color_transfer;
m_fullRange = picture.color_range == 1;
m_hdrOutput = isHdrOutput;
}
Expand Down Expand Up @@ -165,11 +165,11 @@ struct DXGIColorSpaceArgs

DXGIColorSpaceArgs(const VideoPicture& picture)
{
primaries = static_cast<AVColorPrimaries>(picture.color_primaries);
color_space = static_cast<AVColorSpace>(picture.color_space);
color_transfer = static_cast<AVColorTransferCharacteristic>(picture.color_transfer);
primaries = picture.color_primaries;
color_space = picture.color_space;
color_transfer = picture.color_transfer;
full_range = picture.color_range == 1;
chroma_location = static_cast<AVChromaLocation>(picture.chroma_position);
chroma_location = picture.chroma_position;
}

DXGIColorSpaceArgs(AVColorPrimaries primaries,
Expand Down
4 changes: 2 additions & 2 deletions xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ bool CProcessorHD::Open(const VideoPicture& picture,

std::unique_lock<CCriticalSection> lock(m_section);

m_color_primaries = static_cast<AVColorPrimaries>(picture.color_primaries);
m_color_transfer = static_cast<AVColorTransferCharacteristic>(picture.color_transfer);
m_color_primaries = picture.color_primaries;
m_color_transfer = picture.color_transfer;
m_enumerator = enumerator;

if (!InitProcessor())
Expand Down
7 changes: 3 additions & 4 deletions xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,7 @@ bool CLinuxRendererGL::Configure(const VideoPicture &picture, float fps, unsigne
m_iFlags = GetFlagsChromaPosition(picture.chroma_position) |
GetFlagsStereoMode(picture.stereoMode);

m_srcPrimaries = GetSrcPrimaries(static_cast<AVColorPrimaries>(picture.color_primaries),
picture.iWidth, picture.iHeight);
m_srcPrimaries = GetSrcPrimaries(picture.color_primaries, picture.iWidth, picture.iHeight);
m_toneMap = false;

// Calculate the input frame aspect ratio.
Expand Down Expand Up @@ -273,8 +272,8 @@ void CLinuxRendererGL::AddVideoPicture(const VideoPicture &picture, int index)
buf.videoBuffer = picture.videoBuffer;
buf.videoBuffer->Acquire();
buf.loaded = false;
buf.m_srcPrimaries = static_cast<AVColorPrimaries>(picture.color_primaries);
buf.m_srcColSpace = static_cast<AVColorSpace>(picture.color_space);
buf.m_srcPrimaries = picture.color_primaries;
buf.m_srcColSpace = picture.color_space;
buf.m_srcFullRange = picture.color_range == 1;
buf.m_srcBits = picture.colorBits;

Expand Down
7 changes: 3 additions & 4 deletions xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,7 @@ bool CLinuxRendererGLES::Configure(const VideoPicture &picture, float fps, unsig
m_sourceHeight = picture.iHeight;
m_renderOrientation = orientation;

m_srcPrimaries = GetSrcPrimaries(static_cast<AVColorPrimaries>(picture.color_primaries),
picture.iWidth, picture.iHeight);
m_srcPrimaries = GetSrcPrimaries(picture.color_primaries, picture.iWidth, picture.iHeight);
m_toneMap = false;

// Calculate the input frame aspect ratio.
Expand Down Expand Up @@ -169,8 +168,8 @@ void CLinuxRendererGLES::AddVideoPicture(const VideoPicture &picture, int index)
buf.videoBuffer = picture.videoBuffer;
buf.videoBuffer->Acquire();
buf.loaded = false;
buf.m_srcPrimaries = static_cast<AVColorPrimaries>(picture.color_primaries);
buf.m_srcColSpace = static_cast<AVColorSpace>(picture.color_space);
buf.m_srcPrimaries = picture.color_primaries;
buf.m_srcColSpace = picture.color_space;
buf.m_srcFullRange = picture.color_range == 1;
buf.m_srcBits = picture.colorBits;

Expand Down
15 changes: 5 additions & 10 deletions xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ void CRenderBuffer::AppendPicture(const VideoPicture& picture)
videoBuffer->Acquire();

pictureFlags = picture.iFlags;
primaries = static_cast<AVColorPrimaries>(picture.color_primaries);
color_space = static_cast<AVColorSpace>(picture.color_space);
color_transfer = static_cast<AVColorTransferCharacteristic>(picture.color_transfer);
primaries = picture.color_primaries;
color_space = picture.color_space;
color_transfer = picture.color_transfer;
full_range = picture.color_range == 1;
bits = picture.colorBits;
stereoMode = picture.stereoMode;
Expand Down Expand Up @@ -473,13 +473,8 @@ void CRendererBase::CheckVideoParameters()
OnOutputReset();
}

if (m_cmsOn && !m_lutIsLoading)
{
const AVColorPrimaries color_primaries = static_cast<AVColorPrimaries>(buf->primaries);

if (!m_colorManager->CheckConfiguration(m_cmsToken, color_primaries))
OnCMSConfigChanged(color_primaries);
}
if (m_cmsOn && !m_lutIsLoading && !m_colorManager->CheckConfiguration(m_cmsToken, buf->primaries))
OnCMSConfigChanged(buf->primaries);
}

DXGI_FORMAT CRendererBase::GetDXGIFormat(const VideoPicture& picture)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,7 @@ bool CRendererDXVA::Configure(const VideoPicture& picture, float fps, unsigned o
if (!conversions.empty())
{
const ProcessorConversion chosenConversion =
ChooseConversion(conversions, picture.colorBits,
static_cast<AVColorTransferCharacteristic>(picture.color_transfer));
ChooseConversion(conversions, picture.colorBits, picture.color_transfer);
m_intermediateTargetFormat = chosenConversion.m_outputFormat;
m_conversion = chosenConversion;

Expand Down

0 comments on commit b9d83af

Please sign in to comment.