From 574cf6a0947b9086a3746a8f510d4b7a6fbba952 Mon Sep 17 00:00:00 2001 From: winlin Date: Mon, 8 Jun 2015 15:02:19 +0800 Subject: [PATCH] use libfdk_aac for srs2. --- trunk/auto/build_ffmpeg.sh | 3 -- trunk/src/app/srs_app_config.cpp | 12 ++++--- trunk/src/app/srs_app_config.hpp | 4 +-- trunk/src/app/srs_app_ffmpeg.cpp | 3 +- trunk/src/utest/srs_utest_config.cpp | 50 ++++++++++++++-------------- 5 files changed, 37 insertions(+), 35 deletions(-) diff --git a/trunk/auto/build_ffmpeg.sh b/trunk/auto/build_ffmpeg.sh index 8748224cd..2bf106508 100755 --- a/trunk/auto/build_ffmpeg.sh +++ b/trunk/auto/build_ffmpeg.sh @@ -19,9 +19,6 @@ echo "SRS_JOBS: ${SRS_JOBS}" mkdir -p ${ff_build_dir} mkdir -p ${ff_release_dir} -# for ubuntu14, donot compile libaacplus. -UBUNTU14=NO;grep -in "Ubuntu 14." /etc/issue >/dev/null 2>&1; if [[ $? -eq 0 ]]; then UBUNTU14=YES; fi - # yasm for libx264 ff_yasm_bin=${ff_release_dir}/bin/yasm if [[ -f ${ff_yasm_bin} ]]; then diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 082f2efda..a62765a38 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -2860,13 +2860,15 @@ vector SrsConfig::get_engine_vfilter(SrsConfDirective* engine) string SrsConfig::get_engine_vcodec(SrsConfDirective* engine) { + static string DEFAULT = ""; + if (!engine) { - return ""; + return DEFAULT; } SrsConfDirective* conf = engine->get("vcodec"); if (!conf) { - return ""; + return DEFAULT; } return conf->arg0(); @@ -2998,13 +3000,15 @@ vector SrsConfig::get_engine_vparams(SrsConfDirective* engine) string SrsConfig::get_engine_acodec(SrsConfDirective* engine) { + static string DEFAULT = ""; + if (!engine) { - return ""; + return DEFAULT; } SrsConfDirective* conf = engine->get("acodec"); if (!conf) { - return ""; + return DEFAULT; } return conf->arg0(); diff --git a/trunk/src/app/srs_app_config.hpp b/trunk/src/app/srs_app_config.hpp index eb0374540..c80e82bcf 100644 --- a/trunk/src/app/srs_app_config.hpp +++ b/trunk/src/app/srs_app_config.hpp @@ -783,7 +783,7 @@ public: virtual std::vector get_engine_vfilter(SrsConfDirective* engine); /** * get the vcodec of engine, - * the codec of video, copy or libx264 + * the codec of video, can be vn, copy or libx264 */ virtual std::string get_engine_vcodec(SrsConfDirective* engine); /** @@ -827,7 +827,7 @@ public: virtual std::vector get_engine_vparams(SrsConfDirective* engine); /** * get the acodec of engine, - * the audio codec can be copy or libaacplus + * the audio codec can be an, copy or libfdk_aac */ virtual std::string get_engine_acodec(SrsConfDirective* engine); /** diff --git a/trunk/src/app/srs_app_ffmpeg.cpp b/trunk/src/app/srs_app_ffmpeg.cpp index 53b24f06f..79fcd39dd 100644 --- a/trunk/src/app/srs_app_ffmpeg.cpp +++ b/trunk/src/app/srs_app_ffmpeg.cpp @@ -48,6 +48,7 @@ using namespace std; // for example, libaacplus, aac, fdkaac #define SRS_RTMP_ENCODER_ACODEC "aac" #define SRS_RTMP_ENCODER_LIBAACPLUS "libaacplus" +#define SRS_RTMP_ENCODER_LIBFDKAAC "libfdk_aac" SrsFFMPEG::SrsFFMPEG(std::string ffmpeg_bin) { @@ -174,7 +175,7 @@ int SrsFFMPEG::initialize_transcode(SrsConfDirective* engine) } // @see, https://github.com/simple-rtmp-server/srs/issues/145 - if (acodec == SRS_RTMP_ENCODER_LIBAACPLUS) { + if (acodec == SRS_RTMP_ENCODER_LIBAACPLUS && acodec != SRS_RTMP_ENCODER_LIBFDKAAC) { if (abitrate < 16 || abitrate > 72) { ret = ERROR_ENCODER_ABITRATE; srs_error("invalid abitrate for aac: %d, must in [16, 72], ret=%d", abitrate, ret); diff --git a/trunk/src/utest/srs_utest_config.cpp b/trunk/src/utest/srs_utest_config.cpp index 521db6685..9406701fa 100644 --- a/trunk/src/utest/srs_utest_config.cpp +++ b/trunk/src/utest/srs_utest_config.cpp @@ -289,7 +289,7 @@ std::string _full_conf = "" " bf 3; \n " " refs 10; \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 70; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -320,7 +320,7 @@ std::string _full_conf = "" " vpreset superfast; \n " " vparams { \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 45; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -349,7 +349,7 @@ std::string _full_conf = "" " vpreset superfast; \n " " vparams { \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 45; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -379,7 +379,7 @@ std::string _full_conf = "" " vpreset superfast; \n " " vparams { \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 45; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -396,7 +396,7 @@ std::string _full_conf = "" " engine acodec { \n " " enabled on; \n " " vcodec copy; \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 45; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -413,7 +413,7 @@ std::string _full_conf = "" " engine vn { \n " " enabled on; \n " " vcodec vn; \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 45; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -461,7 +461,7 @@ std::string _full_conf = "" " bf 3; \n " " refs 10; \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 70; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -483,7 +483,7 @@ std::string _full_conf = "" " vpreset medium; \n " " vparams { \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 70; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -503,7 +503,7 @@ std::string _full_conf = "" " vpreset fast; \n " " vparams { \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 60; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -523,7 +523,7 @@ std::string _full_conf = "" " vpreset superfast; \n " " vparams { \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 45; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -534,7 +534,7 @@ std::string _full_conf = "" " engine vcopy { \n " " enabled on; \n " " vcodec copy; \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 45; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -581,7 +581,7 @@ std::string _full_conf = "" " vpreset superfast; \n " " vparams { \n " " } \n " -" acodec libaacplus; \n " +" acodec libfdk_aac; \n " " abitrate 45; \n " " asample_rate 44100; \n " " achannels 2; \n " @@ -2586,7 +2586,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_mirror) EXPECT_STREQ("baseline", conf.get_engine_vprofile(engine).c_str()); EXPECT_STREQ("superfast", conf.get_engine_vpreset(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vparams(engine).size() == 0); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(45, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -2676,7 +2676,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_crop) EXPECT_STREQ("baseline", conf.get_engine_vprofile(engine).c_str()); EXPECT_STREQ("superfast", conf.get_engine_vpreset(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vparams(engine).size() == 0); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(45, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -2766,7 +2766,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_logo) EXPECT_STREQ("baseline", conf.get_engine_vprofile(engine).c_str()); EXPECT_STREQ("superfast", conf.get_engine_vpreset(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vparams(engine).size() == 0); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(45, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -2849,7 +2849,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_audio) EXPECT_STREQ("flv", conf.get_engine_iformat(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vfilter(engine).size() == 0); EXPECT_STREQ("copy", conf.get_engine_vcodec(engine).c_str()); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(45, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -2933,7 +2933,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_vn) EXPECT_STREQ("flv", conf.get_engine_iformat(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vfilter(engine).size() == 0); EXPECT_STREQ("vn", conf.get_engine_vcodec(engine).c_str()); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(45, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -3105,7 +3105,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_all) EXPECT_STREQ("main", conf.get_engine_vprofile(engine).c_str()); EXPECT_STREQ("medium", conf.get_engine_vpreset(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vparams(engine).size() > 0); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(70, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -3130,7 +3130,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_all) EXPECT_STREQ("main", conf.get_engine_vprofile(engine).c_str()); EXPECT_STREQ("medium", conf.get_engine_vpreset(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vparams(engine).size() == 0); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(70, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -3155,7 +3155,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_all) EXPECT_STREQ("main", conf.get_engine_vprofile(engine).c_str()); EXPECT_STREQ("fast", conf.get_engine_vpreset(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vparams(engine).size() == 0); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(60, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -3180,7 +3180,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_all) EXPECT_STREQ("baseline", conf.get_engine_vprofile(engine).c_str()); EXPECT_STREQ("superfast", conf.get_engine_vpreset(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vparams(engine).size() == 0); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(45, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -3197,7 +3197,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_all) EXPECT_STREQ("flv", conf.get_engine_iformat(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vfilter(engine).size() == 0); EXPECT_STREQ("copy", conf.get_engine_vcodec(engine).c_str()); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(45, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -3322,7 +3322,7 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_ffempty) EXPECT_STREQ("baseline", conf.get_engine_vprofile(engine).c_str()); EXPECT_STREQ("superfast", conf.get_engine_vpreset(engine).c_str()); EXPECT_TRUE((int)conf.get_engine_vparams(engine).size() == 0); - EXPECT_STREQ("libaacplus", conf.get_engine_acodec(engine).c_str()); + EXPECT_STREQ("libfdk_aac", conf.get_engine_acodec(engine).c_str()); EXPECT_EQ(45, conf.get_engine_abitrate(engine)); EXPECT_EQ(44100, conf.get_engine_asample_rate(engine)); EXPECT_EQ(2, conf.get_engine_achannels(engine)); @@ -4837,12 +4837,12 @@ VOID TEST(ConfigMainTest, CheckConf_transcode) if (true) { MockSrsConfig conf; - EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost v{transcode{engine {acodec libaacplus;}}}")); + EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost v{transcode{engine {acodec libfdk_aac;}}}")); } if (true) { MockSrsConfig conf; - EXPECT_TRUE(ERROR_SUCCESS != conf.parse(_MIN_OK_CONF"vhost v{transcode{engine {acodecs libaacplus;}}}")); + EXPECT_TRUE(ERROR_SUCCESS != conf.parse(_MIN_OK_CONF"vhost v{transcode{engine {acodecs libfdk_aac;}}}")); } if (true) {