1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

musx: convert to new channel layout API

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
Anton Khirnov 2019-05-13 11:11:26 +02:00 committed by James Almer
parent c46192de21
commit 6bc5485c07

View File

@ -68,30 +68,30 @@ static int musx_read_header(AVFormatContext *s)
offset = avio_rl32(s->pb); offset = avio_rl32(s->pb);
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX;
st->codecpar->channels = 2; st->codecpar->ch_layout.nb_channels = 2;
st->codecpar->sample_rate = 32000; st->codecpar->sample_rate = 32000;
st->codecpar->block_align = 0x80 * st->codecpar->channels; st->codecpar->block_align = 0x80 * st->codecpar->ch_layout.nb_channels;
} else if (version == 10) { } else if (version == 10) {
type = avio_rl32(s->pb); type = avio_rl32(s->pb);
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
offset = 0x800; offset = 0x800;
switch (type) { switch (type) {
case MKTAG('P', 'S', '3', '_'): case MKTAG('P', 'S', '3', '_'):
st->codecpar->channels = 2; st->codecpar->ch_layout.nb_channels = 2;
st->codecpar->sample_rate = 44100; st->codecpar->sample_rate = 44100;
avio_skip(s->pb, 44); avio_skip(s->pb, 44);
coding = avio_rl32(s->pb); coding = avio_rl32(s->pb);
if (coding == MKTAG('D', 'A', 'T', '4') || if (coding == MKTAG('D', 'A', 'T', '4') ||
coding == MKTAG('D', 'A', 'T', '8')) { coding == MKTAG('D', 'A', 'T', '8')) {
avio_skip(s->pb, 4); avio_skip(s->pb, 4);
st->codecpar->channels = avio_rl32(s->pb); st->codecpar->ch_layout.nb_channels = avio_rl32(s->pb);
if (st->codecpar->channels <= 0 || if (st->codecpar->ch_layout.nb_channels <= 0 ||
st->codecpar->channels > INT_MAX / 0x20) st->codecpar->ch_layout.nb_channels > INT_MAX / 0x20)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
st->codecpar->sample_rate = avio_rl32(s->pb); st->codecpar->sample_rate = avio_rl32(s->pb);
} }
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4;
st->codecpar->block_align = 0x20 * st->codecpar->channels; st->codecpar->block_align = 0x20 * st->codecpar->ch_layout.nb_channels;
break; break;
case MKTAG('W', 'I', 'I', '_'): case MKTAG('W', 'I', 'I', '_'):
avio_skip(s->pb, 44); avio_skip(s->pb, 44);
@ -103,30 +103,30 @@ static int musx_read_header(AVFormatContext *s)
} }
avio_skip(s->pb, 4); avio_skip(s->pb, 4);
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4;
st->codecpar->channels = avio_rl32(s->pb); st->codecpar->ch_layout.nb_channels = avio_rl32(s->pb);
if (st->codecpar->channels <= 0 || if (st->codecpar->ch_layout.nb_channels <= 0 ||
st->codecpar->channels > INT_MAX / 0x20) st->codecpar->ch_layout.nb_channels > INT_MAX / 0x20)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
st->codecpar->sample_rate = avio_rl32(s->pb); st->codecpar->sample_rate = avio_rl32(s->pb);
st->codecpar->block_align = 0x20 * st->codecpar->channels; st->codecpar->block_align = 0x20 * st->codecpar->ch_layout.nb_channels;
break; break;
case MKTAG('X', 'E', '_', '_'): case MKTAG('X', 'E', '_', '_'):
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4;
st->codecpar->channels = 2; st->codecpar->ch_layout.nb_channels = 2;
st->codecpar->sample_rate = 32000; st->codecpar->sample_rate = 32000;
st->codecpar->block_align = 0x20 * st->codecpar->channels; st->codecpar->block_align = 0x20 * st->codecpar->ch_layout.nb_channels;
break; break;
case MKTAG('P', 'S', 'P', '_'): case MKTAG('P', 'S', 'P', '_'):
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX;
st->codecpar->channels = 2; st->codecpar->ch_layout.nb_channels = 2;
st->codecpar->sample_rate = 32768; st->codecpar->sample_rate = 32768;
st->codecpar->block_align = 0x80 * st->codecpar->channels; st->codecpar->block_align = 0x80 * st->codecpar->ch_layout.nb_channels;
break; break;
case MKTAG('P', 'S', '2', '_'): case MKTAG('P', 'S', '2', '_'):
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX;
st->codecpar->channels = 2; st->codecpar->ch_layout.nb_channels = 2;
st->codecpar->sample_rate = 32000; st->codecpar->sample_rate = 32000;
st->codecpar->block_align = 0x80 * st->codecpar->channels; st->codecpar->block_align = 0x80 * st->codecpar->ch_layout.nb_channels;
break; break;
default: default:
avpriv_request_sample(s, "Unsupported type: %X", type); avpriv_request_sample(s, "Unsupported type: %X", type);
@ -136,23 +136,23 @@ static int musx_read_header(AVFormatContext *s)
type = avio_rl32(s->pb); type = avio_rl32(s->pb);
avio_skip(s->pb, 20); avio_skip(s->pb, 20);
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
st->codecpar->channels = 2; st->codecpar->ch_layout.nb_channels = 2;
switch (type) { switch (type) {
case MKTAG('G', 'C', '_', '_'): case MKTAG('G', 'C', '_', '_'):
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4;
st->codecpar->block_align = 0x20 * st->codecpar->channels; st->codecpar->block_align = 0x20 * st->codecpar->ch_layout.nb_channels;
st->codecpar->sample_rate = 32000; st->codecpar->sample_rate = 32000;
offset = avio_rb32(s->pb); offset = avio_rb32(s->pb);
break; break;
case MKTAG('P', 'S', '2', '_'): case MKTAG('P', 'S', '2', '_'):
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX;
st->codecpar->block_align = 0x80 * st->codecpar->channels; st->codecpar->block_align = 0x80 * st->codecpar->ch_layout.nb_channels;
st->codecpar->sample_rate = 32000; st->codecpar->sample_rate = 32000;
offset = avio_rl32(s->pb); offset = avio_rl32(s->pb);
break; break;
case MKTAG('X', 'B', '_', '_'): case MKTAG('X', 'B', '_', '_'):
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4; st->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_DAT4;
st->codecpar->block_align = 0x20 * st->codecpar->channels; st->codecpar->block_align = 0x20 * st->codecpar->ch_layout.nb_channels;
st->codecpar->sample_rate = 44100; st->codecpar->sample_rate = 44100;
offset = avio_rl32(s->pb); offset = avio_rl32(s->pb);
break; break;