Now that FFmpeg 6 is in.

Remove patches to revert newer FFmpeg API utilization to be able
to build with FFmpeg 4.


Index: Makefile
===================================================================
RCS file: /cvs/ports/multimedia/handbrake/Makefile,v
retrieving revision 1.23
diff -u -p -u -p -r1.23 Makefile
--- Makefile    29 May 2024 08:47:49 -0000      1.23
+++ Makefile    25 Sep 2024 06:37:25 -0000
@@ -3,6 +3,7 @@ COMMENT =       open source video transcoder
 V =            1.6.1
 DISTNAME =     HandBrake-${V}-source
 PKGNAME =      handbrake-${V}
+REVISION =     0
 EXTRACT_SUFX = .tar.bz2
 CATEGORIES =   multimedia x11
 
@@ -51,7 +52,7 @@ LIB_DEPENDS = archivers/bzip2 \
                devel/harfbuzz \
                devel/jansson \
                devel/libdvdread \
-               graphics/ffmpeg \
+               graphics/ffmpeg>=6.1.2 \
                graphics/jpeg \
                graphics/zimg \
                multimedia/aom \
Index: patches/patch-libhb_audio_remap_c
===================================================================
RCS file: patches/patch-libhb_audio_remap_c
diff -N patches/patch-libhb_audio_remap_c
--- patches/patch-libhb_audio_remap_c   29 May 2024 08:47:50 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,24 +0,0 @@
-Revert "libhb: use mask part the new FFmpeg channel layout api."
-c5012478cba356b8f8f222d6acff9fe3cc74e67e
-
-Index: libhb/audio_remap.c
---- libhb/audio_remap.c.orig
-+++ libhb/audio_remap.c
-@@ -258,7 +258,7 @@ void hb_audio_remap_set_channel_layout(hb_audio_remap_
-         {
-             channel_layout = AV_CH_LAYOUT_STEREO;
-         }
--        remap->nchannels = 
hb_layout_get_discrete_channel_count(channel_layout);
-+        remap->nchannels = av_get_channel_layout_nb_channels(channel_layout);
- 
-         // in some cases, remapping is not necessary and/or supported
-         if (remap->nchannels > HB_AUDIO_REMAP_MAX_CHANNELS)
-@@ -317,7 +317,7 @@ void hb_audio_remap_build_table(hb_chan_map_t *channel
-         // Dolby Surround is Stereo when it comes to remapping
-         channel_layout = AV_CH_LAYOUT_STEREO;
-     }
--    nchannels = hb_layout_get_discrete_channel_count(channel_layout);
-+    nchannels = av_get_channel_layout_nb_channels(channel_layout);
- 
-     // clear remap table before (re-)building it
-     memset(remap_table, 0, nchannels * sizeof(int));
Index: patches/patch-libhb_audio_resample_c
===================================================================
RCS file: patches/patch-libhb_audio_resample_c
diff -N patches/patch-libhb_audio_resample_c
--- patches/patch-libhb_audio_resample_c        29 May 2024 08:47:50 -0000      
1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,25 +0,0 @@
-Revert "libhb: use mask part the new FFmpeg channel layout api."
-c5012478cba356b8f8f222d6acff9fe3cc74e67e
-
-Index: libhb/audio_resample.c
---- libhb/audio_resample.c.orig
-+++ libhb/audio_resample.c
-@@ -53,7 +53,7 @@ hb_audio_resample_t* hb_audio_resample_init(enum AVSam
-     }
- 
-     // requested output channel_layout, sample_fmt
--    resample->out.channels            = 
hb_layout_get_discrete_channel_count(channel_layout);
-+    resample->out.channels            = 
av_get_channel_layout_nb_channels(channel_layout);
-     resample->out.channel_layout      = channel_layout;
-     resample->out.matrix_encoding     = matrix_encoding;
-     resample->out.sample_fmt          = sample_fmt;
-@@ -232,7 +232,8 @@ int hb_audio_resample_update(hb_audio_resample_t *resa
-         resample->resample.sample_fmt         = resample->in.sample_fmt;
-         resample->resample.sample_rate        = resample->in.sample_rate;
-         resample->resample.channel_layout     = resample->in.channel_layout;
--        resample->resample.channels           = 
hb_layout_get_discrete_channel_count(resample->in.channel_layout);
-+        resample->resample.channels           =
-+            av_get_channel_layout_nb_channels(resample->in.channel_layout);
-         resample->resample.lfe_mix_level      = resample->in.lfe_mix_level;
-         resample->resample.center_mix_level   = resample->in.center_mix_level;
-         resample->resample.surround_mix_level = 
resample->in.surround_mix_level;
Index: patches/patch-libhb_common_c
===================================================================
RCS file: patches/patch-libhb_common_c
diff -N patches/patch-libhb_common_c
--- patches/patch-libhb_common_c        29 May 2024 08:47:50 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,41 +0,0 @@
-Revert "libhb: use mask part the new FFmpeg channel layout api."
-c5012478cba356b8f8f222d6acff9fe3cc74e67e
-
-Index: libhb/common.c
---- libhb/common.c.orig
-+++ libhb/common.c
-@@ -2283,7 +2283,7 @@ int hb_mixdown_has_remix_support(int mixdown, uint64_t
- 
-         // more than 1 channel
-         case HB_AMIXDOWN_STEREO:
--            return (hb_layout_get_discrete_channel_count(layout) > 1);
-+            return (av_get_channel_layout_nb_channels(layout) > 1);
- 
-         // regular stereo (not Dolby)
-         case HB_AMIXDOWN_LEFT:
-@@ -2483,22 +2483,14 @@ const hb_mixdown_t* hb_mixdown_get_next(const hb_mixdo
-     return ((hb_mixdown_internal_t*)last)->next;
- }
- 
--void hb_layout_get_name(char *name, int size, int64_t layout)
-+void hb_layout_get_name(char * name, int size, int64_t layout)
- {
--    AVChannelLayout ch_layout = {0};
--    av_channel_layout_from_mask(&ch_layout, layout);
--    av_channel_layout_describe(&ch_layout, name, size);
--    av_channel_layout_uninit(&ch_layout);
-+    av_get_channel_layout_string(name, size, 0, layout);
- }
- 
- int hb_layout_get_discrete_channel_count(int64_t layout)
- {
--    int nb_channels = 0;
--    AVChannelLayout ch_layout = {0};
--    av_channel_layout_from_mask(&ch_layout, layout);
--    nb_channels = ch_layout.nb_channels;
--    av_channel_layout_uninit(&ch_layout);
--    return nb_channels;
-+    return av_get_channel_layout_nb_channels(layout);
- }
- 
- int hb_layout_get_low_freq_channel_count(int64_t layout)
Index: patches/patch-libhb_decavcodec_c
===================================================================
RCS file: patches/patch-libhb_decavcodec_c
diff -N patches/patch-libhb_decavcodec_c
--- patches/patch-libhb_decavcodec_c    29 May 2024 08:47:50 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,167 +0,0 @@
-Revert "libhb: use mask part the new FFmpeg channel layout api."
-c5012478cba356b8f8f222d6acff9fe3cc74e67e
-
-Index: libhb/decavcodec.c
---- libhb/decavcodec.c.orig
-+++ libhb/decavcodec.c
-@@ -207,9 +207,6 @@ static int decavcodecaInit( hb_work_object_t * w, hb_j
-     }
-     hb_ff_set_sample_fmt(pv->context, codec, AV_SAMPLE_FMT_FLT);
- 
--    // Set decoder opts...
--    AVDictionary *av_opts = NULL;
--
-     /* Downmixing & sample_fmt conversion */
-     if (!(w->audio->config.out.codec & HB_ACODEC_PASS_FLAG))
-     {
-@@ -239,7 +236,7 @@ static int decavcodecaInit( hb_work_object_t * w, hb_j
-         {
-             case AV_CODEC_ID_AC3:
-             case AV_CODEC_ID_EAC3:
--                avcodec_downmix = w->audio->config.out.normalize_mix_level == 
0;
-+                avcodec_downmix = w->audio->config.out.normalize_mix_level != 
0;
-                 break;
-             case AV_CODEC_ID_DTS:
-                 avcodec_downmix = w->audio->config.out.normalize_mix_level == 
0;
-@@ -260,21 +257,13 @@ static int decavcodecaInit( hb_work_object_t * w, hb_j
-                 // request 5.1 before downmixing to dpl1/dpl2
-                 case HB_AMIXDOWN_DOLBY:
-                 case HB_AMIXDOWN_DOLBYPLII:
--                {
--                    av_dict_set(&av_opts, "downmix", "5.1(side)", 0);
-+                    pv->context->request_channel_layout = 
AV_CH_LAYOUT_5POINT1;
-                     break;
--                }
-                 // request the layout corresponding to the selected mixdown
-                 default:
--                {
--                    char description[256];
--                    AVChannelLayout ch_layout = {0};
--                    av_channel_layout_from_mask(&ch_layout, 
hb_ff_mixdown_xlat(w->audio->config.out.mixdown, NULL));
--                    av_channel_layout_describe(&ch_layout, description, 
sizeof(description));
--                    av_channel_layout_uninit(&ch_layout);
--                    av_dict_set(&av_opts, "downmix", description, 0);
-+                    pv->context->request_channel_layout =
-+                        hb_ff_mixdown_xlat(w->audio->config.out.mixdown, 
NULL);
-                     break;
--                }
-             }
-         }
-     }
-@@ -284,9 +273,12 @@ static int decavcodecaInit( hb_work_object_t * w, hb_j
-     if (w->codec_param                     == AV_CODEC_ID_TRUEHD &&
-         w->audio->config.in.channel_layout == AV_CH_LAYOUT_MONO)
-     {
--        av_dict_set(&av_opts, "downmix", "stereo", 0);
-+        pv->context->request_channel_layout = AV_CH_LAYOUT_STEREO;
-     }
- 
-+    // Set decoder opts...
-+    AVDictionary * av_opts = NULL;
-+
-     // Dynamic Range Compression
-     if (w->audio->config.out.dynamic_range_compression >= 0.0f &&
-         hb_audio_can_apply_drc(w->audio->config.in.codec,
-@@ -332,14 +324,6 @@ static int decavcodecaInit( hb_work_object_t * w, hb_j
-     pv->context->pkt_timebase.num = pv->audio->config.in.timebase.num;
-     pv->context->pkt_timebase.den = pv->audio->config.in.timebase.den;
- 
--    // libavcodec can't decode TrueHD Mono (bug #356)
--    // work around it by requesting Stereo and downmixing
--    if (w->codec_param                     == AV_CODEC_ID_TRUEHD &&
--        w->audio->config.in.channel_layout == AV_CH_LAYOUT_MONO)
--    {
--        pv->context->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO;
--    }
--
-     // avcodec_open populates av_opts with the things it didn't recognize.
-     AVDictionaryEntry *t = NULL;
-     while ((t = av_dict_get(av_opts, "", t, AV_DICT_IGNORE_SUFFIX)) != NULL)
-@@ -752,13 +736,15 @@ static int decavcodecaBSInfo( hb_work_object_t *w, con
-             // libavcodec can't decode TrueHD Mono (bug #356)
-             // work around it by requesting Stereo before decoding
-             if (context->codec_id == AV_CODEC_ID_TRUEHD &&
--                context->ch_layout.u.mask == AV_CH_LAYOUT_MONO)
-+                context->channel_layout == AV_CH_LAYOUT_MONO)
-             {
-                 truehd_mono                     = 1;
--                AVChannelLayout ch_layout = AV_CHANNEL_LAYOUT_STEREO;
--                av_opt_set_chlayout(context, "downmix", &ch_layout, 
AV_OPT_SEARCH_CHILDREN);
--                context->ch_layout = ch_layout;
-+                context->request_channel_layout = AV_CH_LAYOUT_STEREO;
-             }
-+            else
-+            {
-+                context->request_channel_layout = 0;
-+            }
- 
-             AVPacket *avp = av_packet_alloc();
-             avp->data = parse_buffer;
-@@ -797,7 +783,16 @@ static int decavcodecaBSInfo( hb_work_object_t *w, con
-                     info->sample_bit_depth  = context->bits_per_raw_sample;
- 
-                     int bps = av_get_bits_per_sample(context->codec_id);
--                    int channels = frame->ch_layout.nb_channels;
-+                    int channels;
-+                    if (frame->channel_layout != 0)
-+                    {
-+                        channels = av_get_channel_layout_nb_channels(
-+                                                        
frame->channel_layout);
-+                    }
-+                    else
-+                    {
-+                        channels = frame->channels;
-+                    }
- 
-                     info->bitrate = bps * channels * info->rate.num;
-                     if (info->bitrate <= 0)
-@@ -837,17 +832,15 @@ static int decavcodecaBSInfo( hb_work_object_t *w, con
-                         }
-                         else
-                         {
--                            info->channel_layout = frame->ch_layout.u.mask;
-+                            info->channel_layout = frame->channel_layout;
-                         }
-                     }
-                     if (info->channel_layout == 0)
-                     {
-                         // Channel layout was not set.  Guess a layout based
-                         // on number of channels.
--                        AVChannelLayout channel_layout;
--                        av_channel_layout_default(&channel_layout, 
frame->ch_layout.nb_channels);
--                        info->channel_layout = channel_layout.u.mask;
--                        av_channel_layout_uninit(&channel_layout);
-+                        info->channel_layout = av_get_default_channel_layout(
-+                                                            frame->channels);
-                     }
-                     if (context->codec_id == AV_CODEC_ID_AC3 ||
-                         context->codec_id == AV_CODEC_ID_EAC3)
-@@ -2310,7 +2303,7 @@ static void decodeAudio(hb_work_private_t *pv, packet_
-         else
-         {
-             AVFrameSideData *side_data;
--            AVChannelLayout  channel_layout;
-+            uint64_t         channel_layout;
-             if ((side_data =
-                  av_frame_get_side_data(pv->frame,
-                                 AV_FRAME_DATA_DOWNMIX_INFO)) != NULL)
-@@ -2335,14 +2328,13 @@ static void decodeAudio(hb_work_private_t *pv, packet_
-                                                  center_mix_level,
-                                                  downmix_info->lfe_mix_level);
-             }
--            channel_layout = pv->frame->ch_layout;
--            if (channel_layout.order != AV_CHANNEL_ORDER_NATIVE || 
channel_layout.u.mask == 0)
-+            channel_layout = pv->frame->channel_layout;
-+            if (channel_layout == 0)
-             {
--                AVChannelLayout default_ch_layout;
--                av_channel_layout_default(&default_ch_layout, 
pv->frame->ch_layout.nb_channels);
--                channel_layout = default_ch_layout;
-+                channel_layout = av_get_default_channel_layout(
-+                                                        pv->frame->channels);
-             }
--            hb_audio_resample_set_channel_layout(pv->resample, 
channel_layout.u.mask);
-+            hb_audio_resample_set_channel_layout(pv->resample, 
channel_layout);
-             hb_audio_resample_set_sample_fmt(pv->resample,
-                                              pv->frame->format);
-             hb_audio_resample_set_sample_rate(pv->resample,
Index: patches/patch-libhb_encavcodecaudio_c
===================================================================
RCS file: patches/patch-libhb_encavcodecaudio_c
diff -N patches/patch-libhb_encavcodecaudio_c
--- patches/patch-libhb_encavcodecaudio_c       29 May 2024 08:47:50 -0000      
1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,64 +0,0 @@
-Revert "libhb: use mask part the new FFmpeg channel layout api."
-c5012478cba356b8f8f222d6acff9fe3cc74e67e
-
-Index: libhb/encavcodecaudio.c
---- libhb/encavcodecaudio.c.orig
-+++ libhb/encavcodecaudio.c
-@@ -174,15 +174,13 @@ static int encavcodecaInit(hb_work_object_t *w, hb_job
-         }
-     }
- 
--    AVChannelLayout ch_layout = {0};
--    av_channel_layout_from_mask(&ch_layout, channel_layout);
--
-     // allocate the context and apply the settings
-     context                      = avcodec_alloc_context3(codec);
-     hb_ff_set_sample_fmt(context, codec, sample_fmt);
-     context->bits_per_raw_sample = bits_per_raw_sample;
-     context->profile             = profile;
--    context->ch_layout           = ch_layout;
-+    context->channel_layout      = channel_layout;
-+    context->channels            = pv->out_discrete_channels;
-     context->sample_rate         = audio->config.out.samplerate;
-     context->time_base           = (AVRational){1, 90000};
- 
-@@ -234,7 +232,7 @@ static int encavcodecaInit(hb_work_object_t *w, hb_job
-     pv->context           = context;
-     audio->config.out.samples_per_frame =
-     pv->samples_per_frame = context->frame_size;
--    pv->input_samples     = context->frame_size * 
context->ch_layout.nb_channels;
-+    pv->input_samples     = context->frame_size * context->channels;
-     pv->input_buf         = malloc(pv->input_samples * sizeof(float));
-     // Some encoders in libav (e.g. fdk-aac) fail if the output buffer
-     // size is not some minimum value.  8K seems to be enough :(
-@@ -257,9 +255,9 @@ static int encavcodecaInit(hb_work_object_t *w, hb_job
-         av_opt_set_int(pv->swresample, "out_sample_fmt",
-                        context->sample_fmt, 0);
-         av_opt_set_int(pv->swresample, "in_channel_layout",
--                       context->ch_layout.u.mask, 0);
-+                       context->channel_layout, 0);
-         av_opt_set_int(pv->swresample, "out_channel_layout",
--                       context->ch_layout.u.mask, 0);
-+                       context->channel_layout, 0);
-         av_opt_set_int(pv->swresample, "in_sample_rate",
-                        context->sample_rate, 0);
-         av_opt_set_int(pv->swresample, "out_sample_rate",
-@@ -423,15 +421,15 @@ static void Encode(hb_work_object_t *w, hb_buffer_list
-         int     out_size;
-         AVFrame frame = { .nb_samples = pv->samples_per_frame,
-                           .format = pv->context->sample_fmt,
--                          .ch_layout = pv->context->ch_layout
-+                          .channels = pv->context->channels
-         };
- 
-         out_size = av_samples_get_buffer_size(NULL,
--                                              
pv->context->ch_layout.nb_channels,
-+                                              pv->context->channels,
-                                               pv->samples_per_frame,
-                                               pv->context->sample_fmt, 1);
-         avcodec_fill_audio_frame(&frame,
--                                 pv->context->ch_layout.nb_channels, 
pv->context->sample_fmt,
-+                                 pv->context->channels, 
pv->context->sample_fmt,
-                                  pv->output_buf, out_size, 1);
-         if (pv->swresample != NULL)
-         {
Index: patches/patch-libhb_muxavformat_c
===================================================================
RCS file: patches/patch-libhb_muxavformat_c
diff -N patches/patch-libhb_muxavformat_c
--- patches/patch-libhb_muxavformat_c   29 May 2024 08:47:50 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,33 +0,0 @@
-Revert "libhb: use mask part the new FFmpeg channel layout api."
-c5012478cba356b8f8f222d6acff9fe3cc74e67e
-
-Index: libhb/muxavformat.c
---- libhb/muxavformat.c.orig
-+++ libhb/muxavformat.c
-@@ -804,21 +804,19 @@ static int avformatInit( hb_mux_object_t * m )
-         track->st->codecpar->sample_rate = audio->config.out.samplerate;
-         if (audio->config.out.codec & HB_ACODEC_PASS_FLAG)
-         {
--            AVChannelLayout ch_layout = {0};
--            av_channel_layout_from_mask(&ch_layout, 
audio->config.in.channel_layout);
--            track->st->codecpar->ch_layout = ch_layout;
-+            track->st->codecpar->channels = 
av_get_channel_layout_nb_channels(audio->config.in.channel_layout);
-+            track->st->codecpar->channel_layout = 
audio->config.in.channel_layout;
-         }
-         else
-         {
--            AVChannelLayout ch_layout = {0};
--            av_channel_layout_from_mask(&ch_layout, 
hb_ff_mixdown_xlat(audio->config.out.mixdown, NULL));
--            track->st->codecpar->ch_layout = ch_layout;
-+            track->st->codecpar->channels = 
hb_mixdown_get_discrete_channel_count(audio->config.out.mixdown);
-+            track->st->codecpar->channel_layout = 
hb_ff_mixdown_xlat(audio->config.out.mixdown, NULL);
-         }
- 
-         const char *name;
-         if (audio->config.out.name == NULL)
-         {
--            switch (track->st->codecpar->ch_layout.nb_channels)
-+            switch (track->st->codecpar->channels)
-             {
-                 case 1:
-                     name = "Mono";
Index: patches/patch-libhb_scan_c
===================================================================
RCS file: patches/patch-libhb_scan_c
diff -N patches/patch-libhb_scan_c
--- patches/patch-libhb_scan_c  29 May 2024 08:47:50 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-Revert "libhb: use mask part the new FFmpeg channel layout api."
-c5012478cba356b8f8f222d6acff9fe3cc74e67e
-
-Index: libhb/scan.c
---- libhb/scan.c.orig
-+++ libhb/scan.c
-@@ -1611,7 +1611,7 @@ static void LookForAudio(hb_scan_t *scan, hb_title_t *
-     {
-         int lfes     = (!!(audio->config.in.channel_layout & 
AV_CH_LOW_FREQUENCY) +
-                         !!(audio->config.in.channel_layout & 
AV_CH_LOW_FREQUENCY_2));
--        int channels = 
hb_layout_get_discrete_channel_count(audio->config.in.channel_layout);
-+        int channels = 
av_get_channel_layout_nb_channels(audio->config.in.channel_layout);
-         char *desc   = audio->config.lang.description +
-                         strlen(audio->config.lang.description);
-         size_t size = sizeof(audio->config.lang.description) - 
strlen(audio->config.lang.description);

Reply via email to