private void prepareEncoder ( EGLContext sharedContext , int width , int height , int bitRate , Muxer muxer ) throws IOException { mVideoEncoder = new VideoEncoderCore ( width , height , bitRate , muxer ) ; if ( mEglCore == null ) { // This is the first prepare called for this CameraEncoder instance mEglCore = new EglCore ( sharedContext , EglCore . FLAG_RECORDABLE ) ; } if ( mInputWindowSurface != null ) mInputWindowSurface . release ( ) ; mInputWindowSurface = new WindowSurface ( mEglCore , mVideoEncoder . getInputSurface ( ) ) ; mInputWindowSurface . makeCurrent ( ) ; if ( mFullScreen != null ) mFullScreen . release ( ) ; mFullScreen = new FullFrameRect ( new Texture2dProgram ( Texture2dProgram . ProgramType . TEXTURE_EXT ) ) ; mFullScreen . getProgram ( ) . setTexSize ( width , height ) ; mIncomingSizeUpdated = true ; }
Called with the display EGLContext current on Encoder thread