-diff --git a/media/filters/ffmpeg_glue.h b/media/filters/ffmpeg_glue.h
-index 17241b9..8a92312 100644
---- a/media/filters/ffmpeg_glue.h
-+++ b/media/filters/ffmpeg_glue.h
-@@ -28,9 +28,9 @@
- #include "base/basictypes.h"
- #include "base/memory/scoped_ptr.h"
- #include "media/base/media_export.h"
-+#include "media/ffmpeg/ffmpeg_common.h"
+--- a/media/ffmpeg/ffmpeg_common.h 2015-11-27 12:01:56.155462264 +0000
++++ b/media/ffmpeg/ffmpeg_common.h 2015-11-27 12:03:03.348846300 +0000
+@@ -19,10 +19,6 @@
- struct AVFormatContext;
--struct AVIOContext;
+ // Include FFmpeg header files.
+ extern "C" {
+-// Disable deprecated features which result in spammy compile warnings. This
+-// list of defines must mirror those in the 'defines' section of BUILD.gn file &
+-// ffmpeg.gyp file or the headers below will generate different structures!
+-#define FF_API_CONVERGENCE_DURATION 0
+ // Upstream libavcodec/utils.c still uses the deprecated
+ // av_dup_packet(), causing deprecation warnings.
+ // The normal fix for such things is to disable the feature as below,
+@@ -36,7 +32,6 @@
+ MSVC_PUSH_DISABLE_WARNING(4244);
+ #include <libavcodec/avcodec.h>
+ #include <libavformat/avformat.h>
+-#include <libavformat/internal.h>
+ #include <libavformat/avio.h>
+ #include <libavutil/avutil.h>
+ #include <libavutil/imgutils.h>
+diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
+index 155e980..7ba327a 100644
+--- a/media/filters/ffmpeg_demuxer.cc
++++ b/media/filters/ffmpeg_demuxer.cc
+@@ -1034,24 +1034,6 @@
+ // If no estimate is found, the stream entry will be kInfiniteDuration().
+ std::vector<base::TimeDelta> start_time_estimates(format_context->nb_streams,
+ kInfiniteDuration());
+- const AVFormatInternal* internal = format_context->internal;
+- if (internal && internal->packet_buffer &&
+- format_context->start_time != static_cast<int64_t>(AV_NOPTS_VALUE)) {
+- struct AVPacketList* packet_buffer = internal->packet_buffer;
+- while (packet_buffer != internal->packet_buffer_end) {
+- DCHECK_LT(static_cast<size_t>(packet_buffer->pkt.stream_index),
+- start_time_estimates.size());
+- const AVStream* stream =
+- format_context->streams[packet_buffer->pkt.stream_index];
+- if (packet_buffer->pkt.pts != static_cast<int64_t>(AV_NOPTS_VALUE)) {
+- const base::TimeDelta packet_pts =
+- ConvertFromTimeBase(stream->time_base, packet_buffer->pkt.pts);
+- if (packet_pts < start_time_estimates[stream->index])
+- start_time_estimates[stream->index] = packet_pts;
+- }
+- packet_buffer = packet_buffer->next;
+- }
+- }
- namespace media {
-
-diff --git a/media/media.gyp b/media/media.gyp
-index df217d2..fde3830 100644
---- a/media/media.gyp
-+++ b/media/media.gyp
-@@ -363,6 +363,9 @@
- 'dependencies': [
- '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
- ],
-+ 'export_dependent_settings': [
-+ '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg',
-+ ],
- }, { # use_ffmpeg == 0
- # Exclude the sources that depend on ffmpeg.
- 'sources!': [
-diff --git a/webkit/media/webkit_media.gypi b/webkit/media/webkit_media.gypi
-index 81b770c..7b6d673 100644
---- a/webkit/media/webkit_media.gypi
-+++ b/webkit/media/webkit_media.gypi
-@@ -24,6 +24,7 @@
- 'dependencies': [
- '<(DEPTH)/base/base.gyp:base',
- '<(DEPTH)/base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
-+ '<(DEPTH)/media/media.gyp:media',
- '<(DEPTH)/media/media.gyp:shared_memory_support',
- '<(DEPTH)/media/media.gyp:yuv_convert',
- '<(DEPTH)/skia/skia.gyp:skia',
---- a/media/ffmpeg/ffmpeg_common.cc.orig 2013-01-17 00:07:51.635057013 +0000
-+++ b/media/ffmpeg/ffmpeg_common.cc 2013-01-17 00:15:50.867406811 +0000
-@@ -10,6 +10,8 @@
- #include "media/base/video_frame.h"
- #include "media/base/video_util.h"
-
-+#undef SampleFormat
-+
- namespace media {
-
- // Why FF_INPUT_BUFFER_PADDING_SIZE? FFmpeg assumes all input buffers are
-@@ -84,8 +86,10 @@
- return kCodecGSM_MS;
- case CODEC_ID_PCM_MULAW:
- return kCodecPCM_MULAW;
-+#ifdef CODEC_ID_OPUS
- case CODEC_ID_OPUS:
- return kCodecOpus;
-+#endif
- default:
- DVLOG(1) << "Unknown audio CodecID: " << codec_id;
- }
-@@ -129,8 +133,10 @@
- return CODEC_ID_GSM_MS;
- case kCodecPCM_MULAW:
- return CODEC_ID_PCM_MULAW;
-+#ifdef CODEC_ID_OPUS
- case kCodecOpus:
- return CODEC_ID_OPUS;
-+#endif
- default:
- DVLOG(1) << "Unknown AudioCodec: " << audio_codec;
- }
-@@ -153,8 +153,10 @@
- return kCodecMPEG4;
- case CODEC_ID_VP8:
- return kCodecVP8;
-+#ifdef AV_CODEC_ID_VP9:
- case AV_CODEC_ID_VP9:
- return kCodecVP9;
-+#endif
- default:
- DVLOG(1) << "Unknown video CodecID: " << codec_id;
- }
-@@ -171,8 +173,10 @@
- return CODEC_ID_MPEG4;
- case kCodecVP8:
- return CODEC_ID_VP8;
-+#ifdef AV_CODEC_ID_VP9:
- case kCodecVP9:
- return AV_CODEC_ID_VP9;
-+#endif
- default:
- DVLOG(1) << "Unknown VideoCodec: " << video_codec;
- }
-@@ -423,8 +429,10 @@
- return CHANNEL_LAYOUT_6_1_FRONT;
- case AV_CH_LAYOUT_7POINT0_FRONT:
- return CHANNEL_LAYOUT_7_0_FRONT;
-+#ifdef AV_CH_LAYOUT_7POINT1_WIDE_BACK
- case AV_CH_LAYOUT_7POINT1_WIDE_BACK:
- return CHANNEL_LAYOUT_7_1_WIDE_BACK;
-+#endif
- case AV_CH_LAYOUT_OCTAGONAL:
- return CHANNEL_LAYOUT_OCTAGONAL;
- default:
+ AVStream* audio_stream = NULL;
+ AudioDecoderConfig audio_config;