diff --git a/libavformat/Makefile b/libavformat/Makefile
index 0251944bd8d0249f052c1ef82086e91bcb8702ba..fa6f89b08233767664556aecb7ff3d99daefce7e 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -99,6 +99,7 @@ OBJS-$(CONFIG_GXF_MUXER)                 += gxfenc.o audiointerleave.o
 OBJS-$(CONFIG_G722_DEMUXER)              += rawdec.o
 OBJS-$(CONFIG_G722_MUXER)                += rawenc.o
 OBJS-$(CONFIG_G723_1_DEMUXER)            += g723_1.o
+OBJS-$(CONFIG_G723_1_MUXER)              += g723_1.o
 OBJS-$(CONFIG_H261_DEMUXER)              += h261dec.o rawdec.o
 OBJS-$(CONFIG_H261_MUXER)                += rawenc.o
 OBJS-$(CONFIG_H263_DEMUXER)              += h263dec.o rawdec.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index ca4a3d1b4bb314fdac2e8e24337a4c1550c8921d..7a07b44b7f713dd9c7c9000ad488ef8f25106f68 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -100,7 +100,7 @@ void av_register_all(void)
     REGISTER_MUXER    (FRAMECRC, framecrc);
     REGISTER_MUXER    (FRAMEMD5, framemd5);
     REGISTER_MUXDEMUX (G722, g722);
-    REGISTER_DEMUXER  (G723_1, g723_1);
+    REGISTER_MUXDEMUX (G723_1, g723_1);
     REGISTER_MUXER    (GIF, gif);
     REGISTER_DEMUXER  (GSM, gsm);
     REGISTER_MUXDEMUX (GXF, gxf);
diff --git a/libavformat/g723_1.c b/libavformat/g723_1.c
index 19441a1b19da87893587f851ed43e582c9ef7018..f6c394b18ad42b33a766a78370a84f66491fbd3b 100644
--- a/libavformat/g723_1.c
+++ b/libavformat/g723_1.c
@@ -81,3 +81,24 @@ AVInputFormat ff_g723_1_demuxer = {
     .extensions = "tco,rco",
     .flags = AVFMT_GENERIC_INDEX
 };
+
+#if CONFIG_G723_1_MUXER
+static int g723_1_write_packet(AVFormatContext *s, AVPacket *pkt)
+{
+    put_buffer(s->pb, pkt->data, pkt->size);
+    put_flush_packet(s->pb);
+    return 0;
+}
+
+AVOutputFormat ff_g723_1_muxer = {
+    "g723_1",
+    NULL_IF_CONFIG_SMALL("G.723.1 format"),
+    "audio/g723",
+    "tco",
+    0,
+    CODEC_ID_G723_1,
+    CODEC_ID_NONE,
+    NULL,
+    g723_1_write_packet,
+};
+#endif