Index: Portfile
===================================================================
--- Portfile	(revision 147963)
+++ Portfile	(working copy)
@@ -5,7 +5,7 @@
 
 name                libextractor
 version             1.3
-revision            2
+revision            3
 categories          devel
 license             GPL-3+
 maintainers         ryandesign openmaintainer
@@ -53,7 +53,8 @@
 
 patchfiles          patch-configure.diff \
                     patch-src-plugins-html_extractor.c.diff \
-                    patch-src-plugins-jpeg_extractor.c.diff
+                    patch-src-plugins-jpeg_extractor.c.diff \
+                    patch-ffmpeg-3.0.diff
 
 configure.args      --enable-ffmpeg \
                     --enable-glib \
Index: files/patch-ffmpeg-3.0.diff
===================================================================
--- files/patch-ffmpeg-3.0.diff	(nonexistent)
+++ files/patch-ffmpeg-3.0.diff	(working copy)
@@ -0,0 +1,167 @@
+diff -ur src/plugins.orig/previewopus_extractor.c src/plugins/previewopus_extractor.c
+--- src/plugins.orig/previewopus_extractor.c	2016-04-21 14:25:09.000000000 -0700
++++ src/plugins/previewopus_extractor.c	2016-04-21 14:26:39.000000000 -0700
+@@ -296,7 +296,7 @@
+ /** Initialize one audio frame for reading from the input file */
+ static int init_input_frame(AVFrame **frame)
+ {
+-    if (!(*frame = avcodec_alloc_frame())) {
++    if (!(*frame = av_frame_alloc())) {
+  #if DEBUG
+         fprintf(stderr, "Could not allocate input frame\n");
+ #endif
+@@ -655,7 +655,7 @@
+         av_freep(&converted_input_samples[0]);
+         free(converted_input_samples);
+     }
+-    avcodec_free_frame(&input_frame);
++    av_frame_free(&input_frame);
+ 
+     return ret;
+ }
+@@ -671,7 +671,7 @@
+     int error;
+ 
+     /** Create a new frame to store the audio samples. */
+-    if (!(*frame = avcodec_alloc_frame())) {
++    if (!(*frame = av_frame_alloc())) {
+         #if DEBUG
+ 		fprintf(stderr, "Could not allocate output frame\n");
+ 		#endif
+@@ -702,7 +702,7 @@
+         #if DEBUG
+ 		fprintf(stderr, "Could allocate output frame samples (error '%s')\n", get_error_text(error));
+ 		#endif
+-        avcodec_free_frame(frame);
++        av_frame_free(frame);
+         return error;
+     }
+ 
+@@ -783,17 +783,17 @@
+         #if DEBUG
+ 		fprintf(stderr, "Could not read data from FIFO\n");
+ 		#endif
+-        avcodec_free_frame(&output_frame);
++        av_frame_free(&output_frame);
+         return AVERROR_EXIT;
+     }
+ 
+     /** Encode one frame worth of audio samples. */
+     if (encode_audio_frame(output_frame, output_format_context,
+                            output_codec_context, &data_written)) {
+-        avcodec_free_frame(&output_frame);
++        av_frame_free(&output_frame);
+         return AVERROR_EXIT;
+     }
+-    avcodec_free_frame(&output_frame);
++    av_frame_free(&output_frame);
+     return 0;
+ }
+ /** Write the trailer of the output file container. */
+@@ -907,7 +907,7 @@
+       return;
+     }
+ 
+-  if (NULL == (frame = avcodec_alloc_frame ()))
++  if (NULL == (frame = av_frame_alloc ()))
+     {
+ #if DEBUG
+       fprintf (stderr,
+diff -ur src/plugins.orig/thumbnailffmpeg_extractor.c src/plugins/thumbnailffmpeg_extractor.c
+--- src/plugins.orig/thumbnailffmpeg_extractor.c	2016-04-21 14:25:09.000000000 -0700
++++ src/plugins/thumbnailffmpeg_extractor.c	2016-04-21 14:25:19.000000000 -0700
+@@ -153,7 +153,7 @@
+ static size_t 
+ create_thumbnail (int src_width, int src_height, 
+ 		  int src_stride[],
+-		  enum PixelFormat src_pixfmt, 
++		  enum AVPixelFormat src_pixfmt, 
+ 		  const uint8_t * const src_data[],
+ 		  int dst_width, int dst_height,
+ 		  uint8_t **output_data, 
+@@ -189,7 +189,7 @@
+   if (NULL == 
+       (scaler_ctx =
+        sws_getContext (src_width, src_height, src_pixfmt,
+-		       dst_width, dst_height, PIX_FMT_RGB24, 
++		       dst_width, dst_height, AV_PIX_FMT_RGB24, 
+ 		       SWS_BILINEAR, NULL, NULL, NULL)))
+     {
+ #if DEBUG
+@@ -199,7 +199,7 @@
+       return 0;
+     }
+ 
+-  if (NULL == (dst_frame = avcodec_alloc_frame ()))
++  if (NULL == (dst_frame = av_frame_alloc ()))
+     {
+ #if DEBUG
+       fprintf (stderr,
+@@ -209,7 +209,7 @@
+       return 0;
+     }
+   if (NULL == (dst_buffer =
+-	       av_malloc (avpicture_get_size (PIX_FMT_RGB24, dst_width, dst_height))))
++	       av_malloc (avpicture_get_size (AV_PIX_FMT_RGB24, dst_width, dst_height))))
+     {
+ #if DEBUG
+       fprintf (stderr,
+@@ -220,7 +220,7 @@
+       return 0;
+     }
+   avpicture_fill ((AVPicture *) dst_frame, dst_buffer,
+-                  PIX_FMT_RGB24, dst_width, dst_height);
++                  AV_PIX_FMT_RGB24, dst_width, dst_height);
+   sws_scale (scaler_ctx,
+              src_data, 
+              src_stride,
+@@ -255,7 +255,7 @@
+     }
+   encoder_codec_ctx->width = dst_width;
+   encoder_codec_ctx->height = dst_height;
+-  encoder_codec_ctx->pix_fmt = PIX_FMT_RGB24;
++  encoder_codec_ctx->pix_fmt = AV_PIX_FMT_RGB24;
+   opts = NULL;
+   if (avcodec_open2 (encoder_codec_ctx, encoder_codec, &opts) < 0)
+     {
+@@ -283,7 +283,7 @@
+   err = pkt.size;
+   memcpy(encoder_output_buffer,pkt.data, pkt.size);
+ 
+-  av_free_packet(&pkt);
++  av_packet_unref(&pkt);
+ 							  
+ 							  
+ #else
+@@ -410,7 +410,7 @@
+       return;
+     }
+   av_dict_free (&opts);
+-  if (NULL == (frame = avcodec_alloc_frame ()))
++  if (NULL == (frame = av_frame_alloc ()))
+     {
+ #if DEBUG
+       fprintf (stderr,
+@@ -563,7 +563,7 @@
+       return;
+     }
+ 
+-  if (NULL == (frame = avcodec_alloc_frame ()))
++  if (NULL == (frame = av_frame_alloc ()))
+     {
+ #if DEBUG
+       fprintf (stderr,
+@@ -603,11 +603,11 @@
+ 				 &packet);
+           if (frame_finished && frame->key_frame)
+             {
+-              av_free_packet (&packet);
++              av_packet_unref (&packet);
+               break;
+             }
+         }
+-      av_free_packet (&packet);
++      av_packet_unref (&packet);
+     }
+ 
+   if (! frame_finished)
