mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-27 12:46:53 +00:00
Merge pull request #4490 from codesnake/update_wetek_patches
WeTek Play: Remove patches unnecessary after Kodi update
This commit is contained in:
commit
dcac05c020
@ -1,179 +0,0 @@
|
|||||||
From b5021bcce9b95aa9f9b37e6599945aa6bf019904 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alex Deryskyba <alex@codesnake.com>
|
|
||||||
Date: Thu, 6 Nov 2014 08:14:39 +0200
|
|
||||||
Subject: [PATCH 14/17] [aml] Remove dependency on libamplayer and amffmpeg
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp | 79 +-------------------
|
|
||||||
.../DVDCodecs/Video/DVDVideoCodecAmlogic.cpp | 3 -
|
|
||||||
2 files changed, 3 insertions(+), 79 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
index fcdad19..f3c67ea 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
@@ -50,9 +50,9 @@
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
|
|
||||||
-// amcodec include
|
|
||||||
extern "C" {
|
|
||||||
#include <amcodec/codec.h>
|
|
||||||
+#include <libavutil/avutil.h>
|
|
||||||
} // extern "C"
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
@@ -91,19 +91,11 @@ public:
|
|
||||||
virtual int codec_set_cntl_mode(codec_para_t *pcodec, unsigned int mode)=0;
|
|
||||||
virtual int codec_set_cntl_avthresh(codec_para_t *pcodec, unsigned int avthresh)=0;
|
|
||||||
virtual int codec_set_cntl_syncthresh(codec_para_t *pcodec, unsigned int syncthresh)=0;
|
|
||||||
-
|
|
||||||
- // grab these from libamplayer
|
|
||||||
- virtual int h263vld(unsigned char *inbuf, unsigned char *outbuf, int inbuf_len, int s263)=0;
|
|
||||||
- virtual int decodeble_h263(unsigned char *buf)=0;
|
|
||||||
-
|
|
||||||
- // grab this from amffmpeg so we do not have to load DllAvUtil
|
|
||||||
- virtual AVRational av_d2q(double d, int max)=0;
|
|
||||||
};
|
|
||||||
|
|
||||||
class DllLibAmCodec : public DllDynamic, DllLibamCodecInterface
|
|
||||||
{
|
|
||||||
- // libamcodec is static linked into libamplayer.so
|
|
||||||
- DECLARE_DLL_WRAPPER(DllLibAmCodec, "libamplayer.so")
|
|
||||||
+ DECLARE_DLL_WRAPPER(DllLibAmCodec, "libamcodec.so")
|
|
||||||
|
|
||||||
DEFINE_METHOD1(int, codec_init, (codec_para_t *p1))
|
|
||||||
DEFINE_METHOD1(int, codec_close, (codec_para_t *p1))
|
|
||||||
@@ -121,11 +113,6 @@ class DllLibAmCodec : public DllDynamic, DllLibamCodecInterface
|
|
||||||
DEFINE_METHOD2(int, codec_set_cntl_avthresh, (codec_para_t *p1, unsigned int p2))
|
|
||||||
DEFINE_METHOD2(int, codec_set_cntl_syncthresh,(codec_para_t *p1, unsigned int p2))
|
|
||||||
|
|
||||||
- DEFINE_METHOD4(int, h263vld, (unsigned char *p1, unsigned char *p2, int p3, int p4))
|
|
||||||
- DEFINE_METHOD1(int, decodeble_h263, (unsigned char *p1))
|
|
||||||
-
|
|
||||||
- DEFINE_METHOD2(AVRational, av_d2q, (double p1, int p2))
|
|
||||||
-
|
|
||||||
BEGIN_METHOD_RESOLVE()
|
|
||||||
RESOLVE_METHOD(codec_init)
|
|
||||||
RESOLVE_METHOD(codec_close)
|
|
||||||
@@ -142,11 +129,6 @@ class DllLibAmCodec : public DllDynamic, DllLibamCodecInterface
|
|
||||||
RESOLVE_METHOD(codec_set_cntl_mode)
|
|
||||||
RESOLVE_METHOD(codec_set_cntl_avthresh)
|
|
||||||
RESOLVE_METHOD(codec_set_cntl_syncthresh)
|
|
||||||
-
|
|
||||||
- RESOLVE_METHOD(h263vld)
|
|
||||||
- RESOLVE_METHOD(decodeble_h263)
|
|
||||||
-
|
|
||||||
- RESOLVE_METHOD(av_d2q)
|
|
||||||
END_METHOD_RESOLVE()
|
|
||||||
|
|
||||||
public:
|
|
||||||
@@ -345,8 +327,6 @@ typedef struct am_private_t
|
|
||||||
unsigned int video_ratio64;
|
|
||||||
unsigned int video_rate;
|
|
||||||
unsigned int video_rotation_degree;
|
|
||||||
- int flv_flag;
|
|
||||||
- int h263_decodable;
|
|
||||||
int extrasize;
|
|
||||||
uint8_t *extradata;
|
|
||||||
DllLibAmCodec *m_dll;
|
|
||||||
@@ -439,7 +419,6 @@ static vformat_t codecid_to_vformat(enum AVCodecID id)
|
|
||||||
case AV_CODEC_ID_H263I:
|
|
||||||
case AV_CODEC_ID_MSMPEG4V2:
|
|
||||||
case AV_CODEC_ID_MSMPEG4V3:
|
|
||||||
- case AV_CODEC_ID_FLV1:
|
|
||||||
format = VFORMAT_MPEG4;
|
|
||||||
break;
|
|
||||||
case AV_CODEC_ID_RV10:
|
|
||||||
@@ -1221,51 +1200,6 @@ int set_header_info(am_private_t *para)
|
|
||||||
{
|
|
||||||
return divx3_prefix(pkt);
|
|
||||||
}
|
|
||||||
- else if (para->video_codec_type == VIDEO_DEC_FORMAT_H263)
|
|
||||||
- {
|
|
||||||
- return PLAYER_UNSUPPORT;
|
|
||||||
- unsigned char *vld_buf;
|
|
||||||
- int vld_len, vld_buf_size = para->video_width * para->video_height * 2;
|
|
||||||
-
|
|
||||||
- if (!pkt->data_size) {
|
|
||||||
- return PLAYER_SUCCESS;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if ((pkt->data[0] == 0) && (pkt->data[1] == 0) && (pkt->data[2] == 1) && (pkt->data[3] == 0xb6)) {
|
|
||||||
- return PLAYER_SUCCESS;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- vld_buf = (unsigned char*)malloc(vld_buf_size);
|
|
||||||
- if (!vld_buf) {
|
|
||||||
- return PLAYER_NOMEM;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (para->flv_flag) {
|
|
||||||
- vld_len = para->m_dll->h263vld(pkt->data, vld_buf, pkt->data_size, 1);
|
|
||||||
- } else {
|
|
||||||
- if (0 == para->h263_decodable) {
|
|
||||||
- para->h263_decodable = para->m_dll->decodeble_h263(pkt->data);
|
|
||||||
- if (0 == para->h263_decodable) {
|
|
||||||
- CLog::Log(LOGDEBUG, "[%s]h263 unsupport video and audio, exit", __FUNCTION__);
|
|
||||||
- return PLAYER_UNSUPPORT;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- vld_len = para->m_dll->h263vld(pkt->data, vld_buf, pkt->data_size, 0);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (vld_len > 0) {
|
|
||||||
- if (pkt->buf) {
|
|
||||||
- free(pkt->buf);
|
|
||||||
- }
|
|
||||||
- pkt->buf = vld_buf;
|
|
||||||
- pkt->buf_size = vld_buf_size;
|
|
||||||
- pkt->data = pkt->buf;
|
|
||||||
- pkt->data_size = vld_len;
|
|
||||||
- } else {
|
|
||||||
- free(vld_buf);
|
|
||||||
- pkt->data_size = 0;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
} else if (para->video_format == VFORMAT_VC1) {
|
|
||||||
if (para->video_codec_type == VIDEO_DEC_FORMAT_WMV3) {
|
|
||||||
unsigned i, check_sum = 0, data_len = 0;
|
|
||||||
@@ -1458,7 +1392,7 @@ bool CAMLCodec::OpenDecoder(CDVDStreamInfo &hints)
|
|
||||||
am_private->video_pid = hints.pid;
|
|
||||||
|
|
||||||
// handle video ratio
|
|
||||||
- AVRational video_ratio = m_dll->av_d2q(1, SHRT_MAX);
|
|
||||||
+ AVRational video_ratio = av_d2q(1, SHRT_MAX);
|
|
||||||
//if (!hints.forced_aspect)
|
|
||||||
// video_ratio = m_dll->av_d2q(hints.aspect, SHRT_MAX);
|
|
||||||
am_private->video_ratio = ((int32_t)video_ratio.num << 16) | video_ratio.den;
|
|
||||||
@@ -1529,13 +1463,6 @@ bool CAMLCodec::OpenDecoder(CDVDStreamInfo &hints)
|
|
||||||
else
|
|
||||||
am_private->video_codec_type = codec_tag_to_vdec_type(am_private->video_codec_id);
|
|
||||||
|
|
||||||
- am_private->flv_flag = 0;
|
|
||||||
- if (am_private->video_codec_id == AV_CODEC_ID_FLV1)
|
|
||||||
- {
|
|
||||||
- am_private->video_codec_tag = CODEC_TAG_F263;
|
|
||||||
- am_private->flv_flag = 1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
CLog::Log(LOGDEBUG, "CAMLCodec::OpenDecoder "
|
|
||||||
"hints.width(%d), hints.height(%d), hints.codec(%d), hints.codec_tag(%d), hints.pid(%d)",
|
|
||||||
hints.width, hints.height, hints.codec, hints.codec_tag, hints.pid);
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp
|
|
||||||
index 960aae1..57f8e40 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp
|
|
||||||
@@ -108,9 +108,6 @@ bool CDVDVideoCodecAmlogic::Open(CDVDStreamInfo &hints, CDVDCodecOptions &option
|
|
||||||
// amcodec can't handle h263
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
- case AV_CODEC_ID_FLV1:
|
|
||||||
- m_pFormatName = "am-flv1";
|
|
||||||
- break;
|
|
||||||
case AV_CODEC_ID_RV10:
|
|
||||||
case AV_CODEC_ID_RV20:
|
|
||||||
case AV_CODEC_ID_RV30:
|
|
||||||
--
|
|
||||||
1.7.10.4
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
From 6aab0376e7a4afdf5fbbbfa6c5394d302fb35a11 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Chris Browet <koying@semperpax.com>
|
|
||||||
Date: Mon, 18 May 2015 14:28:02 +0200
|
|
||||||
Subject: [PATCH] FIX: [aml] avoid decoder being deadlocked
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp | 9 ++++++++-
|
|
||||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
index 981ddd0..7046be3 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
|
|
||||||
@@ -1855,7 +1855,8 @@ int CAMLCodec::Decode(uint8_t *pData, size_t iSize, double dts, double pts)
|
|
||||||
// loop until we write all into codec, am_pkt.isvalid
|
|
||||||
// will get set to zero once everything is consumed.
|
|
||||||
// PLAYER_SUCCESS means all is ok, not all bytes were written.
|
|
||||||
- while (am_private->am_pkt.isvalid)
|
|
||||||
+ int loop = 0;
|
|
||||||
+ while (am_private->am_pkt.isvalid && loop < 100)
|
|
||||||
{
|
|
||||||
// abort on any errors.
|
|
||||||
if (write_av_packet(am_private, &am_private->am_pkt) != PLAYER_SUCCESS)
|
|
||||||
@@ -1863,6 +1864,12 @@ int CAMLCodec::Decode(uint8_t *pData, size_t iSize, double dts, double pts)
|
|
||||||
|
|
||||||
if (am_private->am_pkt.isvalid)
|
|
||||||
CLog::Log(LOGDEBUG, "CAMLCodec::Decode: write_av_packet looping");
|
|
||||||
+ loop++;
|
|
||||||
+ }
|
|
||||||
+ if (loop == 100)
|
|
||||||
+ {
|
|
||||||
+ // Decoder got stuck; Reset
|
|
||||||
+ Reset();
|
|
||||||
}
|
|
||||||
if (!m_dll_has_video_delay)
|
|
||||||
{
|
|
Loading…
x
Reference in New Issue
Block a user