mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-23 04:24:35 +02:00
lavf: add a temporary compat layer for the channel layout API change
Mediates between old-style (de)muxers and new-style callers. Will be removed once all the (de)muxers are converted to the new API. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
276c06726f
commit
c30e22c9fb
@ -194,6 +194,18 @@ static int update_stream_avctx(AVFormatContext *s)
|
|||||||
sti->parser = NULL;
|
sti->parser = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if the demuxer exports old channel layouts, convert it to new */
|
||||||
|
if (!st->codecpar->ch_layout.nb_channels &&
|
||||||
|
st->codecpar->channels) {
|
||||||
|
if (st->codecpar->channel_layout) {
|
||||||
|
av_channel_layout_from_mask(&st->codecpar->ch_layout,
|
||||||
|
st->codecpar->channel_layout);
|
||||||
|
} else {
|
||||||
|
st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
|
||||||
|
st->codecpar->ch_layout.nb_channels = st->codecpar->channels;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* update internal codec context, for the parser */
|
/* update internal codec context, for the parser */
|
||||||
ret = avcodec_parameters_to_context(sti->avctx, st->codecpar);
|
ret = avcodec_parameters_to_context(sti->avctx, st->codecpar);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -272,6 +272,16 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options)
|
|||||||
ret = AVERROR(EINVAL);
|
ret = AVERROR(EINVAL);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if the new-style channel layout is set, convert it to old one
|
||||||
|
* for old-style muxers */
|
||||||
|
if (par->ch_layout.nb_channels &&
|
||||||
|
!par->channels) {
|
||||||
|
par->channels = par->ch_layout.nb_channels;
|
||||||
|
par->channel_layout = par->ch_layout.order == AV_CHANNEL_ORDER_NATIVE ?
|
||||||
|
par->ch_layout.u.mask : 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!par->block_align)
|
if (!par->block_align)
|
||||||
par->block_align = par->channels *
|
par->block_align = par->channels *
|
||||||
av_get_bits_per_sample(par->codec_id) >> 3;
|
av_get_bits_per_sample(par->codec_id) >> 3;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user