diff --git a/framework/render/video/IVideoRender.h b/framework/render/video/IVideoRender.h index 69647e17c..b2d2d21a2 100644 --- a/framework/render/video/IVideoRender.h +++ b/framework/render/video/IVideoRender.h @@ -83,6 +83,13 @@ class IVideoRender { */ virtual int clearScreen() = 0; + /* + * set background color + */ + virtual void setBackgroundColor(unsigned int color) { + + }; + /** * set want draw frame. * @param frame diff --git a/framework/render/video/glRender/CV420PProgramContext.cpp b/framework/render/video/glRender/CV420PProgramContext.cpp index af1520f59..7255cccca 100644 --- a/framework/render/video/glRender/CV420PProgramContext.cpp +++ b/framework/render/video/glRender/CV420PProgramContext.cpp @@ -133,6 +133,17 @@ void CV420PProgramContext::updateRotate(IVideoRender::Rotate rotate) { } } +void CV420PProgramContext::updateBackgroundColor(unsigned int color) { + if(color != mBackgroundColor) { + mBackgroundColor = color; + + mColor[0] = ((color >> 16) & 0xff) / 255.0f;//r + mColor[1] = ((color >> 8) & 0xff) / 255.0f;//g + mColor[2] = ((color) & 0xff) / 255.0f;//b + mColor[3] = ((color >> 24) & 0xff) / 255.0f;//a + } +} + void CV420PProgramContext::updateWindowSize(int width, int height, bool windowChanged) { if (mWindowWidth == width && mWindowHeight == height && !windowChanged) { return; @@ -198,7 +209,7 @@ int CV420PProgramContext::updateFrame(std::unique_ptr &frame) { int64_t t2 = af_getsteady_ms(); glViewport(0, 0, mWindowWidth, mWindowHeight); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClearColor(mColor[0], mColor[1], mColor[2], mColor[3]); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(mCVProgram); diff --git a/framework/render/video/glRender/CV420PProgramContext.h b/framework/render/video/glRender/CV420PProgramContext.h index c336ebb6e..d7f8c1781 100644 --- a/framework/render/video/glRender/CV420PProgramContext.h +++ b/framework/render/video/glRender/CV420PProgramContext.h @@ -31,6 +31,8 @@ class CV420PProgramContext : public IProgramContext { void updateRotate(IVideoRender::Rotate rotate) override; + void updateBackgroundColor(unsigned int color) override; + void updateWindowSize(int width, int height, bool windowChanged) override; void updateFlip(IVideoRender::Flip flip) override; @@ -98,6 +100,9 @@ class CV420PProgramContext : public IProgramContext { GLfloat mUColorRange[3] = {0.0f}; int mColorRange = 0; + unsigned int mBackgroundColor = 0xff000000; + float mColor[4]={0.0f,0.0f,0.0f,1.0f}; + }; diff --git a/framework/render/video/glRender/GLRender.cpp b/framework/render/video/glRender/GLRender.cpp index e2a209a17..da78f093a 100644 --- a/framework/render/video/glRender/GLRender.cpp +++ b/framework/render/video/glRender/GLRender.cpp @@ -31,6 +31,8 @@ static const int MAX_IN_SIZE = 3; using namespace Cicada; +#define CORRECT_COLOR(x) (((x) < 0.0f ? 0.0f : (x) > 255.0f ? 255.0f : (x)) / 255.0f) + GLRender::GLRender(float Hz) { mVSync = VSyncFactory::create(*this, Hz); @@ -144,6 +146,11 @@ int GLRender::setScale(IVideoRender::Scale scale) } +void GLRender::setBackgroundColor(unsigned int color) +{ + mBackgroundColor = color; +}; + int GLRender::onVSync(int64_t tick) { int ret = onVsyncInner(tick); @@ -354,6 +361,7 @@ bool GLRender::renderActually() mProgramContext->updateRotate(finalRotate); mProgramContext->updateWindowSize(mWindowWidth, mWindowHeight, displayViewChanged); mProgramContext->updateFlip(mFlip); + mProgramContext->updateBackgroundColor(mBackgroundColor); int ret = mProgramContext->updateFrame(frame); //work around for glReadPixels is upside-down. { @@ -396,7 +404,10 @@ bool GLRender::renderActually() if (mClearScreenOn) { glViewport(0, 0, mWindowWidth, mWindowHeight); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + /* { + std::unique_lock lock(mClearColorMutex); + glClearColor(mClearColor[0], mClearColor[1], mClearColor[2], mClearColor[3]); + }*/ glClear(GL_COLOR_BUFFER_BIT); mContext->Present(mGLSurface); @@ -599,4 +610,5 @@ void GLRender::surfaceChanged() std::unique_lock lock(mRenderCallbackMutex); mRenderCallbackCon.wait(lock); #endif -}; +} + diff --git a/framework/render/video/glRender/GLRender.h b/framework/render/video/glRender/GLRender.h index 9474418fe..9906dde08 100644 --- a/framework/render/video/glRender/GLRender.h +++ b/framework/render/video/glRender/GLRender.h @@ -21,7 +21,7 @@ #endif -using namespace Cicada; +using namespace Cicada; #if TARGET_OS_IPHONE @@ -45,6 +45,8 @@ class GLRender : public IVideoRender, private IVSync::Listener { int clearScreen() override; + void setBackgroundColor(unsigned int color) override; + int renderFrame(std::unique_ptr &frame) override; void setRenderResultCallback(std::function renderResultCallback) override; @@ -93,16 +95,17 @@ class GLRender : public IVideoRender, private IVSync::Listener { void calculateFPS(int64_t tick); - IProgramContext *getProgram(int frameFormat , IAFFrame *frame = nullptr); + IProgramContext *getProgram(int frameFormat, IAFFrame *frame = nullptr); int onVsyncInner(int64_t tick); protected: - Rotate mVideoRotate = Rotate_None; - Rotate mRotate = Rotate_None; - Flip mFlip = Flip_None; - Scale mScale = Scale_AspectFit; + std::atomic mVideoRotate{Rotate_None}; + std::atomic mRotate{Rotate_None}; + std::atomic mFlip{Flip_None}; + std::atomic mScale{Scale_AspectFit}; + std::atomic_uint mBackgroundColor{0xff000000}; int mWindowWidth = 0; int mWindowHeight = 0; diff --git a/framework/render/video/glRender/IProgramContext.h b/framework/render/video/glRender/IProgramContext.h index b28c64379..936ffdf77 100644 --- a/framework/render/video/glRender/IProgramContext.h +++ b/framework/render/video/glRender/IProgramContext.h @@ -55,6 +55,8 @@ class IProgramContext { virtual void updateRotate(IVideoRender::Rotate rotate) = 0; + virtual void updateBackgroundColor(unsigned int color) = 0; + virtual void updateWindowSize(int width, int height, bool windowChanged) = 0; virtual int updateFrame(std::unique_ptr &frame) = 0; diff --git a/framework/render/video/glRender/OESProgramContext.cpp b/framework/render/video/glRender/OESProgramContext.cpp index 52459ec37..32402ce7e 100644 --- a/framework/render/video/glRender/OESProgramContext.cpp +++ b/framework/render/video/glRender/OESProgramContext.cpp @@ -52,9 +52,9 @@ int OESProgramContext::initProgram() { AF_LOGD("createProgram "); mOESProgram = glCreateProgram(); - GLuint mVertShader = 0; + GLuint mVertShader = 0; GLuint mFragmentShader = 0; - int mInitRet = compileShader(&mVertShader, OES_VERTEX_SHADER, GL_VERTEX_SHADER); + int mInitRet = compileShader(&mVertShader, OES_VERTEX_SHADER, GL_VERTEX_SHADER); if (mInitRet != 0) { AF_LOGE("compileShader mVertShader failed. ret = %d ", mInitRet); @@ -80,7 +80,7 @@ int OESProgramContext::initProgram() { glDeleteShader(mFragmentShader); if (status != GL_TRUE) { - int length = 0; + int length = 0; GLchar glchar[256] = {0}; glGetProgramInfoLog(mOESProgram, 256, &length, glchar); AF_LOGW("linkProgram error is %s \n", glchar); @@ -111,7 +111,7 @@ void OESProgramContext::updateWindowSize(int width, int height, bool windowChang return; } - mWindowWidth = width; + mWindowWidth = width; mWindowHeight = height; mRegionChanged = true; } @@ -139,28 +139,28 @@ void OESProgramContext::updateDrawRegion() { mDrawRegion[7] = (GLfloat) 1.0f; mDrawRegion[8] = (GLfloat) 0.0f; - mDrawRegion[9] = (GLfloat) -1.0f; + mDrawRegion[9] = (GLfloat) -1.0f; mDrawRegion[10] = (GLfloat) 1.0f; mDrawRegion[11] = (GLfloat) 0.0f; return; } - int windowWidth = mWindowWidth; - int windowHeight = mWindowHeight; - int off_x = 0; - int off_y = 0; - int w = mWindowWidth; - int h = mWindowHeight; - int realWidth = 0; - int realHeight = 0; + int windowWidth = mWindowWidth; + int windowHeight = mWindowHeight; + int off_x = 0; + int off_y = 0; + int w = mWindowWidth; + int h = mWindowHeight; + int realWidth = 0; + int realHeight = 0; if (mRotate == IVideoRender::Rotate::Rotate_90 || mRotate == IVideoRender::Rotate::Rotate_270) { - realWidth = mFrameHeight; + realWidth = mFrameHeight; realHeight = static_cast(mFrameHeight * mDar); } else { - realWidth = static_cast(mFrameHeight * mDar); + realWidth = static_cast(mFrameHeight * mDar); realHeight = mFrameHeight; } @@ -169,18 +169,18 @@ void OESProgramContext::updateDrawRegion() { if (mScale == IVideoRender::Scale::Scale_AspectFit) { if (scale_w >= scale_h) { - w = static_cast(scale_h * realWidth); + w = static_cast(scale_h * realWidth); off_x = (windowWidth - w); } else { - h = static_cast(scale_w * realHeight); + h = static_cast(scale_w * realHeight); off_y = (windowHeight - h); } } else if (mScale == IVideoRender::Scale::Scale_AspectFill) { if (scale_w < scale_h) { - w = static_cast(scale_h * realWidth); + w = static_cast(scale_h * realWidth); off_x = (windowWidth - w); } else { - h = static_cast(scale_w * realHeight); + h = static_cast(scale_w * realHeight); off_y = (windowHeight - h); } } @@ -201,7 +201,7 @@ void OESProgramContext::updateDrawRegion() { mDrawRegion[7] = (GLfloat) 1.0f - offY; mDrawRegion[8] = (GLfloat) 0.0f; - mDrawRegion[9] = (GLfloat) -1.0f + offX; + mDrawRegion[9] = (GLfloat) -1.0f + offX; mDrawRegion[10] = (GLfloat) 1.0f - offY; mDrawRegion[11] = (GLfloat) 0.0f; } else if (mRotate == IVideoRender::Rotate::Rotate_90) { @@ -218,7 +218,7 @@ void OESProgramContext::updateDrawRegion() { mDrawRegion[7] = (GLfloat) -1.0f + offY; mDrawRegion[8] = (GLfloat) 0.0f; - mDrawRegion[9] = (GLfloat) 1.0f - offX; + mDrawRegion[9] = (GLfloat) 1.0f - offX; mDrawRegion[10] = (GLfloat) 1.0f - offY; mDrawRegion[11] = (GLfloat) 0.0f; @@ -235,7 +235,7 @@ void OESProgramContext::updateDrawRegion() { mDrawRegion[7] = (GLfloat) -1.0f + offY; mDrawRegion[8] = (GLfloat) 0.0f; - mDrawRegion[9] = (GLfloat) 1.0f - offX; + mDrawRegion[9] = (GLfloat) 1.0f - offX; mDrawRegion[10] = (GLfloat) -1.0f + offY; mDrawRegion[11] = (GLfloat) 0.0f; } else if (mRotate == IVideoRender::Rotate::Rotate_270) { @@ -251,7 +251,7 @@ void OESProgramContext::updateDrawRegion() { mDrawRegion[7] = (GLfloat) 1.0f - offY; mDrawRegion[8] = (GLfloat) 0.0f; - mDrawRegion[9] = (GLfloat) -1.0f + offX; + mDrawRegion[9] = (GLfloat) -1.0f + offX; mDrawRegion[10] = (GLfloat) -1.0f + offY; mDrawRegion[11] = (GLfloat) 0.0f; } @@ -276,7 +276,7 @@ void OESProgramContext::updateFlipCoords() { mOESFlipCoords[5] = 0.0f; mOESFlipCoords[6] = 0.0f; mOESFlipCoords[7] = 0.0f; - } else if(mFlip == IVideoRender::Flip::Flip_Both){ + } else if (mFlip == IVideoRender::Flip::Flip_Both) { mOESFlipCoords[0] = 0.0f; mOESFlipCoords[1] = 1.0f; mOESFlipCoords[2] = 1.0f; @@ -325,7 +325,7 @@ int OESProgramContext::updateFrame(std::unique_ptr &frame) { } } - if(frame == nullptr && !mRegionChanged && !mCoordsChanged){ + if (frame == nullptr && !mRegionChanged && !mCoordsChanged) { //frame is null and nothing changed , don`t need redraw. such as paused. // AF_LOGW("0918, nothing changed"); return -1; @@ -363,9 +363,9 @@ int OESProgramContext::updateFrame(std::unique_ptr &frame) { glUseProgram(mOESProgram); auto positionIndex = static_cast(glGetAttribLocation(mOESProgram, - "aPosition")); + "aPosition")); auto texCoordIndex = static_cast(glGetAttribLocation(mOESProgram, - "aTextureCoord")); + "aTextureCoord")); glEnableVertexAttribArray(positionIndex); glEnableVertexAttribArray(texCoordIndex); @@ -374,7 +374,7 @@ int OESProgramContext::updateFrame(std::unique_ptr &frame) { glVertexAttribPointer(texCoordIndex, 2, GL_FLOAT, GL_FALSE, 8, mOESFlipCoords); GLint MVPMatrixLocation = glGetUniformLocation(mOESProgram, "uMVPMatrix"); - GLint STMatrixLocation = glGetUniformLocation(mOESProgram, "uSTMatrix"); + GLint STMatrixLocation = glGetUniformLocation(mOESProgram, "uSTMatrix"); mDecoderSurface->UpdateTexImg(); mDecoderSurface->GetTransformMatrix(mOESSTMatrix); @@ -387,7 +387,7 @@ int OESProgramContext::updateFrame(std::unique_ptr &frame) { glViewport(0, 0, mWindowWidth, mWindowHeight); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClearColor(mColor[0], mColor[1], mColor[2], mColor[3]); glClear(GL_COLOR_BUFFER_BIT); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_EXTERNAL_OES, mOutTextureId); @@ -426,3 +426,14 @@ void OESProgramContext::createSurface() { mFrameAvailable = false; } } + +void OESProgramContext::updateBackgroundColor(unsigned int color) { + if(color != mBackgroundColor) { + mBackgroundColor = color; + + mColor[0] = ((color >> 16) & 0xff) / 255.0f;//r + mColor[1] = ((color >> 8) & 0xff) / 255.0f;//g + mColor[2] = ((color) & 0xff) / 255.0f;//b + mColor[3] = ((color >> 24) & 0xff) / 255.0f;//a + } +} diff --git a/framework/render/video/glRender/OESProgramContext.h b/framework/render/video/glRender/OESProgramContext.h index 8a23f482b..c6ecc8686 100644 --- a/framework/render/video/glRender/OESProgramContext.h +++ b/framework/render/video/glRender/OESProgramContext.h @@ -30,6 +30,8 @@ class OESProgramContext : public IProgramContext , private DecoderSurfaceCallbac void updateFlip(IVideoRender::Flip flip) override ; + void updateBackgroundColor(unsigned int color) override; + int updateFrame(std::unique_ptr &frame) override; private: @@ -78,6 +80,9 @@ class OESProgramContext : public IProgramContext , private DecoderSurfaceCallbac std::mutex mFrameAvailableMutex; std::condition_variable mFrameAvailableCon; bool mFrameAvailable = false; + + float mColor[4]={0.0f,0.0f,0.0f,1.0f}; + unsigned int mBackgroundColor = 0xff000000; }; diff --git a/framework/render/video/glRender/YUVProgramContext.cpp b/framework/render/video/glRender/YUVProgramContext.cpp index 380384271..ab760f31f 100644 --- a/framework/render/video/glRender/YUVProgramContext.cpp +++ b/framework/render/video/glRender/YUVProgramContext.cpp @@ -190,7 +190,7 @@ int YUVProgramContext::updateFrame(std::unique_ptr &frame) { } glViewport(0, 0, mWindowWidth, mWindowHeight); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClearColor(mColor[0], mColor[1], mColor[2], mColor[3]); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(mProgram); @@ -575,3 +575,14 @@ void YUVProgramContext::updateColorSpace() { } } + +void YUVProgramContext::updateBackgroundColor(unsigned int color) { + if(color != mBackgroundColor) { + mBackgroundColor = color; + + mColor[0] = ((color >> 16) & 0xff) / 255.0f;//r + mColor[1] = ((color >> 8) & 0xff) / 255.0f;//g + mColor[2] = ((color) & 0xff) / 255.0f;//b + mColor[3] = ((color >> 24) & 0xff) / 255.0f;//a + } +} diff --git a/framework/render/video/glRender/YUVProgramContext.h b/framework/render/video/glRender/YUVProgramContext.h index b2fbab127..8597fb79d 100644 --- a/framework/render/video/glRender/YUVProgramContext.h +++ b/framework/render/video/glRender/YUVProgramContext.h @@ -23,6 +23,8 @@ class YUVProgramContext : public IProgramContext { void updateRotate(IVideoRender::Rotate rotate) override ; + void updateBackgroundColor(unsigned int color) override; + void updateWindowSize(int width, int height, bool windowChanged) override ; int updateFrame(std::unique_ptr &frame) override; @@ -92,6 +94,8 @@ class YUVProgramContext : public IProgramContext { GLfloat mUColorRange[3] = {0.0f}; int mColorRange = 0; + unsigned int mBackgroundColor = 0xff000000; + float mColor[4] = {0.0f,0.0f,0.0f,1.0f}; }; diff --git a/mediaPlayer/ICicadaPlayer.h b/mediaPlayer/ICicadaPlayer.h index 226bbeb09..e3c986578 100644 --- a/mediaPlayer/ICicadaPlayer.h +++ b/mediaPlayer/ICicadaPlayer.h @@ -120,6 +120,8 @@ namespace Cicada { virtual void SetMirrorMode(MirrorMode mode) = 0; + virtual void SetBackgroundColor(unsigned int color) = 0; + virtual MirrorMode GetMirrorMode() = 0; virtual int GetCurrentStreamIndex(StreamType type) = 0; diff --git a/mediaPlayer/MediaPlayer.cpp b/mediaPlayer/MediaPlayer.cpp index 9837d40a7..a5c03b2a3 100644 --- a/mediaPlayer/MediaPlayer.cpp +++ b/mediaPlayer/MediaPlayer.cpp @@ -597,6 +597,12 @@ namespace Cicada { return CicadaGetMirrorMode(handle); } + void MediaPlayer::SetBackgroundColor(unsigned int color) + { + GET_PLAYER_HANDLE + CicadaSetBackgroundColor(handle, color); + } + void MediaPlayer::SetSpeed(float speed) { GET_PLAYER_HANDLE diff --git a/mediaPlayer/MediaPlayer.h b/mediaPlayer/MediaPlayer.h index fd40851b1..8e5d3d352 100644 --- a/mediaPlayer/MediaPlayer.h +++ b/mediaPlayer/MediaPlayer.h @@ -250,6 +250,11 @@ namespace Cicada { */ MirrorMode GetMirrorMode(); + /* + * set clear color + */ + void SetBackgroundColor(unsigned int color); + /* * set speed of current playing, 0.5-2.0 */ diff --git a/mediaPlayer/SuperMediaPlayer.cpp b/mediaPlayer/SuperMediaPlayer.cpp index 1b552948d..2eb892d4c 100644 --- a/mediaPlayer/SuperMediaPlayer.cpp +++ b/mediaPlayer/SuperMediaPlayer.cpp @@ -687,6 +687,16 @@ namespace Cicada { this->putMsg(MSG_SET_MIRROR_MODE, dummyMsg); } + void SuperMediaPlayer::SetBackgroundColor(unsigned int color) + { + if (color == mSet.mBackgroundColor ) { + return; + } + + mSet.mBackgroundColor = color; + this->putMsg(MSG_SET_BACKGROUND_COLOR, dummyMsg); + } + MirrorMode SuperMediaPlayer::GetMirrorMode() { return mSet.mirrorMode; @@ -3129,6 +3139,7 @@ namespace Cicada { mVideoRender = videoRenderFactory::create(); mVideoRender->setScale(convertScaleMode(mSet.scaleMode)); mVideoRender->setRotate(convertRotateMode(mSet.rotateMode)); + mVideoRender->setBackgroundColor(mSet.mBackgroundColor); mVideoRender->setFlip(convertMirrorMode(mSet.mirrorMode)); mVideoRender->setDisPlay(mSet.mView); mVideoRender->setRenderResultCallback([this](int64_t pts, bool rendered) -> void { @@ -3862,6 +3873,13 @@ namespace Cicada { } } + void SuperMediaPlayer::ProcessSetBackgroundColor() + { + if (mVideoRender) { + mVideoRender->setBackgroundColor(mSet.mBackgroundColor); + } + } + void SuperMediaPlayer::ProcessSetViewMsg(void *view) { if (view == mSet.mView) { diff --git a/mediaPlayer/SuperMediaPlayer.h b/mediaPlayer/SuperMediaPlayer.h index 324478cf5..7794c3378 100644 --- a/mediaPlayer/SuperMediaPlayer.h +++ b/mediaPlayer/SuperMediaPlayer.h @@ -113,6 +113,8 @@ namespace Cicada { void SetMirrorMode(MirrorMode mode) override; + void SetBackgroundColor(unsigned int color) override; + MirrorMode GetMirrorMode() override; int GetCurrentStreamIndex(StreamType type) override; @@ -335,6 +337,8 @@ namespace Cicada { void ProcessSetMirrorMode() final; + void ProcessSetBackgroundColor() final; + void ProcessSetViewMsg(void *view) final; void ProcessSetDataSourceMsg(const std::string &url) final; diff --git a/mediaPlayer/media_player_api.cpp b/mediaPlayer/media_player_api.cpp index c4363b678..cf32ad700 100644 --- a/mediaPlayer/media_player_api.cpp +++ b/mediaPlayer/media_player_api.cpp @@ -409,6 +409,15 @@ void CicadaSetMirrorMode(playerHandle *pHandle, MirrorMode mode) } } +void CicadaSetBackgroundColor(playerHandle *pHandle, unsigned int color) +{ + GET_PLAYER; + + if (player) { + player->SetBackgroundColor(color); + } +} + MirrorMode CicadaGetMirrorMode(playerHandle *pHandle) { GET_PLAYER; diff --git a/mediaPlayer/media_player_api.h b/mediaPlayer/media_player_api.h index 10f2b99ab..32d1a5f56 100644 --- a/mediaPlayer/media_player_api.h +++ b/mediaPlayer/media_player_api.h @@ -209,6 +209,11 @@ RotateMode CicadaGetRotateMode(playerHandle *player); */ void CicadaSetMirrorMode(playerHandle *pHandle, MirrorMode mode); +/* + * set clear color + */ +void CicadaSetBackgroundColor(playerHandle *pHandle, unsigned int color); + /** * get rending mirror mode */ diff --git a/mediaPlayer/player_msg_control.cpp b/mediaPlayer/player_msg_control.cpp index fe96862bc..358d36ea0 100644 --- a/mediaPlayer/player_msg_control.cpp +++ b/mediaPlayer/player_msg_control.cpp @@ -24,6 +24,7 @@ namespace Cicada { case MSG_SET_DISPLAY_MODE: case MSG_SET_ROTATE_MODE: case MSG_SET_MIRROR_MODE: + case MSG_SET_BACKGROUND_COLOR: return REPLACE_ALL; case MSG_START: @@ -233,6 +234,10 @@ namespace Cicada { mProcessor.ProcessSetMirrorMode(); break; + case MSG_SET_BACKGROUND_COLOR: + mProcessor.ProcessSetBackgroundColor(); + break; + case MSG_SEEKTO: mProcessor.ProcessSeekToMsg(msgContent.seekParam.seekPos, msgContent.seekParam.bAccurate); break; diff --git a/mediaPlayer/player_msg_control.h b/mediaPlayer/player_msg_control.h index dae018712..95d79ce48 100644 --- a/mediaPlayer/player_msg_control.h +++ b/mediaPlayer/player_msg_control.h @@ -25,6 +25,7 @@ namespace Cicada { MSG_SET_DISPLAY_MODE, MSG_SET_ROTATE_MODE, MSG_SET_MIRROR_MODE, + MSG_SET_BACKGROUND_COLOR, MSG_ADD_EXT_SUBTITLE, MSG_SELECT_EXT_SUBTITLE, @@ -126,6 +127,8 @@ namespace Cicada { virtual void ProcessSetMirrorMode() = 0; + virtual void ProcessSetBackgroundColor() = 0; + virtual void ProcessSetViewMsg(void *view) = 0; virtual void ProcessSetDataSourceMsg(const std::string &url) = 0; diff --git a/mediaPlayer/player_types.cpp b/mediaPlayer/player_types.cpp index 7be2d06c2..4fbd11716 100644 --- a/mediaPlayer/player_types.cpp +++ b/mediaPlayer/player_types.cpp @@ -55,6 +55,7 @@ namespace Cicada { lowMemSize = 100 * 1024 * 1024; //100M #endif mDefaultBandWidth = 0; + mBackgroundColor = 0xFF000000; // Don't reset AnalyticsID mOptions.reset(); maxASeekDelta = 21 * 1000 * 1000; diff --git a/mediaPlayer/player_types.h b/mediaPlayer/player_types.h index 8da7c8843..1ad24ded8 100644 --- a/mediaPlayer/player_types.h +++ b/mediaPlayer/player_types.h @@ -56,6 +56,7 @@ namespace Cicada { int64_t AnalyticsID = -1; int mDefaultBandWidth = 0; playerOptions mOptions; + unsigned int mBackgroundColor = 0xFF000000; bool bEnableVRC = false; int maxASeekDelta = 21 * 1000 * 1000;//us