正在显示
3 个修改的文件
包含
10 行增加
和
4 行删除
| @@ -1737,12 +1737,13 @@ int SrsSource::on_audio(SrsCommonMessage* shared_audio) | @@ -1737,12 +1737,13 @@ int SrsSource::on_audio(SrsCommonMessage* shared_audio) | ||
| 1737 | 1737 | ||
| 1738 | shared_audio->payload = new char[1024]; | 1738 | shared_audio->payload = new char[1024]; |
| 1739 | out_size = 1022; | 1739 | out_size = 1022; |
| 1740 | - int ret_aac = aec_aac.encode_frame((tc_audio_opt *)_aac_opt, out_data, (uint8_t *)shared_audio->payload + 2 , &out_size); | 1740 | + int ret_aac = aec_aac.encode_frame((tc_audio_opt *)_aac_opt, out_data, (uint8_t *)shared_audio->payload + 2 , &out_size, &(shared_audio->header.timestamp)); |
| 1741 | if (ret_aac >= 0){ | 1741 | if (ret_aac >= 0){ |
| 1742 | if (out_size){ | 1742 | if (out_size){ |
| 1743 | shared_audio->payload[0] = 0xAF; | 1743 | shared_audio->payload[0] = 0xAF; |
| 1744 | shared_audio->payload[1] = 0x01; | 1744 | shared_audio->payload[1] = 0x01; |
| 1745 | shared_audio->size = out_size +2; | 1745 | shared_audio->size = out_size +2; |
| 1746 | + | ||
| 1746 | ret = _on_audio(shared_audio); | 1747 | ret = _on_audio(shared_audio); |
| 1747 | #if 0 | 1748 | #if 0 |
| 1748 | static int max_out_size = 0; | 1749 | static int max_out_size = 0; |
| @@ -130,7 +130,7 @@ static int open_codec_aac(tc_audio_opt* opt) { | @@ -130,7 +130,7 @@ static int open_codec_aac(tc_audio_opt* opt) { | ||
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | 132 | ||
| 133 | -static int encode_frame_aac(tc_audio_opt* opt, uint8_t* inData, uint8_t* inOutData, uint32_t* inOutDataSize) { | 133 | +static int encode_frame_aac(tc_audio_opt* opt, uint8_t* inData, uint8_t* inOutData, uint32_t* inOutDataSize, int64_t * inoutTimeStamp) { |
| 134 | handle_aec_aac_t* s = (handle_aec_aac_t*)opt->handle; | 134 | handle_aec_aac_t* s = (handle_aec_aac_t*)opt->handle; |
| 135 | 135 | ||
| 136 | AACENC_BufDesc in_buf = { 0 }, out_buf = { 0 }; | 136 | AACENC_BufDesc in_buf = { 0 }, out_buf = { 0 }; |
| @@ -179,6 +179,11 @@ static int encode_frame_aac(tc_audio_opt* opt, uint8_t* inData, uint8_t* inOutDa | @@ -179,6 +179,11 @@ static int encode_frame_aac(tc_audio_opt* opt, uint8_t* inData, uint8_t* inOutDa | ||
| 179 | 179 | ||
| 180 | *inOutDataSize = out_args.numOutBytes; | 180 | *inOutDataSize = out_args.numOutBytes; |
| 181 | memcpy(s->buf, inData + 2048 - s->data_len, opt->buffer_size -( 2048 - s->data_len)); | 181 | memcpy(s->buf, inData + 2048 - s->data_len, opt->buffer_size -( 2048 - s->data_len)); |
| 182 | + | ||
| 183 | + //shfit time stamp to the length of s->data_len | ||
| 184 | + //1000ms / 16000 = 0.0625 | ||
| 185 | + *inoutTimeStamp = *inoutTimeStamp - (s->data_len * 0.0625 / 2); | ||
| 186 | + | ||
| 182 | s->data_len = opt->buffer_size - (2048 - s->data_len); | 187 | s->data_len = opt->buffer_size - (2048 - s->data_len); |
| 183 | } | 188 | } |
| 184 | 189 |
| @@ -33,8 +33,8 @@ typedef struct { | @@ -33,8 +33,8 @@ typedef struct { | ||
| 33 | int (*open_codec)(tc_audio_opt* opt); | 33 | int (*open_codec)(tc_audio_opt* opt); |
| 34 | 34 | ||
| 35 | int (*decode_frame)(tc_audio_opt* opt, uint8_t* inData, uint32_t inDataSize, uint8_t* outData); | 35 | int (*decode_frame)(tc_audio_opt* opt, uint8_t* inData, uint32_t inDataSize, uint8_t* outData); |
| 36 | - | ||
| 37 | - int (*encode_frame)(tc_audio_opt* opt, uint8_t* inData, uint8_t* inoutData, uint32_t* inoutDataSize); | 36 | + //inoutTimeStamp is in ms |
| 37 | + int (*encode_frame)(tc_audio_opt* opt, uint8_t* inData, uint8_t* inoutData, uint32_t* inoutDataSize, int64_t * inoutTimeStamp); | ||
| 38 | 38 | ||
| 39 | int (*close_codec)(tc_audio_opt* opt); | 39 | int (*close_codec)(tc_audio_opt* opt); |
| 40 | 40 |
-
请 注册 或 登录 后发表评论