Adding video reader/writer APIs.

Right now only IVF format is supported which is enough for example code.
Other formats like y4m, webm, raw yuv will be supported later.

Change-Id: I34c6f20731c1851947587ca5c589d7856b675164
diff --git a/examples/decode_to_md5.c b/examples/decode_to_md5.c
index bba2182..077513c 100644
--- a/examples/decode_to_md5.c
+++ b/examples/decode_to_md5.c
@@ -38,9 +38,9 @@
 #include "vpx/vp8dx.h"
 #include "vpx/vpx_decoder.h"
 
-#include "./ivfdec.h"
 #include "./md5_utils.h"
 #include "./tools_common.h"
+#include "./video_reader.h"
 #include "./vpx_config.h"
 
 static void get_image_md5(const vpx_image_t *img, unsigned char digest[16]) {
@@ -79,41 +79,42 @@
 }
 
 int main(int argc, char **argv) {
-  FILE *infile, *outfile;
+  int frame_cnt = 0;
+  FILE *outfile = NULL;
   vpx_codec_ctx_t codec;
-  vpx_codec_iface_t *iface;
-  int flags = 0, frame_cnt = 0;
-  vpx_video_t *video;
+  vpx_codec_iface_t *iface = NULL;
+  VpxVideoReader *reader = NULL;
+  const VpxVideoInfo *info = NULL;
 
   exec_name = argv[0];
 
   if (argc != 3)
-    die("Invalid number of arguments");
+    die("Invalid number of arguments.");
 
-  if (!(infile = fopen(argv[1], "rb")))
-    die("Failed to open %s for reading", argv[1]);
+  reader = vpx_video_reader_open(argv[1]);
+  if (!reader)
+    die("Failed to open %s for reading.", argv[1]);
 
   if (!(outfile = fopen(argv[2], "wb")))
-    die("Failed to open %s for writing", argv[2]);
+    die("Failed to open %s for writing.", argv[2]);
 
-  video = vpx_video_open_file(infile);
-  if (!video)
-    die("%s is not an IVF file.", argv[1]);
+  info = vpx_video_reader_get_info(reader);
 
-  iface = get_codec_interface(vpx_video_get_fourcc(video));
+  iface = get_codec_interface(info->codec_fourcc);
   if (!iface)
-    die("Unknown FOURCC code.");
+    die("Unknown input codec.");
 
   printf("Using %s\n", vpx_codec_iface_name(iface));
 
-  if (vpx_codec_dec_init(&codec, iface, NULL, flags))
+  if (vpx_codec_dec_init(&codec, iface, NULL, 0))
     die_codec(&codec, "Failed to initialize decoder");
 
-  while (vpx_video_read_frame(video)) {
+  while (vpx_video_reader_read_frame(reader)) {
     vpx_codec_iter_t iter = NULL;
     vpx_image_t *img = NULL;
     size_t frame_size = 0;
-    const unsigned char *frame = vpx_video_get_frame(video, &frame_size);
+    const unsigned char *frame = vpx_video_reader_get_frame(reader,
+                                                            &frame_size);
     if (vpx_codec_decode(&codec, frame, frame_size, NULL, 0))
       die_codec(&codec, "Failed to decode frame");
 
@@ -129,11 +130,10 @@
 
   printf("Processed %d frames.\n", frame_cnt);
   if (vpx_codec_destroy(&codec))
-    die_codec(&codec, "Failed to destroy codec");
+    die_codec(&codec, "Failed to destroy codec.");
 
-  vpx_video_close(video);
+  vpx_video_reader_close(reader);
 
   fclose(outfile);
-  fclose(infile);
   return EXIT_SUCCESS;
 }