From 4a5323b0549f5e9979b7f64cf62de8eba2899c4a Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 18 Dec 2019 20:27:48 +0800 Subject: [PATCH] Improve coverage for RAW AVC protocol. --- trunk/src/utest/srs_utest_avc.cpp | 122 ++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/trunk/src/utest/srs_utest_avc.cpp b/trunk/src/utest/srs_utest_avc.cpp index 503c2e4d3..b9c1d1851 100644 --- a/trunk/src/utest/srs_utest_avc.cpp +++ b/trunk/src/utest/srs_utest_avc.cpp @@ -449,3 +449,125 @@ VOID TEST(SrsAVCTest, AACMuxSequenceHeader) } } +VOID TEST(SrsAVCTest, AACMuxToFLV) +{ + srs_error_t err; + + // For MP3 frame. + if (true) { + SrsRawAacStream h; + string frame("Hello"); SrsRawAacStreamCodec codec; + char* flv = NULL; int nb_flv = 0; + codec.sound_format = SrsAudioCodecIdMP3; + codec.sound_rate = 0; codec.sound_size = 1; codec.sound_type = 1; + codec.aac_packet_type = 4; + HELPER_ASSERT_SUCCESS(h.mux_aac2flv((char*)frame.data(), frame.length(), &codec, 0, &flv, &nb_flv)); + EXPECT_EQ(6, nb_flv); + EXPECT_EQ(0x23, (uint8_t)flv[0]); + EXPECT_STREQ("Hello", HELPER_ARR2STR(flv+1,5).c_str()); + srs_freep(flv); + } + + // For Opus frame. + if (true) { + SrsRawAacStream h; + string frame("Hello"); SrsRawAacStreamCodec codec; + char* flv = NULL; int nb_flv = 0; + codec.sound_format = SrsAudioCodecIdOpus; + codec.sound_rate = 0; codec.sound_size = 1; codec.sound_type = 1; + codec.aac_packet_type = 4; + HELPER_ASSERT_SUCCESS(h.mux_aac2flv((char*)frame.data(), frame.length(), &codec, 0, &flv, &nb_flv)); + EXPECT_EQ(6, nb_flv); + EXPECT_EQ(0xd3, (uint8_t)flv[0]); + EXPECT_STREQ("Hello", HELPER_ARR2STR(flv+1,5).c_str()); + srs_freep(flv); + } + + // For Speex frame. + if (true) { + SrsRawAacStream h; + string frame("Hello"); SrsRawAacStreamCodec codec; + char* flv = NULL; int nb_flv = 0; + codec.sound_format = SrsAudioCodecIdSpeex; + codec.sound_rate = 0; codec.sound_size = 1; codec.sound_type = 1; + codec.aac_packet_type = 4; + HELPER_ASSERT_SUCCESS(h.mux_aac2flv((char*)frame.data(), frame.length(), &codec, 0, &flv, &nb_flv)); + EXPECT_EQ(6, nb_flv); + EXPECT_EQ(0xb3, (uint8_t)flv[0]); + EXPECT_STREQ("Hello", HELPER_ARR2STR(flv+1,5).c_str()); + srs_freep(flv); + } + + // For AAC frame. + if (true) { + SrsRawAacStream h; + string frame("Hello"); SrsRawAacStreamCodec codec; + char* flv = NULL; int nb_flv = 0; + codec.sound_format = SrsAudioCodecIdAAC; + codec.sound_rate = 0; codec.sound_size = 1; codec.sound_type = 1; + codec.aac_packet_type = 4; + HELPER_ASSERT_SUCCESS(h.mux_aac2flv((char*)frame.data(), frame.length(), &codec, 0, &flv, &nb_flv)); + EXPECT_EQ(7, nb_flv); + EXPECT_EQ(0xa3, (uint8_t)flv[0]); + EXPECT_EQ(0x04, (uint8_t)flv[1]); + EXPECT_STREQ("Hello", HELPER_ARR2STR(flv+2,5).c_str()); + srs_freep(flv); + } + if (true) { + SrsRawAacStream h; + string frame("Hello"); SrsRawAacStreamCodec codec; + char* flv = NULL; int nb_flv = 0; + codec.sound_format = SrsAudioCodecIdAAC; + codec.sound_rate = 1; codec.sound_size = 1; codec.sound_type = 0; + codec.aac_packet_type = 4; + HELPER_ASSERT_SUCCESS(h.mux_aac2flv((char*)frame.data(), frame.length(), &codec, 0, &flv, &nb_flv)); + EXPECT_EQ(7, nb_flv); + EXPECT_EQ(0xa6, (uint8_t)flv[0]); + EXPECT_EQ(0x04, (uint8_t)flv[1]); + EXPECT_STREQ("Hello", HELPER_ARR2STR(flv+2,5).c_str()); + srs_freep(flv); + } + if (true) { + SrsRawAacStream h; + string frame("Hello"); SrsRawAacStreamCodec codec; + char* flv = NULL; int nb_flv = 0; + codec.sound_format = SrsAudioCodecIdAAC; + codec.sound_rate = 1; codec.sound_size = 0; codec.sound_type = 1; + codec.aac_packet_type = 4; + HELPER_ASSERT_SUCCESS(h.mux_aac2flv((char*)frame.data(), frame.length(), &codec, 0, &flv, &nb_flv)); + EXPECT_EQ(7, nb_flv); + EXPECT_EQ(0xa5, (uint8_t)flv[0]); + EXPECT_EQ(0x04, (uint8_t)flv[1]); + EXPECT_STREQ("Hello", HELPER_ARR2STR(flv+2,5).c_str()); + srs_freep(flv); + } + if (true) { + SrsRawAacStream h; + string frame("Hello"); SrsRawAacStreamCodec codec; + char* flv = NULL; int nb_flv = 0; + codec.sound_format = SrsAudioCodecIdAAC; + codec.sound_rate = 1; codec.sound_size = 1; codec.sound_type = 1; + codec.aac_packet_type = 4; + HELPER_ASSERT_SUCCESS(h.mux_aac2flv((char*)frame.data(), frame.length(), &codec, 0, &flv, &nb_flv)); + EXPECT_EQ(7, nb_flv); + EXPECT_EQ(0xa7, (uint8_t)flv[0]); + EXPECT_EQ(0x04, (uint8_t)flv[1]); + EXPECT_STREQ("Hello", HELPER_ARR2STR(flv+2,5).c_str()); + srs_freep(flv); + } + if (true) { + SrsRawAacStream h; + string frame("Hello"); SrsRawAacStreamCodec codec; + char* flv = NULL; int nb_flv = 0; + codec.sound_format = SrsAudioCodecIdAAC; + codec.sound_rate = 3; codec.sound_size = 1; codec.sound_type = 1; + codec.aac_packet_type = 4; + HELPER_ASSERT_SUCCESS(h.mux_aac2flv((char*)frame.data(), frame.length(), &codec, 0, &flv, &nb_flv)); + EXPECT_EQ(7, nb_flv); + EXPECT_EQ(0xaf, (uint8_t)flv[0]); + EXPECT_EQ(0x04, (uint8_t)flv[1]); + EXPECT_STREQ("Hello", HELPER_ARR2STR(flv+2,5).c_str()); + srs_freep(flv); + } +} +