winlin

fix #310, refine aac LC, support aac HE/HEv2. 2.0.134.

@@ -550,6 +550,7 @@ Supported operating systems and hardware: @@ -550,6 +550,7 @@ Supported operating systems and hardware:
550 550
551 ### SRS 2.0 history 551 ### SRS 2.0 history
552 552
  553 +* v2.0, 2015-03-08, fix [#310](https://github.com/winlinvip/simple-rtmp-server/issues/310), refine aac LC, support aac HE/HEv2. 2.0.134.
553 * v2.0, 2015-03-06, for [#322](https://github.com/winlinvip/simple-rtmp-server/issues/322), fix http-flv stream bug, support multiple streams. 2.0.133. 554 * v2.0, 2015-03-06, for [#322](https://github.com/winlinvip/simple-rtmp-server/issues/322), fix http-flv stream bug, support multiple streams. 2.0.133.
554 * v2.0, 2015-03-06, refine http request parse. 2.0.132. 555 * v2.0, 2015-03-06, refine http request parse. 2.0.132.
555 * v2.0, 2015-03-01, for [#179](https://github.com/winlinvip/simple-rtmp-server/issues/179), revert dvr http api. 2.0.128. 556 * v2.0, 2015-03-01, for [#179](https://github.com/winlinvip/simple-rtmp-server/issues/179), revert dvr http api. 2.0.128.
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 // current release version 31 // current release version
32 #define VERSION_MAJOR 2 32 #define VERSION_MAJOR 2
33 #define VERSION_MINOR 0 33 #define VERSION_MINOR 0
34 -#define VERSION_REVISION 133 34 +#define VERSION_REVISION 134
35 35
36 // server info. 36 // server info.
37 #define RTMP_SIG_SRS_KEY "SRS" 37 #define RTMP_SIG_SRS_KEY "SRS"
@@ -87,6 +87,18 @@ string srs_codec_aac_profile2str(SrsAacProfile aac_profile) @@ -87,6 +87,18 @@ string srs_codec_aac_profile2str(SrsAacProfile aac_profile)
87 } 87 }
88 } 88 }
89 89
  90 +string srs_codec_aac_object2str(SrsAacObjectType aac_object)
  91 +{
  92 + switch (aac_object) {
  93 + case SrsAacObjectTypeAacMain: return "Main";
  94 + case SrsAacObjectTypeHE: return "HE";
  95 + case SrsAacObjectTypeHEV2: return "HEv2";
  96 + case SrsAacObjectTypeAacLC: return "LC";
  97 + case SrsAacObjectTypeAacSSR: return "SSR";
  98 + default: return "Other";
  99 + }
  100 +}
  101 +
90 SrsAacObjectType srs_codec_aac_ts2rtmp(SrsAacProfile profile) 102 SrsAacObjectType srs_codec_aac_ts2rtmp(SrsAacProfile profile)
91 { 103 {
92 switch (profile) { 104 switch (profile) {
@@ -101,6 +113,8 @@ SrsAacProfile srs_codec_aac_rtmp2ts(SrsAacObjectType object_type) @@ -101,6 +113,8 @@ SrsAacProfile srs_codec_aac_rtmp2ts(SrsAacObjectType object_type)
101 { 113 {
102 switch (object_type) { 114 switch (object_type) {
103 case SrsAacObjectTypeAacMain: return SrsAacProfileMain; 115 case SrsAacObjectTypeAacMain: return SrsAacProfileMain;
  116 + case SrsAacObjectTypeHE:
  117 + case SrsAacObjectTypeHEV2:
104 case SrsAacObjectTypeAacLC: return SrsAacProfileLC; 118 case SrsAacObjectTypeAacLC: return SrsAacProfileLC;
105 case SrsAacObjectTypeAacSSR: return SrsAacProfileSSR; 119 case SrsAacObjectTypeAacSSR: return SrsAacProfileSSR;
106 default: return SrsAacProfileReserved; 120 default: return SrsAacProfileReserved;
@@ -404,7 +404,13 @@ enum SrsAacObjectType @@ -404,7 +404,13 @@ enum SrsAacObjectType
404 SrsAacObjectTypeAacMain = 1, 404 SrsAacObjectTypeAacMain = 1,
405 SrsAacObjectTypeAacLC = 2, 405 SrsAacObjectTypeAacLC = 2,
406 SrsAacObjectTypeAacSSR = 3, 406 SrsAacObjectTypeAacSSR = 3,
  407 +
  408 + // AAC HE = LC+SBR
  409 + SrsAacObjectTypeHE = 5,
  410 + // AAC HEv2 = LC+SBR+PS
  411 + SrsAacObjectTypeHEV2 = 29,
407 }; 412 };
  413 +std::string srs_codec_aac_object2str(SrsAacObjectType aac_object);
408 // ts/hls/adts audio header profile to RTMP sequence header object type. 414 // ts/hls/adts audio header profile to RTMP sequence header object type.
409 SrsAacObjectType srs_codec_aac_ts2rtmp(SrsAacProfile profile); 415 SrsAacObjectType srs_codec_aac_ts2rtmp(SrsAacProfile profile);
410 // RTMP sequence header object type to ts/hls/adts audio header profile. 416 // RTMP sequence header object type to ts/hls/adts audio header profile.