mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
for #299, refine audio codec object name
This commit is contained in:
parent
caf69f193d
commit
d612a21bad
9 changed files with 66 additions and 64 deletions
|
@ -536,8 +536,8 @@ int SrsDvrMp4Segmenter::encode_audio(SrsSharedPtrMessage* audio)
|
||||||
uint8_t v = buffer->read_1bytes();
|
uint8_t v = buffer->read_1bytes();
|
||||||
SrsAudioCodecId sound_format = (SrsAudioCodecId)((v >> 4) & 0x0f);
|
SrsAudioCodecId sound_format = (SrsAudioCodecId)((v >> 4) & 0x0f);
|
||||||
SrsAudioSampleRate sound_rate = (SrsAudioSampleRate)((v >> 2) & 0x03);
|
SrsAudioSampleRate sound_rate = (SrsAudioSampleRate)((v >> 2) & 0x03);
|
||||||
SrsAudioSampleSize sound_size = (SrsAudioSampleSize)((v >> 1) & 0x01);
|
SrsAudioSampleBits sound_size = (SrsAudioSampleBits)((v >> 1) & 0x01);
|
||||||
SrsAudioSoundType channels = (SrsAudioSoundType)(v&0x01);
|
SrsAudioChannels channels = (SrsAudioChannels)(v&0x01);
|
||||||
|
|
||||||
uint16_t ct = 0x00;
|
uint16_t ct = 0x00;
|
||||||
if (sound_format == SrsAudioCodecIdAAC) {
|
if (sound_format == SrsAudioCodecIdAAC) {
|
||||||
|
|
|
@ -521,8 +521,8 @@ int SrsRtspConn::write_sequence_header()
|
||||||
SrsAudioCodecConfig* dec = format->acodec;
|
SrsAudioCodecConfig* dec = format->acodec;
|
||||||
|
|
||||||
acodec->sound_format = SrsAudioCodecIdAAC;
|
acodec->sound_format = SrsAudioCodecIdAAC;
|
||||||
acodec->sound_type = (dec->aac_channels == 2)? SrsAudioSoundTypeStereo : SrsAudioSoundTypeMono;
|
acodec->sound_type = (dec->aac_channels == 2)? SrsAudioChannelsStereo : SrsAudioChannelsMono;
|
||||||
acodec->sound_size = SrsAudioSampleSize16bit;
|
acodec->sound_size = SrsAudioSampleBits16bit;
|
||||||
acodec->aac_packet_type = 0;
|
acodec->aac_packet_type = 0;
|
||||||
|
|
||||||
static int srs_aac_srates[] = {
|
static int srs_aac_srates[] = {
|
||||||
|
|
|
@ -106,7 +106,7 @@ SrsStatisticStream::SrsStatisticStream()
|
||||||
has_audio = false;
|
has_audio = false;
|
||||||
acodec = SrsAudioCodecIdReserved1;
|
acodec = SrsAudioCodecIdReserved1;
|
||||||
asample_rate = SrsAudioSampleRateReserved;
|
asample_rate = SrsAudioSampleRateReserved;
|
||||||
asound_type = SrsAudioSoundTypeReserved;
|
asound_type = SrsAudioChannelsReserved;
|
||||||
aac_object = SrsAacObjectTypeReserved;
|
aac_object = SrsAacObjectTypeReserved;
|
||||||
width = 0;
|
width = 0;
|
||||||
height = 0;
|
height = 0;
|
||||||
|
@ -329,7 +329,7 @@ int SrsStatistic::on_video_info(SrsRequest* req,
|
||||||
}
|
}
|
||||||
|
|
||||||
int SrsStatistic::on_audio_info(SrsRequest* req,
|
int SrsStatistic::on_audio_info(SrsRequest* req,
|
||||||
SrsAudioCodecId acodec, SrsAudioSampleRate asample_rate, SrsAudioSoundType asound_type,
|
SrsAudioCodecId acodec, SrsAudioSampleRate asample_rate, SrsAudioChannels asound_type,
|
||||||
SrsAacObjectType aac_object
|
SrsAacObjectType aac_object
|
||||||
) {
|
) {
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
|
@ -92,7 +92,7 @@ public:
|
||||||
bool has_audio;
|
bool has_audio;
|
||||||
SrsAudioCodecId acodec;
|
SrsAudioCodecId acodec;
|
||||||
SrsAudioSampleRate asample_rate;
|
SrsAudioSampleRate asample_rate;
|
||||||
SrsAudioSoundType asound_type;
|
SrsAudioChannels asound_type;
|
||||||
/**
|
/**
|
||||||
* audio specified
|
* audio specified
|
||||||
* audioObjectType, in 1.6.2.1 AudioSpecificConfig, page 33,
|
* audioObjectType, in 1.6.2.1 AudioSpecificConfig, page 33,
|
||||||
|
@ -177,7 +177,7 @@ public:
|
||||||
* when got audio info for stream.
|
* when got audio info for stream.
|
||||||
*/
|
*/
|
||||||
virtual int on_audio_info(SrsRequest* req,
|
virtual int on_audio_info(SrsRequest* req,
|
||||||
SrsAudioCodecId acodec, SrsAudioSampleRate asample_rate, SrsAudioSoundType asound_type,
|
SrsAudioCodecId acodec, SrsAudioSampleRate asample_rate, SrsAudioChannels asound_type,
|
||||||
SrsAacObjectType aac_object
|
SrsAacObjectType aac_object
|
||||||
);
|
);
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -78,7 +78,7 @@ string srs_audio_codec_id2str(SrsAudioCodecId codec)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string srs_codec_audio_samplerate2str(SrsAudioSampleRate v)
|
string srs_audio_sample_rate2str(SrsAudioSampleRate v)
|
||||||
{
|
{
|
||||||
switch (v) {
|
switch (v) {
|
||||||
case SrsAudioSampleRate5512: return "5512";
|
case SrsAudioSampleRate5512: return "5512";
|
||||||
|
@ -215,20 +215,20 @@ int srs_aac_srates[] =
|
||||||
7350, 0, 0, 0
|
7350, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
string srs_audio_samplesize2str(SrsAudioSampleSize v)
|
string srs_audio_sample_bits2str(SrsAudioSampleBits v)
|
||||||
{
|
{
|
||||||
switch (v) {
|
switch (v) {
|
||||||
case SrsAudioSampleSize16bit: return "16bits";
|
case SrsAudioSampleBits16bit: return "16bits";
|
||||||
case SrsAudioSampleSize8bit: return "8bits";
|
case SrsAudioSampleBits8bit: return "8bits";
|
||||||
default: return "Other";
|
default: return "Other";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string srs_audio_channels2str(SrsAudioSoundType v)
|
string srs_audio_channels2str(SrsAudioChannels v)
|
||||||
{
|
{
|
||||||
switch (v) {
|
switch (v) {
|
||||||
case SrsAudioSoundTypeStereo: return "Stereo";
|
case SrsAudioChannelsStereo: return "Stereo";
|
||||||
case SrsAudioSoundTypeMono: return "Mono";
|
case SrsAudioChannelsMono: return "Mono";
|
||||||
default: return "Other";
|
default: return "Other";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -363,8 +363,8 @@ SrsAudioCodecConfig::SrsAudioCodecConfig()
|
||||||
{
|
{
|
||||||
id = SrsAudioCodecIdForbidden;
|
id = SrsAudioCodecIdForbidden;
|
||||||
sound_rate = SrsAudioSampleRateForbidden;
|
sound_rate = SrsAudioSampleRateForbidden;
|
||||||
sound_size = SrsAudioSampleSizeForbidden;
|
sound_size = SrsAudioSampleBitsForbidden;
|
||||||
sound_type = SrsAudioSoundTypeForbidden;
|
sound_type = SrsAudioChannelsForbidden;
|
||||||
|
|
||||||
audio_data_rate = 0;
|
audio_data_rate = 0;
|
||||||
|
|
||||||
|
@ -1270,9 +1270,9 @@ int SrsFormat::audio_aac_demux(SrsBuffer* stream, int64_t timestamp)
|
||||||
SrsAudioCodecId codec_id = (SrsAudioCodecId)sound_format;
|
SrsAudioCodecId codec_id = (SrsAudioCodecId)sound_format;
|
||||||
acodec->id = codec_id;
|
acodec->id = codec_id;
|
||||||
|
|
||||||
acodec->sound_type = (SrsAudioSoundType)sound_type;
|
acodec->sound_type = (SrsAudioChannels)sound_type;
|
||||||
acodec->sound_rate = (SrsAudioSampleRate)sound_rate;
|
acodec->sound_rate = (SrsAudioSampleRate)sound_rate;
|
||||||
acodec->sound_size = (SrsAudioSampleSize)sound_size;
|
acodec->sound_size = (SrsAudioSampleBits)sound_size;
|
||||||
|
|
||||||
// we support h.264+mp3 for hls.
|
// we support h.264+mp3 for hls.
|
||||||
if (codec_id == SrsAudioCodecIdMP3) {
|
if (codec_id == SrsAudioCodecIdMP3) {
|
||||||
|
|
|
@ -199,7 +199,7 @@ enum SrsAudioSampleRate
|
||||||
SrsAudioSampleRate22050 = 2,
|
SrsAudioSampleRate22050 = 2,
|
||||||
SrsAudioSampleRate44100 = 3,
|
SrsAudioSampleRate44100 = 3,
|
||||||
};
|
};
|
||||||
std::string srs_codec_audio_samplerate2str(SrsAudioSampleRate v);
|
std::string srs_audio_sample_rate2str(SrsAudioSampleRate v);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The frame type, for example, audio, video or data.
|
* The frame type, for example, audio, video or data.
|
||||||
|
@ -291,40 +291,42 @@ extern int srs_aac_srates[];
|
||||||
#define SrsMaxNbSamples 256
|
#define SrsMaxNbSamples 256
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the FLV/RTMP supported audio sample size.
|
* The audio sample size in bits.
|
||||||
* Size of each audio sample. This parameter only pertains to
|
* @doc video_file_format_spec_v10_1.pdf, page 76, E.4.2 Audio Tags
|
||||||
* uncompressed formats. Compressed formats always decode
|
* Size of each audio sample. This parameter only pertains to
|
||||||
* to 16 bits internally.
|
* uncompressed formats. Compressed formats always decode
|
||||||
* 0 = 8-bit samples
|
* to 16 bits internally.
|
||||||
* 1 = 16-bit samples
|
* 0 = 8-bit samples
|
||||||
*/
|
* 1 = 16-bit samples
|
||||||
enum SrsAudioSampleSize
|
*/
|
||||||
|
enum SrsAudioSampleBits
|
||||||
{
|
{
|
||||||
// set to the max value to reserved, for array map.
|
// set to the max value to reserved, for array map.
|
||||||
SrsAudioSampleSizeReserved = 2,
|
SrsAudioSampleBitsReserved = 2,
|
||||||
SrsAudioSampleSizeForbidden = 2,
|
SrsAudioSampleBitsForbidden = 2,
|
||||||
|
|
||||||
SrsAudioSampleSize8bit = 0,
|
SrsAudioSampleBits8bit = 0,
|
||||||
SrsAudioSampleSize16bit = 1,
|
SrsAudioSampleBits16bit = 1,
|
||||||
};
|
};
|
||||||
std::string srs_audio_samplesize2str(SrsAudioSampleSize v);
|
std::string srs_audio_sample_bits2str(SrsAudioSampleBits v);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the FLV/RTMP supported audio sound type/channel.
|
* The audio channels.
|
||||||
* Mono or stereo sound
|
* @doc video_file_format_spec_v10_1.pdf, page 77, E.4.2 Audio Tags
|
||||||
* 0 = Mono sound
|
* Mono or stereo sound
|
||||||
* 1 = Stereo sound
|
* 0 = Mono sound
|
||||||
*/
|
* 1 = Stereo sound
|
||||||
enum SrsAudioSoundType
|
*/
|
||||||
|
enum SrsAudioChannels
|
||||||
{
|
{
|
||||||
// set to the max value to reserved, for array map.
|
// set to the max value to reserved, for array map.
|
||||||
SrsAudioSoundTypeReserved = 2,
|
SrsAudioChannelsReserved = 2,
|
||||||
SrsAudioSoundTypeForbidden = 2,
|
SrsAudioChannelsForbidden = 2,
|
||||||
|
|
||||||
SrsAudioSoundTypeMono = 0,
|
SrsAudioChannelsMono = 0,
|
||||||
SrsAudioSoundTypeStereo = 1,
|
SrsAudioChannelsStereo = 1,
|
||||||
};
|
};
|
||||||
std::string srs_audio_channels2str(SrsAudioSoundType v);
|
std::string srs_audio_channels2str(SrsAudioChannels v);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Table 7-1 - NAL unit type codes, syntax element categories, and NAL unit type classes
|
* Table 7-1 - NAL unit type codes, syntax element categories, and NAL unit type classes
|
||||||
|
@ -518,8 +520,8 @@ public:
|
||||||
SrsAudioCodecId id;
|
SrsAudioCodecId id;
|
||||||
// audio aac specified.
|
// audio aac specified.
|
||||||
SrsAudioSampleRate sound_rate;
|
SrsAudioSampleRate sound_rate;
|
||||||
SrsAudioSampleSize sound_size;
|
SrsAudioSampleBits sound_size;
|
||||||
SrsAudioSoundType sound_type;
|
SrsAudioChannels sound_type;
|
||||||
int audio_data_rate; // in bps
|
int audio_data_rate; // in bps
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3861,8 +3861,8 @@ SrsMp4Decoder::SrsMp4Decoder()
|
||||||
pasc = pavcc = NULL;
|
pasc = pavcc = NULL;
|
||||||
asc_written = avcc_written = false;
|
asc_written = avcc_written = false;
|
||||||
sample_rate = SrsAudioSampleRateForbidden;
|
sample_rate = SrsAudioSampleRateForbidden;
|
||||||
sound_bits = SrsAudioSampleSizeForbidden;
|
sound_bits = SrsAudioSampleBitsForbidden;
|
||||||
channels = SrsAudioSoundTypeForbidden;
|
channels = SrsAudioChannelsForbidden;
|
||||||
samples = new SrsMp4SampleManager();
|
samples = new SrsMp4SampleManager();
|
||||||
current_index = 0;
|
current_index = 0;
|
||||||
current_offset = 0;
|
current_offset = 0;
|
||||||
|
@ -4062,15 +4062,15 @@ int SrsMp4Decoder::parse_moov(SrsMp4MovieBox* moov)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mp4a->samplesize == 16) {
|
if (mp4a->samplesize == 16) {
|
||||||
sound_bits = SrsAudioSampleSize16bit;
|
sound_bits = SrsAudioSampleBits16bit;
|
||||||
} else {
|
} else {
|
||||||
sound_bits = SrsAudioSampleSize8bit;
|
sound_bits = SrsAudioSampleBits8bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mp4a->channelcount == 2) {
|
if (mp4a->channelcount == 2) {
|
||||||
channels = SrsAudioSoundTypeStereo;
|
channels = SrsAudioChannelsStereo;
|
||||||
} else {
|
} else {
|
||||||
channels = SrsAudioSoundTypeMono;
|
channels = SrsAudioChannelsMono;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4117,8 +4117,8 @@ int SrsMp4Decoder::parse_moov(SrsMp4MovieBox* moov)
|
||||||
ss << ", soun=" << moov->nb_soun_tracks() << "("
|
ss << ", soun=" << moov->nb_soun_tracks() << "("
|
||||||
<< srs_audio_codec_id2str(acodec) << "," << nb_asc << "BSH"
|
<< srs_audio_codec_id2str(acodec) << "," << nb_asc << "BSH"
|
||||||
<< "," << srs_audio_channels2str(channels)
|
<< "," << srs_audio_channels2str(channels)
|
||||||
<< "," << srs_audio_samplesize2str(sound_bits)
|
<< "," << srs_audio_sample_bits2str(sound_bits)
|
||||||
<< "," << srs_codec_audio_samplerate2str(sample_rate)
|
<< "," << srs_audio_sample_rate2str(sample_rate)
|
||||||
<< ")";
|
<< ")";
|
||||||
|
|
||||||
srs_trace("MP4 moov %s", ss.str().c_str());
|
srs_trace("MP4 moov %s", ss.str().c_str());
|
||||||
|
@ -4233,8 +4233,8 @@ SrsMp4Encoder::SrsMp4Encoder()
|
||||||
|
|
||||||
acodec = SrsAudioCodecIdForbidden;
|
acodec = SrsAudioCodecIdForbidden;
|
||||||
sample_rate = SrsAudioSampleRateForbidden;
|
sample_rate = SrsAudioSampleRateForbidden;
|
||||||
sound_bits = SrsAudioSampleSizeForbidden;
|
sound_bits = SrsAudioSampleBitsForbidden;
|
||||||
channels = SrsAudioSoundTypeForbidden;
|
channels = SrsAudioChannelsForbidden;
|
||||||
vcodec = SrsVideoCodecIdForbidden;
|
vcodec = SrsVideoCodecIdForbidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4494,12 +4494,12 @@ int SrsMp4Encoder::flush()
|
||||||
|
|
||||||
SrsMp4AudioSampleEntry* mp4a = new SrsMp4AudioSampleEntry();
|
SrsMp4AudioSampleEntry* mp4a = new SrsMp4AudioSampleEntry();
|
||||||
mp4a->samplerate = uint32_t(srs_flv_srates[sample_rate]) << 16;
|
mp4a->samplerate = uint32_t(srs_flv_srates[sample_rate]) << 16;
|
||||||
if (sound_bits == SrsAudioSampleSize16bit) {
|
if (sound_bits == SrsAudioSampleBits16bit) {
|
||||||
mp4a->samplesize = 16;
|
mp4a->samplesize = 16;
|
||||||
} else {
|
} else {
|
||||||
mp4a->samplesize = 8;
|
mp4a->samplesize = 8;
|
||||||
}
|
}
|
||||||
if (channels == SrsAudioSoundTypeStereo) {
|
if (channels == SrsAudioChannelsStereo) {
|
||||||
mp4a->channelcount = 2;
|
mp4a->channelcount = 2;
|
||||||
} else {
|
} else {
|
||||||
mp4a->channelcount = 1;
|
mp4a->channelcount = 1;
|
||||||
|
|
|
@ -1579,9 +1579,9 @@ public:
|
||||||
// The audio sample rate.
|
// The audio sample rate.
|
||||||
SrsAudioSampleRate sample_rate;
|
SrsAudioSampleRate sample_rate;
|
||||||
// The audio sound bits.
|
// The audio sound bits.
|
||||||
SrsAudioSampleSize sound_bits;
|
SrsAudioSampleBits sound_bits;
|
||||||
// The audio sound type.
|
// The audio sound type.
|
||||||
SrsAudioSoundType channels;
|
SrsAudioChannels channels;
|
||||||
private:
|
private:
|
||||||
// For AAC, the asc in esds box.
|
// For AAC, the asc in esds box.
|
||||||
int nb_asc;
|
int nb_asc;
|
||||||
|
@ -1652,9 +1652,9 @@ public:
|
||||||
// The audio sample rate.
|
// The audio sample rate.
|
||||||
SrsAudioSampleRate sample_rate;
|
SrsAudioSampleRate sample_rate;
|
||||||
// The audio sound bits.
|
// The audio sound bits.
|
||||||
SrsAudioSampleSize sound_bits;
|
SrsAudioSampleBits sound_bits;
|
||||||
// The audio sound type.
|
// The audio sound type.
|
||||||
SrsAudioSoundType channels;
|
SrsAudioChannels channels;
|
||||||
private:
|
private:
|
||||||
// For AAC, the asc in esds box.
|
// For AAC, the asc in esds box.
|
||||||
int nb_asc;
|
int nb_asc;
|
||||||
|
|
|
@ -536,9 +536,9 @@ typedef struct {
|
||||||
|
|
||||||
// The audio sample rate, it's SrsAudioSampleRate.
|
// The audio sample rate, it's SrsAudioSampleRate.
|
||||||
uint8_t sample_rate;
|
uint8_t sample_rate;
|
||||||
// The audio sound bits, it's SrsAudioSampleSize.
|
// The audio sound bits, it's SrsAudioSampleBits.
|
||||||
uint8_t sound_bits;
|
uint8_t sound_bits;
|
||||||
// The audio sound type, it's SrsAudioSoundType.
|
// The audio sound type, it's SrsAudioChannels.
|
||||||
uint8_t channels;
|
uint8_t channels;
|
||||||
|
|
||||||
// The size of sample payload in bytes.
|
// The size of sample payload in bytes.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue