Message ID | 20220315211858.26800-4-cus@passwd.hu |
---|---|
State | Accepted |
Commit | 92f27c6728fe08c36b3e09cc64421b8c7388634b |
Headers | show |
Series | [FFmpeg-devel,v2,1/4] avutil/channel_layout: print channels using av_channel_name_bprint in av_channel_layout_describe_bprint | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_aarch64_jetson | success | Make finished |
andriy/make_fate_aarch64_jetson | success | Make fate finished |
andriy/configure_armv7_RPi4 | warning | Failed to apply patch |
On 3/15/2022 6:18 PM, Marton Balint wrote: > bp->len cannot be used to detect if try_describe_ambisonic was successful > because the bprint buffer might contain other data as well. > > Also describing an invalid ambisonic layout should not return 0 but > AVERROR(EINVAL) instead, so change try_describe_ambisonic to actually return > error on invalid ambisonics. This also allows us to fix the first issue. > > Signed-off-by: Marton Balint <cus@passwd.hu> > --- > libavutil/channel_layout.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/libavutil/channel_layout.c b/libavutil/channel_layout.c > index fb1f72737f..1a141d4a6a 100644 > --- a/libavutil/channel_layout.c > +++ b/libavutil/channel_layout.c > @@ -689,14 +689,14 @@ static int ambisonic_order(const AVChannelLayout *channel_layout) > /** > * If the custom layout is n-th order standard-order ambisonic, with optional > * extra non-diegetic channels at the end, write its string description in bp. > - * Return a negative error code on error. > + * Return a negative error code otherwise. > */ > static int try_describe_ambisonic(AVBPrint *bp, const AVChannelLayout *channel_layout) > { > int nb_ambi_channels; > int order = ambisonic_order(channel_layout); > if (order < 0) > - return 0; > + return order; > > av_bprintf(bp, "ambisonic %d", order); > > @@ -739,8 +739,8 @@ int av_channel_layout_describe_bprint(const AVChannelLayout *channel_layout, > case AV_CHANNEL_ORDER_CUSTOM: > if (channel_layout->order == AV_CHANNEL_ORDER_CUSTOM) { > int res = try_describe_ambisonic(bp, channel_layout); > - if (res < 0 || bp->len) > - return res; > + if (res >= 0) > + return 0; > } > if (channel_layout->nb_channels) > av_bprintf(bp, "%d channels (", channel_layout->nb_channels); LGTM.
diff --git a/libavutil/channel_layout.c b/libavutil/channel_layout.c index fb1f72737f..1a141d4a6a 100644 --- a/libavutil/channel_layout.c +++ b/libavutil/channel_layout.c @@ -689,14 +689,14 @@ static int ambisonic_order(const AVChannelLayout *channel_layout) /** * If the custom layout is n-th order standard-order ambisonic, with optional * extra non-diegetic channels at the end, write its string description in bp. - * Return a negative error code on error. + * Return a negative error code otherwise. */ static int try_describe_ambisonic(AVBPrint *bp, const AVChannelLayout *channel_layout) { int nb_ambi_channels; int order = ambisonic_order(channel_layout); if (order < 0) - return 0; + return order; av_bprintf(bp, "ambisonic %d", order); @@ -739,8 +739,8 @@ int av_channel_layout_describe_bprint(const AVChannelLayout *channel_layout, case AV_CHANNEL_ORDER_CUSTOM: if (channel_layout->order == AV_CHANNEL_ORDER_CUSTOM) { int res = try_describe_ambisonic(bp, channel_layout); - if (res < 0 || bp->len) - return res; + if (res >= 0) + return 0; } if (channel_layout->nb_channels) av_bprintf(bp, "%d channels (", channel_layout->nb_channels);
bp->len cannot be used to detect if try_describe_ambisonic was successful because the bprint buffer might contain other data as well. Also describing an invalid ambisonic layout should not return 0 but AVERROR(EINVAL) instead, so change try_describe_ambisonic to actually return error on invalid ambisonics. This also allows us to fix the first issue. Signed-off-by: Marton Balint <cus@passwd.hu> --- libavutil/channel_layout.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)