diff --git a/libavformat/asf.c b/libavformat/asf.c
index 5ff54c782fbfc1952390d780d0a23f10a2c56d78..1d5c149ea8a443765820dc9c36f3a3b0e15d1d48 100644
--- a/libavformat/asf.c
+++ b/libavformat/asf.c
@@ -555,11 +555,7 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
     default: var = defval; break; \
     }
 
-/**
- *
- * @return <0 in case of an error
- */
-static int asf_get_packet(AVFormatContext *s, ByteIOContext *pb)
+int ff_asf_get_packet(AVFormatContext *s, ByteIOContext *pb)
 {
     ASFContext *asf = s->priv_data;
     uint32_t packet_length, padsize;
@@ -703,13 +699,7 @@ static int asf_read_frame_header(AVFormatContext *s, ByteIOContext *pb){
     return 0;
 }
 
-/**
- * Parse data from individual ASF packets (which were previously loaded
- * with asf_get_packet()).
- * @returns 0 if data was stored in pkt, <0 on error or 1 if more ASF
- *          packets need to be loaded (through asf_get_packet())
- */
-static int asf_parse_packet(AVFormatContext *s, ByteIOContext *pb, AVPacket *pkt)
+int ff_asf_parse_packet(AVFormatContext *s, ByteIOContext *pb, AVPacket *pkt)
 {
     ASFContext *asf = s->priv_data;
     ASFStream *asf_st = 0;
@@ -884,9 +874,9 @@ static int asf_read_packet(AVFormatContext *s, AVPacket *pkt)
         int ret;
 
         /* parse cached packets, if any */
-        if ((ret = asf_parse_packet(s, s->pb, pkt)) <= 0)
+        if ((ret = ff_asf_parse_packet(s, s->pb, pkt)) <= 0)
             return ret;
-        if ((ret = asf_get_packet(s, s->pb)) < 0)
+        if ((ret = ff_asf_get_packet(s, s->pb)) < 0)
             assert(asf->packet_size_left < FRAME_HEADER_SIZE || asf->packet_segments < 1);
         asf->packet_time_start = 0;
     }
diff --git a/libavformat/asf.h b/libavformat/asf.h
index 4ccae1091ad3a7cd6a9ec664e2252f7afb646584..afb015e13b14f3d344586d5ce701299439e8df0f 100644
--- a/libavformat/asf.h
+++ b/libavformat/asf.h
@@ -286,4 +286,25 @@ static const GUID my_guid = {
 
 #define ASF_PL_FLAG_KEY_FRAME 0x80 //1000 0000
 
+extern AVInputFormat asf_demuxer;
+
+/**
+ * Load a single ASF packet into the demuxer.
+ * @param s demux context
+ * @param pb context to read data from
+ * @returns 0 on success, <0 on error
+ */
+int ff_asf_get_packet(AVFormatContext *s, ByteIOContext *pb);
+
+/**
+ * Parse data from individual ASF packets (which were previously loaded
+ * with asf_get_packet()).
+ * @param s demux context
+ * @param pb context to read data from
+ * @param pkt pointer to store packet data into
+ * @returns 0 if data was stored in pkt, <0 on error or 1 if more ASF
+ *          packets need to be loaded (through asf_get_packet())
+ */
+int ff_asf_parse_packet(AVFormatContext *s, ByteIOContext *pb, AVPacket *pkt);
+
 #endif /* AVFORMAT_ASF_H */