aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeak3d <pfau@peak3d.de>2020-10-01 14:39:57 +0200
committerpeak3d <pfau@peak3d.de>2020-10-01 14:39:57 +0200
commit31aa3149d004a381131c999d15dbfce27bd027fa (patch)
tree8893fc6d0c7b5a0fa90e3603596b4e2adbad32a6
parent16be0948bf1913babf1d563218aca522ed74568c (diff)
[Android] Fix MediaCodec OES/EGL rendering
-rw-r--r--xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp18
-rw-r--r--xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.h1
2 files changed, 6 insertions, 13 deletions
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp
index 597b851c08..36a19170df 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp
@@ -314,7 +314,6 @@ CDVDVideoCodecAndroidMediaCodec::CDVDVideoCodecAndroidMediaCodec(CProcessInfo &p
, m_formatname("mediacodec")
, m_opened(false)
, m_jnivideoview(nullptr)
-, m_jnisurface(nullptr)
, m_textureId(0)
, m_OutputDuration(0)
, m_fpsDuration(0)
@@ -806,10 +805,6 @@ void CDVDVideoCodecAndroidMediaCodec::Dispose()
}
ReleaseSurfaceTexture();
- if (m_jnisurface)
- m_jnisurface->release();
- m_jnisurface = nullptr;
-
m_InstanceGuard.exchange(false);
if (m_render_surface)
{
@@ -1331,10 +1326,9 @@ bool CDVDVideoCodecAndroidMediaCodec::ConfigureMediaCodec(void)
// configure and start the codec.
// use the MediaFormat that we have setup.
// use a null MediaCrypto, our content is not encrypted.
-
- int flags = 0;
m_codec->configure(mediaformat, m_jnivideosurface,
- m_crypto ? *m_crypto : CJNIMediaCrypto(jni::jhobject(NULL)), flags);
+ m_crypto ? *m_crypto : CJNIMediaCrypto(jni::jhobject(NULL)), 0);
+
if (xbmc_jnienv()->ExceptionCheck())
{
xbmc_jnienv()->ExceptionClear();
@@ -1558,7 +1552,7 @@ void CDVDVideoCodecAndroidMediaCodec::InitSurfaceTexture(void)
m_surfaceTexture = std::shared_ptr<CJNISurfaceTexture>(new CJNISurfaceTexture(m_textureId));
// hook the surfaceTexture OnFrameAvailable callback
m_frameAvailable = std::shared_ptr<CDVDMediaCodecOnFrameAvailable>(new CDVDMediaCodecOnFrameAvailable(m_surfaceTexture));
- m_jnisurface = new CJNISurface(*m_surfaceTexture);
+ m_jnivideosurface = CJNISurface(*m_surfaceTexture);
}
else
{
@@ -1578,7 +1572,7 @@ void CDVDVideoCodecAndroidMediaCodec::ReleaseSurfaceTexture(void)
// it is safe to delete here even though these items
// were created in the main thread instance
- SAFE_DELETE(m_jnisurface);
+ m_jnivideosurface = CJNISurface(jni::jhobject(NULL));
m_frameAvailable.reset();
m_surfaceTexture.reset();
@@ -1619,8 +1613,8 @@ void CDVDVideoCodecAndroidMediaCodec::surfaceDestroyed(CJNISurfaceHolder holder)
if (m_state != MEDIACODEC_STATE_STOPPED && m_state != MEDIACODEC_STATE_UNINITIALIZED)
{
m_state = MEDIACODEC_STATE_STOPPED;
- if (m_jnisurface)
- m_jnisurface->release();
+ if (m_jnivideosurface)
+ m_jnivideosurface.release();
m_codec->stop();
xbmc_jnienv()->ExceptionClear();
}
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.h
index 9898731861..1f2a90316f 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.h
@@ -156,7 +156,6 @@ protected:
int m_state;
std::shared_ptr<CJNIXBMCVideoView> m_jnivideoview;
- CJNISurface* m_jnisurface;
CJNISurface m_jnivideosurface;
unsigned int m_textureId;
std::shared_ptr<CJNIMediaCodec> m_codec;