alsa-plugins icon indicating copy to clipboard operation
alsa-plugins copied to clipboard

Compatibility with FFMPEG 7.0

Open eclipseo opened this issue 1 year ago • 5 comments

channel_layout has been replace with ch_layout

avcodec_close has been deprecated in favor of avcodec_free_context

Fix #57

eclipseo avatar Apr 14 '24 10:04 eclipseo

This breaks the a52 encoder profile for me:

ALSA device open 'plug:SLAVE='a52:0'' playback: 0x5610a26b99d0
[ac3_fixed @ 0x5610a26af040] Specified channel layout '6 channels' is not supported by the ac3_fixed encoder
[ac3_fixed @ 0x5610a26af040] Supported channel layouts:
[ac3_fixed @ 0x5610a26af040]   mono
[ac3_fixed @ 0x5610a26af040]   stereo
[ac3_fixed @ 0x5610a26af040]   3.0(back)
[ac3_fixed @ 0x5610a26af040]   3.0
[ac3_fixed @ 0x5610a26af040]   quad(side)
[ac3_fixed @ 0x5610a26af040]   quad
[ac3_fixed @ 0x5610a26af040]   4.0
[ac3_fixed @ 0x5610a26af040]   5.0(side)
[ac3_fixed @ 0x5610a26af040]   5.0
[ac3_fixed @ 0x5610a26af040]   2 channels (FC+LFE)
[ac3_fixed @ 0x5610a26af040]   2.1
[ac3_fixed @ 0x5610a26af040]   4 channels (FL+FR+LFE+BC)
[ac3_fixed @ 0x5610a26af040]   3.1
[ac3_fixed @ 0x5610a26af040]   4.1
[ac3_fixed @ 0x5610a26af040]   5.1(side)
[ac3_fixed @ 0x5610a26af040]   5.1

fhloston avatar May 06 '24 16:05 fhloston

@fhloston This seems unrelated to this patch, ac3_fixed has always only supported this.

https://github.com/FFmpeg/FFmpeg/commit/65ddc74988245a01421a63c5cffa4d900c47117c

/**
 * List of supported channel layouts.
 */
const AVChannelLayout ff_ac3_ch_layouts[19] = {
    AV_CHANNEL_LAYOUT_MONO,
    AV_CHANNEL_LAYOUT_STEREO,
    AV_CHANNEL_LAYOUT_2_1,
    AV_CHANNEL_LAYOUT_SURROUND,
    AV_CHANNEL_LAYOUT_2_2,
    AV_CHANNEL_LAYOUT_QUAD,
    AV_CHANNEL_LAYOUT_4POINT0,
    AV_CHANNEL_LAYOUT_5POINT0,
    AV_CHANNEL_LAYOUT_5POINT0_BACK,
    {
        .nb_channels = 2,
        .order       = AV_CHANNEL_ORDER_NATIVE,
        .u.mask      = AV_CH_LAYOUT_MONO | AV_CH_LOW_FREQUENCY,
    },
    {
        .nb_channels = 3,
        .order       = AV_CHANNEL_ORDER_NATIVE,
        .u.mask      = AV_CH_LAYOUT_STEREO | AV_CH_LOW_FREQUENCY,
    },
    {
        .nb_channels = 4,
        .order       = AV_CHANNEL_ORDER_NATIVE,
        .u.mask      = AV_CH_LAYOUT_2_1 | AV_CH_LOW_FREQUENCY,
    },
    {
        .nb_channels = 4,
        .order       = AV_CHANNEL_ORDER_NATIVE,
        .u.mask      = AV_CH_LAYOUT_SURROUND | AV_CH_LOW_FREQUENCY,
    },
    {
        .nb_channels = 5,
        .order       = AV_CHANNEL_ORDER_NATIVE,
        .u.mask      = AV_CH_LAYOUT_4POINT0 | AV_CH_LOW_FREQUENCY,
    },
    AV_CHANNEL_LAYOUT_5POINT1,
    AV_CHANNEL_LAYOUT_5POINT1_BACK,
    { 0 },
};

Though it should probably use the avcodec codec, but nothing I have changed should impact this.

eclipseo avatar May 06 '24 19:05 eclipseo

I cannot tell... previous version with ffmpeg6 just works though.

fhloston avatar May 06 '24 19:05 fhloston

I cannot tell... previous version with ffmpeg6 just works though.

Could you try with last push? Maybe it is an issue with mapping the channels with the new layout.

eclipseo avatar May 06 '24 20:05 eclipseo

That seems to have done the trick!

I have a working a52 profile.

:tada:

fhloston avatar May 07 '24 15:05 fhloston