diff --git a/libavformat/oma.h b/libavformat/oma.h index 85d5932f1d..1a8e16f6d6 100644 --- a/libavformat/oma.h +++ b/libavformat/oma.h @@ -23,6 +23,8 @@ #include +#include "libavutil/channel_layout.h" + #include "internal.h" #define EA3_HEADER_SIZE 96 diff --git a/libavformat/omadec.c b/libavformat/omadec.c index 4c418a5ff2..066b2d85bd 100644 --- a/libavformat/omadec.c +++ b/libavformat/omadec.c @@ -60,19 +60,16 @@ static const uint64_t leaf_table[] = { }; /** map ATRAC-X channel id to internal channel layout */ -static const uint64_t oma_chid_to_native_layout[7] = { - AV_CH_LAYOUT_MONO, - AV_CH_LAYOUT_STEREO, - AV_CH_LAYOUT_SURROUND, - AV_CH_LAYOUT_4POINT0, - AV_CH_LAYOUT_5POINT1_BACK, - AV_CH_LAYOUT_6POINT1_BACK, - AV_CH_LAYOUT_7POINT1 +static const AVChannelLayout oma_chid_to_native_layout[7] = { + AV_CHANNEL_LAYOUT_MONO, + AV_CHANNEL_LAYOUT_STEREO, + AV_CHANNEL_LAYOUT_SURROUND, + AV_CHANNEL_LAYOUT_4POINT0, + AV_CHANNEL_LAYOUT_5POINT1_BACK, + AV_CHANNEL_LAYOUT_6POINT1_BACK, + AV_CHANNEL_LAYOUT_7POINT1 }; -/** map ATRAC-X channel id to total number of channels */ -static const int oma_chid_to_num_channels[7] = { 1, 2, 3, 4, 6, 7, 8 }; - typedef struct OMAContext { uint64_t content_start; int encrypted; @@ -474,8 +471,7 @@ static int oma_read_header(AVFormatContext *s) /* get stereo coding mode, 1 for joint-stereo */ jsflag = (codec_params >> 17) & 1; - st->codecpar->channels = 2; - st->codecpar->channel_layout = AV_CH_LAYOUT_STEREO; + st->codecpar->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO; st->codecpar->sample_rate = samplerate; st->codecpar->bit_rate = st->codecpar->sample_rate * framesize / (1024 / 8); @@ -501,8 +497,8 @@ static int oma_read_header(AVFormatContext *s) "Invalid ATRAC-X channel id: %"PRIu32"\n", channel_id); return AVERROR_INVALIDDATA; } - st->codecpar->channel_layout = oma_chid_to_native_layout[channel_id - 1]; - st->codecpar->channels = oma_chid_to_num_channels[channel_id - 1]; + av_channel_layout_copy(&st->codecpar->ch_layout, + &oma_chid_to_native_layout[channel_id - 1]); framesize = ((codec_params & 0x3FF) * 8) + 8; samplerate = ff_oma_srate_tab[(codec_params >> 13) & 7] * 100; if (!samplerate) { @@ -519,8 +515,7 @@ static int oma_read_header(AVFormatContext *s) break; case OMA_CODECID_LPCM: /* PCM 44.1 kHz 16 bit stereo big-endian */ - st->codecpar->channels = 2; - st->codecpar->channel_layout = AV_CH_LAYOUT_STEREO; + st->codecpar->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO; st->codecpar->sample_rate = 44100; framesize = 1024; /* bit rate = sample rate x PCM block align (= 4) x 8 */ @@ -530,16 +525,14 @@ static int oma_read_header(AVFormatContext *s) avpriv_set_pts_info(st, 64, 1, st->codecpar->sample_rate); break; case OMA_CODECID_ATRAC3AL: - st->codecpar->channels = 2; - st->codecpar->channel_layout = AV_CH_LAYOUT_STEREO; + st->codecpar->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO; st->codecpar->sample_rate = 44100; avpriv_set_pts_info(st, 64, 1, 44100); oc->read_packet = aal_read_packet; framesize = 4096; break; case OMA_CODECID_ATRAC3PAL: - st->codecpar->channel_layout = AV_CH_LAYOUT_STEREO; - st->codecpar->channels = 2; + st->codecpar->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO; st->codecpar->sample_rate = 44100; avpriv_set_pts_info(st, 64, 1, 44100); oc->read_packet = aal_read_packet; diff --git a/libavformat/omaenc.c b/libavformat/omaenc.c index 1c4edcac5c..246f5195fb 100644 --- a/libavformat/omaenc.c +++ b/libavformat/omaenc.c @@ -58,7 +58,7 @@ static av_cold int oma_write_header(AVFormatContext *s) switch (par->codec_tag) { case OMA_CODECID_ATRAC3: - if (par->channels != 2) { + if (par->ch_layout.nb_channels != 2) { av_log(s, AV_LOG_ERROR, "ATRAC3 in OMA is only supported with 2 channels\n"); return AVERROR(EINVAL); } @@ -78,7 +78,7 @@ static av_cold int oma_write_header(AVFormatContext *s) case OMA_CODECID_ATRAC3P: avio_wb32(s->pb, (OMA_CODECID_ATRAC3P << 24) | (srate_index << 13) | - (par->channels << 10) | + (par->ch_layout.nb_channels << 10) | (par->block_align/8 - 1)); break; default: