/*
 *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

package org.webrtc.videoengine;

import android.content.Context;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class ViERenderer {

  // View used for local rendering that Cameras can use for Video Overlay.
  private static SurfaceHolder g_localRenderer;

  public static SurfaceView CreateRenderer(Context context) {
    return  CreateRenderer(context,false);
  }

  public static SurfaceView CreateRenderer(Context context,
                                           boolean useOpenGLES2) {
    if(useOpenGLES2 == true && ViEAndroidGLES20.IsSupported(context))
      return new ViEAndroidGLES20(context);
    else
      return new SurfaceView(context);
  }

  // Creates a SurfaceView to be used by Android Camera
  // service to display a local preview.
  // This needs to be used on Android prior to version 2.1
  // in order to run the camera.
  // Call this function before ViECapture::StartCapture.
  // The created view needs to be added to a visible layout
  // after a camera has been allocated
  // (with the call ViECapture::AllocateCaptureDevice).
  // IE.
  // CreateLocalRenderer
  // ViECapture::AllocateCaptureDevice
  // LinearLayout.addview
  // ViECapture::StartCapture
  public static SurfaceView CreateLocalRenderer(Context context) {
    SurfaceView localRender = new SurfaceView(context);
    g_localRenderer = localRender.getHolder();
    g_localRenderer.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    return  localRender;
  }

  public static SurfaceHolder GetLocalRenderer() {
    return g_localRenderer;
  }

}
