Пример #1
0
  @SuppressLint("NewApi")
  @Override
  public void onSurfaceCreated(GL10 unused, EGLConfig config) {
    Logging.d(TAG, "VideoRendererGui.onSurfaceCreated");
    // Store render EGL context.
    if (CURRENT_SDK_VERSION >= EGL14_SDK_VERSION) {
      synchronized (VideoRendererGui.class) {
        eglContext = EGL14.eglGetCurrentContext();
        Logging.d(TAG, "VideoRendererGui EGL Context: " + eglContext);
      }
    }

    synchronized (yuvImageRenderers) {
      // Create drawer for YUV/OES frames.
      drawer = new GlRectDrawer();
      // Create textures for all images.
      for (YuvImageRenderer yuvImageRenderer : yuvImageRenderers) {
        yuvImageRenderer.createTextures();
      }
      onSurfaceCreatedCalled = true;
    }
    GlUtil.checkNoGLES2Error("onSurfaceCreated done");
    GLES20.glPixelStorei(GLES20.GL_UNPACK_ALIGNMENT, 1);
    GLES20.glClearColor(0.15f, 0.15f, 0.15f, 1.0f);

    // Fire EGL context ready event.
    synchronized (VideoRendererGui.class) {
      if (eglContextReady != null) {
        eglContextReady.run();
      }
    }
  }
Пример #2
0
 @Override
 public void onDrawFrame(GL10 unused) {
   GLES20.glViewport(0, 0, screenWidth, screenHeight);
   GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
   synchronized (yuvImageRenderers) {
     for (YuvImageRenderer yuvImageRenderer : yuvImageRenderers) {
       yuvImageRenderer.draw(drawer);
     }
   }
 }
Пример #3
0
 @Override
 public void onSurfaceChanged(GL10 unused, int width, int height) {
   Logging.d(TAG, "VideoRendererGui.onSurfaceChanged: " + width + " x " + height + "  ");
   screenWidth = width;
   screenHeight = height;
   synchronized (yuvImageRenderers) {
     for (YuvImageRenderer yuvImageRenderer : yuvImageRenderers) {
       yuvImageRenderer.setScreenSize(screenWidth, screenHeight);
     }
   }
 }
Пример #4
0
 public static synchronized void reset(VideoRenderer.Callbacks renderer) {
   Logging.d(TAG, "VideoRendererGui.reset");
   if (instance == null) {
     throw new RuntimeException("Attempt to reset renderer before setting GLSurfaceView");
   }
   synchronized (instance.yuvImageRenderers) {
     for (YuvImageRenderer yuvImageRenderer : instance.yuvImageRenderers) {
       if (yuvImageRenderer == renderer) {
         yuvImageRenderer.reset();
       }
     }
   }
 }
Пример #5
0
 public static synchronized void setRendererEvents(
     VideoRenderer.Callbacks renderer, RendererCommon.RendererEvents rendererEvents) {
   Logging.d(TAG, "VideoRendererGui.setRendererEvents");
   if (instance == null) {
     throw new RuntimeException("Attempt to set renderer events before setting GLSurfaceView");
   }
   synchronized (instance.yuvImageRenderers) {
     for (YuvImageRenderer yuvImageRenderer : instance.yuvImageRenderers) {
       if (yuvImageRenderer == renderer) {
         yuvImageRenderer.rendererEvents = rendererEvents;
       }
     }
   }
 }
Пример #6
0
 /** Releases GLSurfaceView video renderer. */
 public static synchronized void dispose() {
   if (instance == null) {
     return;
   }
   Logging.d(TAG, "VideoRendererGui.dispose");
   synchronized (instance.yuvImageRenderers) {
     for (YuvImageRenderer yuvImageRenderer : instance.yuvImageRenderers) {
       yuvImageRenderer.release();
     }
     instance.yuvImageRenderers.clear();
   }
   instance.surface = null;
   eglContext = null;
   eglContextReady = null;
   instance = null;
 }
Пример #7
0
 public static synchronized void update(
     VideoRenderer.Callbacks renderer,
     int x,
     int y,
     int width,
     int height,
     RendererCommon.ScalingType scalingType,
     boolean mirror) {
   Logging.d(TAG, "VideoRendererGui.update");
   if (instance == null) {
     throw new RuntimeException("Attempt to update yuv renderer before setting GLSurfaceView");
   }
   synchronized (instance.yuvImageRenderers) {
     for (YuvImageRenderer yuvImageRenderer : instance.yuvImageRenderers) {
       if (yuvImageRenderer == renderer) {
         yuvImageRenderer.setPosition(x, y, width, height, scalingType, mirror);
       }
     }
   }
 }