mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
Check that channel layout is compatible with number of channels for
output audio stream. Originally committed as revision 18621 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
dc1ed61432
commit
be233a5691
2
ffmpeg.c
2
ffmpeg.c
@ -3212,6 +3212,8 @@ static void new_audio_stream(AVFormatContext *oc)
|
|||||||
audio_enc->channels = audio_channels;
|
audio_enc->channels = audio_channels;
|
||||||
audio_enc->sample_fmt = audio_sample_fmt;
|
audio_enc->sample_fmt = audio_sample_fmt;
|
||||||
audio_enc->channel_layout = channel_layout;
|
audio_enc->channel_layout = channel_layout;
|
||||||
|
if (avcodec_channel_layout_num_channels(channel_layout) != audio_channels)
|
||||||
|
audio_enc->channel_layout = 0;
|
||||||
|
|
||||||
if(codec && codec->sample_fmts){
|
if(codec && codec->sample_fmts){
|
||||||
const enum SampleFormat *p= codec->sample_fmts;
|
const enum SampleFormat *p= codec->sample_fmts;
|
||||||
|
@ -153,6 +153,15 @@ void avcodec_get_channel_layout_string(char *buf, int buf_size, int nb_channels,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int avcodec_channel_layout_num_channels(int64_t channel_layout)
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
uint64_t x = channel_layout;
|
||||||
|
for (count = 0; x; count++)
|
||||||
|
x &= x-1; // unset lowest set bit
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
struct AVAudioConvert {
|
struct AVAudioConvert {
|
||||||
int in_channels, out_channels;
|
int in_channels, out_channels;
|
||||||
int fmt_pair;
|
int fmt_pair;
|
||||||
|
@ -73,6 +73,10 @@ void avcodec_get_channel_layout_string(char *buf, int buf_size, int nb_channels,
|
|||||||
*/
|
*/
|
||||||
int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name);
|
int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the number of channels in the channel layout.
|
||||||
|
*/
|
||||||
|
int avcodec_channel_layout_num_channels(int64_t channel_layout);
|
||||||
|
|
||||||
struct AVAudioConvert;
|
struct AVAudioConvert;
|
||||||
typedef struct AVAudioConvert AVAudioConvert;
|
typedef struct AVAudioConvert AVAudioConvert;
|
||||||
|
Loading…
Reference in New Issue
Block a user