/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 2.0.9
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

namespace org.doubango.tinyWRAP {

using System;
using System.Runtime.InteropServices;

public class ProxyVideoProducer : ProxyPlugin {
  private HandleRef swigCPtr;

  internal ProxyVideoProducer(IntPtr cPtr, bool cMemoryOwn) : base(tinyWRAPPINVOKE.ProxyVideoProducer_SWIGUpcast(cPtr), cMemoryOwn) {
    swigCPtr = new HandleRef(this, cPtr);
  }

  internal static HandleRef getCPtr(ProxyVideoProducer obj) {
    return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
  }

  ~ProxyVideoProducer() {
    Dispose();
  }

  public override void Dispose() {
    lock(this) {
      if (swigCPtr.Handle != IntPtr.Zero) {
        if (swigCMemOwn) {
          swigCMemOwn = false;
          tinyWRAPPINVOKE.delete_ProxyVideoProducer(swigCPtr);
        }
        swigCPtr = new HandleRef(null, IntPtr.Zero);
      }
      GC.SuppressFinalize(this);
      base.Dispose();
    }
  }

  public int getRotation() {
    int ret = tinyWRAPPINVOKE.ProxyVideoProducer_getRotation(swigCPtr);
    return ret;
  }

  public bool setRotation(int nRot) {
    bool ret = tinyWRAPPINVOKE.ProxyVideoProducer_setRotation(swigCPtr, nRot);
    return ret;
  }

  public bool setActualCameraOutputSize(uint nWidth, uint nHeight) {
    bool ret = tinyWRAPPINVOKE.ProxyVideoProducer_setActualCameraOutputSize(swigCPtr, nWidth, nHeight);
    return ret;
  }

  public int push(IntPtr pBuffer, uint nSize) {
    int ret = tinyWRAPPINVOKE.ProxyVideoProducer_push(swigCPtr, pBuffer, nSize);
    return ret;
  }

  public void setCallback(ProxyVideoProducerCallback pCallback) {
    tinyWRAPPINVOKE.ProxyVideoProducer_setCallback(swigCPtr, ProxyVideoProducerCallback.getCPtr(pCallback));
  }

  public virtual ulong getMediaSessionId() {
    ulong ret = tinyWRAPPINVOKE.ProxyVideoProducer_getMediaSessionId(swigCPtr);
    return ret;
  }

  public static bool registerPlugin() {
    bool ret = tinyWRAPPINVOKE.ProxyVideoProducer_registerPlugin();
    return ret;
  }

  public static void setDefaultChroma(tmedia_chroma_t eChroma) {
    tinyWRAPPINVOKE.ProxyVideoProducer_setDefaultChroma((int)eChroma);
  }

}

}
