Skip to content

Commit feab422

Browse files
committed
AMLCodec: checkin hdr10p data if available
1 parent d9d4ee2 commit feab422

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ class DllLibamCodecInterface
126126
virtual int codec_resume(codec_para_t *pcodec)=0;
127127
virtual int codec_write(codec_para_t *pcodec, void *buffer, int len)=0;
128128
virtual int codec_checkin_pts_us64(codec_para_t *pcodec, unsigned long long pts)=0;
129+
virtual int codec_checkin_hdr10p_data(codec_para_t *pcodec)=0;
129130
virtual int codec_get_vbuf_state(codec_para_t *pcodec, struct buf_status *buf)=0;
130131
virtual int codec_get_vdec_state(codec_para_t *pcodec, struct vdec_status *vdec)=0;
131132
virtual int codec_get_vdec_info(codec_para_t *pcodec, struct vdec_info *vdec) = 0;
@@ -154,6 +155,7 @@ class DllLibAmCodec : public DllDynamic, DllLibamCodecInterface
154155
DEFINE_METHOD1(int, codec_resume, (codec_para_t *p1))
155156
DEFINE_METHOD3(int, codec_write, (codec_para_t *p1, void *p2, int p3))
156157
DEFINE_METHOD2(int, codec_checkin_pts_us64, (codec_para_t *p1, unsigned long long p2))
158+
DEFINE_METHOD1(int, codec_checkin_hdr10p_data,(codec_para_t *p1))
157159
DEFINE_METHOD2(int, codec_get_vbuf_state, (codec_para_t *p1, struct buf_status * p2))
158160
DEFINE_METHOD2(int, codec_get_vdec_state, (codec_para_t *p1, struct vdec_status * p2))
159161
DEFINE_METHOD2(int, codec_get_vdec_info, (codec_para_t *p1, struct vdec_info * p2))
@@ -177,6 +179,7 @@ class DllLibAmCodec : public DllDynamic, DllLibamCodecInterface
177179
RESOLVE_METHOD(codec_resume)
178180
RESOLVE_METHOD(codec_write)
179181
RESOLVE_METHOD(codec_checkin_pts_us64)
182+
RESOLVE_METHOD(codec_checkin_hdr10p_data)
180183
RESOLVE_METHOD(codec_get_vbuf_state)
181184
RESOLVE_METHOD(codec_get_vdec_state)
182185
RESOLVE_METHOD(codec_get_vdec_info)
@@ -2592,6 +2595,13 @@ bool CAMLCodec::AddData(uint8_t *pData, size_t iSize, double dts, double pts)
25922595
return true;
25932596
}
25942597

2598+
int CAMLCodec::AddHDR10PData(uint8_t *pData, size_t iSize)
2599+
{
2600+
am_private->vcodec.hdr10p_data.pointer = pData;
2601+
am_private->vcodec.hdr10p_data.len = iSize;
2602+
return m_dll->codec_checkin_hdr10p_data(&am_private->vcodec);
2603+
}
2604+
25952605
int CAMLCodec::m_pollDevice;
25962606

25972607
int CAMLCodec::PollFrame()

xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class CAMLCodec
6969
void Reset();
7070

7171
bool AddData(uint8_t *pData, size_t size, double dts, double pts);
72+
int AddHDR10PData(uint8_t *pData, size_t iSize);
7273
CDVDVideoCodec::VCReturn GetPicture(VideoPicture* pVideoPicture);
7374

7475
void SetSpeed(int speed);

xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,20 @@ bool CDVDVideoCodecAmlogic::AddData(const DemuxPacket &packet)
521521
}
522522
}
523523

524+
if (packet.pSideData && packet.iSideDataElems > 0)
525+
{
526+
const AVPacketSideData* sideData = av_packet_side_data_get(static_cast<AVPacketSideData*>(packet.pSideData),
527+
packet.iSideDataElems,
528+
AV_PKT_DATA_DYNAMIC_HDR10_PLUS_RAW);
529+
530+
if (sideData && sideData->size)
531+
{
532+
if (m_Codec->AddHDR10PData(sideData->data, sideData->size) < 0)
533+
CLog::Log(LOGWARNING, "CDVDVideoCodecAmlogic::{}: failed to set hdr10p data with size {}", __FUNCTION__,
534+
sideData->size);
535+
}
536+
}
537+
524538
data_added = m_Codec->AddData(pData, iSize, packet.dts, m_hints.ptsinvalid ? DVD_NOPTS_VALUE : packet.pts);
525539

526540
// pop package only from list if hardware decoder did accept the data

0 commit comments

Comments
 (0)