diff --git a/README.md b/README.md
index 8bf3aa96f..960c085eb 100755
--- a/README.md
+++ b/README.md
@@ -367,7 +367,7 @@ See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-serv
* nginx v1.5.0: 139524 lines
### History
-* v1.0, 2014-03-01, modularity, extract core/kernel/os/protocol/app/main module.
+* v1.0, 2014-03-01, modularity, extract core/kernel/os/protocol/drm/app/main module.
* v1.0, 2014-02-28, support arm build(SRS/ST), add ssl to 3rdparty package.
* v1.0, 2014-02-28, add wiki [BuildArm](https://github.com/winlinvip/simple-rtmp-server/wiki/Build), [FFMPEG](https://github.com/winlinvip/simple-rtmp-server/wiki/FFMPEG), [Reload](https://github.com/winlinvip/simple-rtmp-server/wiki/Reload)
* v1.0, 2014-02-27, add wiki [LowLatency](https://github.com/winlinvip/simple-rtmp-server/wiki/LowLatency), [HTTPCallback](https://github.com/winlinvip/simple-rtmp-server/wiki/HTTPCallback), [ServerSideScript](https://github.com/winlinvip/simple-rtmp-server/wiki/ServerSideScript), [IDE](https://github.com/winlinvip/simple-rtmp-server/wiki/IDE)
diff --git a/trunk/configure b/trunk/configure
index e006a1dc7..208e38226 100755
--- a/trunk/configure
+++ b/trunk/configure
@@ -138,17 +138,24 @@ MODULE_FILES=("srs_kernel_error" "srs_kernel_log" "srs_kernel_reload" "srs_kerne
MODULE_DIR="src/kernel" . auto/modules.sh
KERNEL_OBJS="${MODULE_OBJS[@]}"
#
+#Protocol, depends on core/kernel, provides rtmp/htttp protocol features.
+MODULE_ID="PROTOCOL"
+MODULE_DEPENDS=("CORE" "KERNEL")
+ModuleLibIncs=(${SRS_OBJS})
+MODULE_FILES=("srs_protocol_amf0")
+MODULE_DIR="src/protocol" . auto/modules.sh
+PROTOCOL_OBJS="${MODULE_OBJS[@]}"
+#
#App Module
MODULE_ID="APP"
-MODULE_DEPENDS=("CORE" "KERNEL")
+MODULE_DEPENDS=("CORE" "KERNEL" "PROTOCOL")
ModuleLibIncs=(${LibSTRoot} ${LibHttpParserRoot} ${LibSSLRoot} ${SRS_OBJS})
MODULE_FILES=("srs_core_server"
"srs_core_conn" "srs_core_client"
"srs_core_rtmp" "srs_core_socket"
- "srs_core_protocol" "srs_core_amf0"
+ "srs_core_protocol"
"srs_core_source" "srs_core_codec"
- "srs_core_handshake"
- "srs_core_refer"
+ "srs_core_handshake" "srs_core_refer"
"srs_core_hls" "srs_core_forward" "srs_core_encoder"
"srs_core_http" "srs_core_thread" "srs_core_bandwidth"
"srs_core_st" "srs_core_log_context")
@@ -157,7 +164,7 @@ APP_OBJS="${MODULE_OBJS[@]}"
#
#Main Module
MODULE_ID="MAIN"
-MODULE_DEPENDS=("CORE" "KERNEL" "APP")
+MODULE_DEPENDS=("CORE" "KERNEL" "PROTOCOL" "APP")
ModuleLibIncs=(${LibSTRoot} ${SRS_OBJS})
MODULE_FILES=("srs_main_server" "srs_main_bandcheck")
MODULE_DIR="src/main" . auto/modules.sh
@@ -173,7 +180,7 @@ MAIN_ENTRANCES=("srs_main_server" "srs_main_bandcheck")
# all depends libraries
ModuleLibFiles=(${LibSTfile} ${LibHttpParserfile} ${LibSSLfile})
# all depends objects
-MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${APP_OBJS[@]} ${MAIN_OBJS[@]}"
+MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${PROTOCOL_OBJS[@]} ${APP_OBJS[@]} ${MAIN_OBJS[@]}"
LINK_OPTIONS="-ldl"
#
# srs:
diff --git a/trunk/src/app/srs_core_bandwidth.cpp b/trunk/src/app/srs_core_bandwidth.cpp
index e68ff98cc..0e03e23ef 100644
--- a/trunk/src/app/srs_core_bandwidth.cpp
+++ b/trunk/src/app/srs_core_bandwidth.cpp
@@ -30,7 +30,7 @@ using namespace std;
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_core_hls.cpp b/trunk/src/app/srs_core_hls.cpp
index f1add824b..a5c0694bf 100644
--- a/trunk/src/app/srs_core_hls.cpp
+++ b/trunk/src/app/srs_core_hls.cpp
@@ -35,7 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_core_protocol.cpp b/trunk/src/app/srs_core_protocol.cpp
index a2bd39849..f802c47af 100644
--- a/trunk/src/app/srs_core_protocol.cpp
+++ b/trunk/src/app/srs_core_protocol.cpp
@@ -24,7 +24,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/app/srs_core_rtmp.cpp b/trunk/src/app/srs_core_rtmp.cpp
index 66ac5a26f..5cb452582 100644
--- a/trunk/src/app/srs_core_rtmp.cpp
+++ b/trunk/src/app/srs_core_rtmp.cpp
@@ -28,7 +28,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include
#include
#include
-#include
+#include
#include
#include
diff --git a/trunk/src/app/srs_core_source.cpp b/trunk/src/app/srs_core_source.cpp
index 9585128e1..bbcf3e983 100644
--- a/trunk/src/app/srs_core_source.cpp
+++ b/trunk/src/app/srs_core_source.cpp
@@ -29,7 +29,7 @@ using namespace std;
#include
#include
#include
-#include
+#include
#include
#include
#include
diff --git a/trunk/src/main/srs_main_bandcheck.cpp b/trunk/src/main/srs_main_bandcheck.cpp
index dabd514d7..b5a865066 100644
--- a/trunk/src/main/srs_main_bandcheck.cpp
+++ b/trunk/src/main/srs_main_bandcheck.cpp
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include
#include
#include
-#include
+#include
#include
#include
diff --git a/trunk/src/app/srs_core_amf0.cpp b/trunk/src/protocol/srs_protocol_amf0.cpp
similarity index 99%
rename from trunk/src/app/srs_core_amf0.cpp
rename to trunk/src/protocol/srs_protocol_amf0.cpp
index 8734ed2fc..934dc6b0c 100644
--- a/trunk/src/app/srs_core_amf0.cpp
+++ b/trunk/src/protocol/srs_protocol_amf0.cpp
@@ -21,7 +21,7 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-#include
+#include
#include
diff --git a/trunk/src/app/srs_core_amf0.hpp b/trunk/src/protocol/srs_protocol_amf0.hpp
similarity index 98%
rename from trunk/src/app/srs_core_amf0.hpp
rename to trunk/src/protocol/srs_protocol_amf0.hpp
index 219011351..8f7475cba 100644
--- a/trunk/src/app/srs_core_amf0.hpp
+++ b/trunk/src/protocol/srs_protocol_amf0.hpp
@@ -21,11 +21,11 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-#ifndef SRS_CORE_AMF0_HPP
-#define SRS_CORE_AMF0_HPP
+#ifndef SRS_PROTOCOL_AMF0_HPP
+#define SRS_PROTOCOL_AMF0_HPP
/*
-#include
+#include
*/
#include
diff --git a/trunk/src/srs/srs.upp b/trunk/src/srs/srs.upp
index 89d79a441..48bbd433b 100755
--- a/trunk/src/srs/srs.upp
+++ b/trunk/src/srs/srs.upp
@@ -24,9 +24,10 @@ file
..\kernel\srs_kernel_reload.cpp,
..\kernel\srs_kernel_stream.hpp,
..\kernel\srs_kernel_stream.cpp,
+ protocol readonly separator,
+ ..\protocol\srs_protocol_amf0.hpp,
+ ..\protocol\srs_protocol_amf0.cpp,
app readonly separator,
- ..\app\srs_core_amf0.hpp,
- ..\app\srs_core_amf0.cpp,
..\app\srs_core_bandwidth.hpp,
..\app\srs_core_bandwidth.cpp,
..\app\srs_core_client.hpp,