diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 2dcecf5b9dc70e469a0bb4135400ac6e787084d6..2f0d8601bd368edfa2676ce8390deafd157e30dc 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -144,6 +144,7 @@ void av_register_all(void)
     REGISTER_DEMUXER (TIERTEXSEQ, tiertexseq);
     REGISTER_DEMUXER (TTA, tta);
     REGISTER_DEMUXER (V4L2, v4l2);
+    REGISTER_DEMUXER (VC1, vc1);
     REGISTER_DEMUXER (VIDEO_GRAB_DEVICE, video_grab_device);
     REGISTER_DEMUXER (VMD, vmd);
     REGISTER_MUXDEMUX(VOC, voc);
diff --git a/libavformat/allformats.h b/libavformat/allformats.h
index 9e0e13e8a31ea58be293bed0586e97f72c0b4a2c..5603a2953177c6d7c74a00de57bbef7c8fbafd38 100644
--- a/libavformat/allformats.h
+++ b/libavformat/allformats.h
@@ -154,6 +154,7 @@ extern AVInputFormat swf_demuxer;
 extern AVOutputFormat swf_muxer;
 extern AVInputFormat tta_demuxer;
 extern AVInputFormat v4l2_demuxer;
+extern AVInputFormat vc1_demuxer;
 extern AVInputFormat voc_demuxer;
 extern AVOutputFormat voc_muxer;
 extern AVInputFormat wav_demuxer;
diff --git a/libavformat/raw.c b/libavformat/raw.c
index 56f47ad04764f44daf9de2e2637954288a356bec..0f60d6a35a54dd87a128fbd05e13e97c76c79574 100644
--- a/libavformat/raw.c
+++ b/libavformat/raw.c
@@ -716,6 +716,18 @@ AVOutputFormat mjpeg_muxer = {
 };
 #endif //CONFIG_MUXERS
 
+AVInputFormat vc1_demuxer = {
+    "vc1",
+    "raw vc1",
+    0,
+    NULL /* vc1_probe */,
+    video_read_header,
+    raw_read_partial_packet,
+    raw_read_close,
+    .extensions = "vc1",
+    .value = CODEC_ID_VC1,
+};
+
 /* pcm formats */
 
 #define PCMINPUTDEF(name, long_name, ext, codec) \