Add YV12 color format for the encoder.

Change-Id: Ia054088ff5fb7227144ede92187d337143c0bcea
diff --git a/JNI/Application.java b/JNI/Application.java
index 7f8920b..c29d064 100644
--- a/JNI/Application.java
+++ b/JNI/Application.java
@@ -71,7 +71,7 @@
         long nextFrameStart = timeMultiplier.multiply(framesIn).toLong();
 
         ArrayList<VpxCodecCxPkt> encPkt = encoder.encodeFrame(
-            uncompressedFrame, frameStart, nextFrameStart - frameStart);
+            uncompressedFrame, LibVpxEnc.VPX_IMG_FMT_I420, frameStart, nextFrameStart - frameStart);
 
         for (int i = 0; i < encPkt.size(); i++) {
           VpxCodecCxPkt pkt = encPkt.get(i);
@@ -159,4 +159,4 @@
         System.err.println(outStr);
     }
   }
-}
\ No newline at end of file
+}
diff --git a/JNI/BindingsSamples.java b/JNI/BindingsSamples.java
index 2de2ce2..b09a2ce 100755
--- a/JNI/BindingsSamples.java
+++ b/JNI/BindingsSamples.java
@@ -336,7 +336,7 @@
         long nextFrameStart = timeMultiplier.multiply(framesIn).toLong();
 
         ArrayList<VpxCodecCxPkt> encPkt =
-            encoder.encodeFrame(uncompressedFrame, frameStart, nextFrameStart - frameStart);
+            encoder.encodeFrame(uncompressedFrame, LibVpxEnc.VPX_IMG_FMT_I420, frameStart, nextFrameStart - frameStart);
 
         for (int i = 0; i < encPkt.size(); i++) {
           VpxCodecCxPkt pkt = encPkt.get(i);
@@ -704,7 +704,7 @@
             long frameStart = timeMultiplier.multiply(framesIn - 1).toLong();
             long nextFrameStart = timeMultiplier.multiply(framesIn++).toLong();
 
-            encPkt = vpxEncoder.encodeFrame(rawVideoArray, frameStart, nextFrameStart - frameStart);
+            encPkt = vpxEncoder.encodeFrame(rawVideoArray, LibVpxEnc.VPX_IMG_FMT_I420, frameStart, nextFrameStart - frameStart);
 
             // Get the first vpx encoded frame.
             pktIndex = 0;
diff --git a/JNI/com/google/libvpx/LibVpxEnc.java b/JNI/com/google/libvpx/LibVpxEnc.java
index c24f1c8..03e4b7e 100644
--- a/JNI/com/google/libvpx/LibVpxEnc.java
+++ b/JNI/com/google/libvpx/LibVpxEnc.java
@@ -26,6 +26,10 @@
   public static final long FOURCC_YV12 = 0x32315659;
   public static final long FOURCC_YV16 = 0x36315659;
 
+  // Enums from libvpx.
+  public static final int VPX_IMG_FMT_YV12 = 0x301;
+  public static final int VPX_IMG_FMT_I420 = 0x102;
+
   private native void vpxCodecEncInit(long encoder, long cfg);
 
   private native int vpxCodecEncCtlSetCpuUsed(long ctx, int value);
@@ -42,7 +46,7 @@
   private native int vpxCodecEncCtlSetMaxIntraBitratePct(long ctx, int value);
 
   private native boolean vpxCodecEncode(long ctx, byte[] frame,
-                                        long pts, long duration,
+                                        int fmt, long pts, long duration,
                                         long flags, long deadline);
   private native boolean vpxCodecConvertByteEncode(long ctx, byte[] frame,
                                                    long pts, long duration,
@@ -79,9 +83,10 @@
       throw new LibVpxException(vpxCodecErrorDetail(vpxCodecIface));
     }
   }
-  public ArrayList<VpxCodecCxPkt> encodeFrame(byte[] frame, long frameStart, long frameDuration)
+
+  public ArrayList<VpxCodecCxPkt> encodeFrame(byte[] frame, int fmt, long frameStart, long frameDuration)
       throws LibVpxException {
-    if (!vpxCodecEncode(vpxCodecIface, frame, frameStart, frameDuration, 0L, 0L)) {
+    if (!vpxCodecEncode(vpxCodecIface, frame, fmt, frameStart, frameDuration, 0L, 0L)) {
       throw new LibVpxException("Unable to encode frame");
     }
     throwOnError();
diff --git a/JNI/vpx/libvpx_enc_impl.cc b/JNI/vpx/libvpx_enc_impl.cc
index d9a8a3c..9167c9c 100644
--- a/JNI/vpx/libvpx_enc_impl.cc
+++ b/JNI/vpx/libvpx_enc_impl.cc
@@ -92,14 +92,15 @@
 }
 
 FUNC(jboolean, vpxCodecEncode, jlong jctx, jbyteArray jframe,
-                               jlong pts, jlong duration,
+                               jint fmt, jlong pts, jlong duration,
                                jlong flags, jlong deadline) {
   printf("vpxCodecEncode");
   jboolean success = true;
   jbyte *frame = env->GetByteArrayElements(jframe, 0);
   vpx_codec_ctx_t *ctx = reinterpret_cast<vpx_codec_ctx_t *>(jctx);
+
   vpx_image_t *img = vpx_img_wrap(NULL,
-                                  IMG_FMT_I420,
+                                  (vpx_img_fmt)fmt,
                                   ctx->config.enc->g_w,
                                   ctx->config.enc->g_h,
                                   0,
@@ -151,7 +152,7 @@
 
   if (success) {
     vpx_image_t *img = vpx_img_wrap(NULL,
-                                    IMG_FMT_I420,
+                                    VPX_IMG_FMT_I420,
                                     ctx->config.enc->g_w,
                                     ctx->config.enc->g_h,
                                     0,