diff --git a/aegisub/Makefile.am b/aegisub/Makefile.am
index 7f9e94dc24c8ab62773767322a86704c74879941..0679a62c1d7cfce52cc3778d968a5b3ee88e3ee1 100644
--- a/aegisub/Makefile.am
+++ b/aegisub/Makefile.am
@@ -10,7 +10,7 @@ libass = libass
 endif
 
 if HAVE_PROVIDER_FFMPEGSOURCE
-ffmpegsource = FFmpegSource2
+ffmpegsource = libffms
 endif
 
 SUBDIRS = \
diff --git a/aegisub/configure.in b/aegisub/configure.in
index 52c262e026c388a09aa06d459534d48d5dd1f041..18b0e9e5fb899469f0efe3f9097eeb6b6f4baf67 100644
--- a/aegisub/configure.in
+++ b/aegisub/configure.in
@@ -41,7 +41,7 @@ AM_INIT_AUTOMAKE
 AC_CONFIG_HEADER([acconf.h])
 AC_GNU_SOURCE
 AC_CANONICAL_HOST
-
+AM_PROG_CC_C_O
 
 ###########################
 # Check target architecture
@@ -1288,7 +1288,7 @@ src/libresrc/Makefile
 src/libauto3/Makefile
 src/libosxutil/Makefile
 universalchardet/Makefile
-FFmpegSource2/Makefile
+libffms/Makefile
 libass/Makefile
 automation/Makefile
 po/Makefile.in
diff --git a/aegisub/libffms/Makefile.am b/aegisub/libffms/Makefile.am
index 9b3a956a671441531b1dce29c3b831b3ebcf01e0..7e4cd992f9f6eb169ec0d863de9a769320d1d6ac 100644
--- a/aegisub/libffms/Makefile.am
+++ b/aegisub/libffms/Makefile.am
@@ -1,32 +1,28 @@
-noinst_LIBRARIES = libffmpegsource2_aegisub.a
+AUTOMAKE_OPTIONS = subdir-objects
 
-AM_CPPFLAGS = -I../src -D__UNIX__ -DFFMS_EXPORTS -DHAVE_STRLCPY @LIBAVFORMAT_CFLAGS@ @LIBAVCODEC_CFLAGS@ @LIBSWSCALE_CFLAGS@ @LIBAVUTIL_CFLAGS@ @LIBPOSTPROC_CFLAGS@
+noinst_LIBRARIES = libffmpegsource_aegisub.a
 
+AM_CPPFLAGS = -I../src -Icore -Iinclude -D__UNIX__ -DFFMS_EXPORTS -DHAVE_STRLCPY @LIBAVFORMAT_CFLAGS@ @LIBAVCODEC_CFLAGS@ @LIBSWSCALE_CFLAGS@ @LIBAVUTIL_CFLAGS@ @LIBPOSTPROC_CFLAGS@
 
-libffmpegsource2_aegisub_a_SOURCES = \
-	ffaudiosource.cpp \
-	ffms.cpp \
-	ffvideosource.cpp \
-	indexing.cpp \
-	MatroskaParser.c \
-	stdiostream.c \
-	utils.cpp \
-	wave64writer.cpp
 
+libffmpegsource_aegisub_a_SOURCES = \
+	src/core/ffaudiosource.cpp \
+	src/core/ffhaaliaudio.cpp \
+	src/core/ffhaaliindexer.cpp \
+	src/core/ffhaalivideo.cpp \
+	src/core/fflavfaudio.cpp \
+	src/core/fflavfindexer.cpp \
+	src/core/fflavfvideo.cpp \
+	src/core/ffmatroskaaudio.cpp \
+	src/core/ffmatroskaindexer.cpp \
+	src/core/ffmatroskavideo.cpp \
+	src/core/ffms.cpp \
+	src/core/ffvideosource.cpp \
+	src/core/indexing.cpp \
+	src/core/matroskaparser.c \
+	src/core/stdiostream.c \
+	src/core/utils.cpp \
+	src/core/wave64writer.cpp
 
-libffmpegsource2_aegisub_a_SOURCES += \
-	MatroskaParser.h \
-	avisynth.h \
-	ffaudiosource.h \
-	ffavisynth.h \
-	ffms.h \
-	ffpp.h \
-	ffswscale.h \
-	ffvideosource.h \
-	indexing.h \
-	stdiostream.h \
-	utils.h \
-	wave64writer.h
-
-EXTRA_DIST = \
-	ffms2.html
+libffmpegsource_aegisub_a_SOURCES += \
+	core/*.h
diff --git a/aegisub/src/Makefile.am b/aegisub/src/Makefile.am
index 1ac95eb8ff26c5d277c99e5441e3589c6b6dabba..8b84758b07d8ae1d295b22666177fc8dda4138de 100644
--- a/aegisub/src/Makefile.am
+++ b/aegisub/src/Makefile.am
@@ -18,7 +18,7 @@ SUBDIRS = \
 	$(libauto3) \
 	$(libosxutil_subdir)
 
-AM_CXXFLAGS = -DAEGISUB -Iinclude @WX_CPPFLAGS@ @OPENMP_CXXFLAGS@ @LIBAVFORMAT_CFLAGS@ @LIBAVCODEC_CFLAGS@ @LIBSWSCALE_CFLAGS@ @LIBAVUTIL_CFLAGS@ -I../FFmpegSource2
+AM_CXXFLAGS = -DAEGISUB -Iinclude @WX_CPPFLAGS@ @OPENMP_CXXFLAGS@ @LIBAVFORMAT_CFLAGS@ @LIBAVCODEC_CFLAGS@ @LIBSWSCALE_CFLAGS@ @LIBAVUTIL_CFLAGS@ -I../libffms/include
 
 bin_PROGRAMS = aegisub-2.1
 aegisub_2_1_LDADD = libresrc/libresrc.a $(libosxutil_lib)
@@ -81,7 +81,7 @@ if HAVE_PROVIDER_FFMPEGSOURCE
 noinst_LIBRARIES += libaudiovideo_ffmpegsource.a
 libaudiovideo_ffmpegsource_a_SOURCES = audio_provider_ffmpegsource.cpp video_provider_ffmpegsource.cpp ffmpegsource_common.cpp
 libaudiovideo_ffmpegsource_a_CPPFLAGS = @LIBAVFORMAT_CFLAGS@ @LIBAVCODEC_CFLAGS@ @LIBSWSCALE_CFLAGS@ @LIBAVUTIL_CFLAGS@ @LIBPOSTPROC_CFLAGS@
-aegisub_2_1_LDADD += libaudiovideo_ffmpegsource.a ../FFmpegSource2/libffmpegsource2_aegisub.a
+aegisub_2_1_LDADD += libaudiovideo_ffmpegsource.a ../libffms/libffmpegsource_aegisub.a
 aegisub_2_1_LDFLAGS += @LIBPOSTPROC_LIBS@
 endif