mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Parse Opus for tools
This commit is contained in:
parent
e77b570636
commit
f1b1f78c4e
3 changed files with 42 additions and 4 deletions
|
@ -89,6 +89,11 @@ string srs_audio_sample_rate2str(SrsAudioSampleRate v)
|
||||||
case SrsAudioSampleRate11025: return "11025";
|
case SrsAudioSampleRate11025: return "11025";
|
||||||
case SrsAudioSampleRate22050: return "22050";
|
case SrsAudioSampleRate22050: return "22050";
|
||||||
case SrsAudioSampleRate44100: return "44100";
|
case SrsAudioSampleRate44100: return "44100";
|
||||||
|
case SrsAudioSampleRateNB8kHz: return "NB8kHz";
|
||||||
|
case SrsAudioSampleRateMB12kHz: return "MB12kHz";
|
||||||
|
case SrsAudioSampleRateWB16kHz: return "WB16kHz";
|
||||||
|
case SrsAudioSampleRateSWB24kHz: return "SWB24kHz";
|
||||||
|
case SrsAudioSampleRateFB48kHz: return "FB48kHz";
|
||||||
default: return "Other";
|
default: return "Other";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -193,13 +193,23 @@ enum SrsAudioAacFrameTrait
|
||||||
enum SrsAudioSampleRate
|
enum SrsAudioSampleRate
|
||||||
{
|
{
|
||||||
// set to the max value to reserved, for array map.
|
// set to the max value to reserved, for array map.
|
||||||
SrsAudioSampleRateReserved = 4,
|
SrsAudioSampleRateReserved = 0xff,
|
||||||
SrsAudioSampleRateForbidden = 4,
|
SrsAudioSampleRateForbidden = 0xff,
|
||||||
|
|
||||||
|
// For FLV, only support 5, 11, 22, 44KHz sampling rate.
|
||||||
SrsAudioSampleRate5512 = 0,
|
SrsAudioSampleRate5512 = 0,
|
||||||
SrsAudioSampleRate11025 = 1,
|
SrsAudioSampleRate11025 = 1,
|
||||||
SrsAudioSampleRate22050 = 2,
|
SrsAudioSampleRate22050 = 2,
|
||||||
SrsAudioSampleRate44100 = 3,
|
SrsAudioSampleRate44100 = 3,
|
||||||
|
|
||||||
|
// For Opus, support 8, 12, 16, 24, 48KHz
|
||||||
|
// We will write a UINT8 sampling rate after FLV audio tag header.
|
||||||
|
// @doc https://tools.ietf.org/html/rfc6716#section-2
|
||||||
|
SrsAudioSampleRateNB8kHz = 8, // NB (narrowband)
|
||||||
|
SrsAudioSampleRateMB12kHz = 12, // MB (medium-band)
|
||||||
|
SrsAudioSampleRateWB16kHz = 16, // WB (wideband)
|
||||||
|
SrsAudioSampleRateSWB24kHz = 24, // SWB (super-wideband)
|
||||||
|
SrsAudioSampleRateFB48kHz = 48, // FB (fullband)
|
||||||
};
|
};
|
||||||
std::string srs_audio_sample_rate2str(SrsAudioSampleRate v);
|
std::string srs_audio_sample_rate2str(SrsAudioSampleRate v);
|
||||||
|
|
||||||
|
|
|
@ -2354,7 +2354,7 @@ char srs_utils_flv_audio_sound_format(char* data, int size)
|
||||||
|
|
||||||
uint8_t sound_format = data[0];
|
uint8_t sound_format = data[0];
|
||||||
sound_format = (sound_format >> 4) & 0x0f;
|
sound_format = (sound_format >> 4) & 0x0f;
|
||||||
if (sound_format > 15 || sound_format == 12 || sound_format == 13) {
|
if (sound_format > 15 || sound_format == 12) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2363,13 +2363,19 @@ char srs_utils_flv_audio_sound_format(char* data, int size)
|
||||||
|
|
||||||
char srs_utils_flv_audio_sound_rate(char* data, int size)
|
char srs_utils_flv_audio_sound_rate(char* data, int size)
|
||||||
{
|
{
|
||||||
if (size < 1) {
|
if (size < 2) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t sound_rate = data[0];
|
uint8_t sound_rate = data[0];
|
||||||
sound_rate = (sound_rate >> 2) & 0x03;
|
sound_rate = (sound_rate >> 2) & 0x03;
|
||||||
|
|
||||||
|
// For Opus, the first UINT8 is sampling rate.
|
||||||
|
uint8_t sound_format = (data[0] >> 4) & 0x0f;
|
||||||
|
if (sound_format == 13) {
|
||||||
|
sound_rate = data[1];
|
||||||
|
}
|
||||||
|
|
||||||
return sound_rate;
|
return sound_rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2519,6 +2525,7 @@ const char* srs_human_flv_audio_sound_format2string(char sound_format)
|
||||||
static const char* aac = "AAC";
|
static const char* aac = "AAC";
|
||||||
static const char* speex = "Speex";
|
static const char* speex = "Speex";
|
||||||
static const char* mp3_8khz = "MP3KHz8";
|
static const char* mp3_8khz = "MP3KHz8";
|
||||||
|
static const char* opus = "Opus";
|
||||||
static const char* device_specific = "DeviceSpecific";
|
static const char* device_specific = "DeviceSpecific";
|
||||||
static const char* unknown = "Unknown";
|
static const char* unknown = "Unknown";
|
||||||
|
|
||||||
|
@ -2535,6 +2542,7 @@ const char* srs_human_flv_audio_sound_format2string(char sound_format)
|
||||||
case 9: return reserved;
|
case 9: return reserved;
|
||||||
case 10: return aac;
|
case 10: return aac;
|
||||||
case 11: return speex;
|
case 11: return speex;
|
||||||
|
case 13: return opus;
|
||||||
case 14: return mp3_8khz;
|
case 14: return mp3_8khz;
|
||||||
case 15: return device_specific;
|
case 15: return device_specific;
|
||||||
default: return unknown;
|
default: return unknown;
|
||||||
|
@ -2551,11 +2559,26 @@ const char* srs_human_flv_audio_sound_rate2string(char sound_rate)
|
||||||
static const char* khz_44 = "44KHz";
|
static const char* khz_44 = "44KHz";
|
||||||
static const char* unknown = "Unknown";
|
static const char* unknown = "Unknown";
|
||||||
|
|
||||||
|
// For Opus, support 8, 12, 16, 24, 48KHz
|
||||||
|
// We will write a UINT8 sampling rate after FLV audio tag header.
|
||||||
|
// @doc https://tools.ietf.org/html/rfc6716#section-2
|
||||||
|
static const char* NB8kHz = "NB8kHz";
|
||||||
|
static const char* MB12kHz = "MB12kHz";
|
||||||
|
static const char* WB16kHz = "WB16kHz";
|
||||||
|
static const char* SWB24kHz = "SWB24kHz";
|
||||||
|
static const char* FB48kHz = "FB48kHz";
|
||||||
|
|
||||||
switch (sound_rate) {
|
switch (sound_rate) {
|
||||||
case 0: return khz_5_5;
|
case 0: return khz_5_5;
|
||||||
case 1: return khz_11;
|
case 1: return khz_11;
|
||||||
case 2: return khz_22;
|
case 2: return khz_22;
|
||||||
case 3: return khz_44;
|
case 3: return khz_44;
|
||||||
|
// For Opus, support 8, 12, 16, 24, 48KHz
|
||||||
|
case 8: return NB8kHz;
|
||||||
|
case 12: return MB12kHz;
|
||||||
|
case 16: return WB16kHz;
|
||||||
|
case 24: return SWB24kHz;
|
||||||
|
case 48: return FB48kHz;
|
||||||
default: return unknown;
|
default: return unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue