mirror of https://github.com/mpv-player/mpv
ad_libdca: fix assert failure on -channels >6
The decoder had an assert from back when max channels was 6, causing a crash if the user specified -channels 7 or -channels 8. Change the decoder to behave as if -channels 6 had been specified in that case instead.
This commit is contained in:
parent
4de0369e8d
commit
4c92247437
|
@ -284,7 +284,10 @@ static int preinit(sh_audio_t *sh)
|
|||
struct MPOpts *opts = sh->opts;
|
||||
|
||||
/* 256 = samples per block, 16 = max number of blocks */
|
||||
sh->audio_out_minsize = opts->audio_output_channels * sizeof(int16_t) * 256 * 16;
|
||||
int channels = opts->audio_output_channels;
|
||||
if (channels > 6)
|
||||
channels = 6;
|
||||
sh->audio_out_minsize = channels * sizeof(int16_t) * 256 * 16;
|
||||
sh->audio_in_minsize = DTSBUFFER_SIZE;
|
||||
sh->samplesize=2;
|
||||
|
||||
|
@ -293,6 +296,7 @@ static int preinit(sh_audio_t *sh)
|
|||
|
||||
static int init(sh_audio_t *sh)
|
||||
{
|
||||
struct MPOpts *opts = sh->opts;
|
||||
dts_state_t *s;
|
||||
int flags;
|
||||
int decoded_bytes;
|
||||
|
@ -311,8 +315,11 @@ static int init(sh_audio_t *sh)
|
|||
}
|
||||
channels_info(flags);
|
||||
|
||||
assert(opts->audio_output_channels >= 1 && opts->audio_output_channels <= 6);
|
||||
sh->channels = opts->audio_output_channels;
|
||||
int channels = opts->audio_output_channels;
|
||||
if (channels > 6)
|
||||
channels = 6;
|
||||
assert(channels >= 1 && channels <= 6);
|
||||
sh->channels = channels;
|
||||
|
||||
decoded_bytes = decode_audio(sh, sh->a_buffer, 1, sh->a_buffer_size);
|
||||
if(decoded_bytes > 0)
|
||||
|
|
Loading…
Reference in New Issue