Overview

Request 6241 (accepted)

- Update to version 1.9.1:
* General
- Fixed FFV1 pixel format selection when an hardware decoder is used
(#6565)
- Fixed an issue that could happen when chapters titles are not UTF-8
(#6489)
- Fixed gcc14 aarch64 build failures (#6463)
* Subtitles
- Improved support for SRT files with overlapping subtitles (#6155)
* Audio
- Fixed AC3 and EAC3 extradata in MKV (#6582)
* Third-party libraries
- nv-codec-headers: Harden DLL loading so that it only uses system32 for
the search path on Windows (#6548)
- Updated libraries
- libdav1d 1.5.1 (AV1 video decoding)
- HarfBuzz 10.2.0 (subtitles)
- libjpeg-turbo 3.1.0 (preview image compression)
* Windows
- Fix an issue with the autoname function not updating when title is the
only option (#6517)
- Fix an issue where the audio encoder may not display correctly after a
queue has been imported and queue item edited. This may exhibit in other
scenarios as well (#6524)
- Fix an issue with titlebar / taskbar progress erroneously showing with
multi-instance encodes (#6477)
- Fix a crash when importing chapters where there is a chapter count
mis-match (#6514)
- Fixed an issue with autoname pre/postfix option where it would apply
regardless of file path collision.
- Fixed an issue where the crop controls would not enable correctly when
editing jobs (#6614)
- Rebuild Source1 download.tar.bz2

Submit package home:manfred-h / handbrake to package Multimedia / handbrake

handbrake.changes Changed
x
 
1
@@ -1,4 +1,41 @@
2
 -------------------------------------------------------------------
3
+Thu Feb 13 13:24:12 UTC 2025 - Manfred Hollstein <manfred.h@gmx.net>
4
+
5
+- Update to version 1.9.1:
6
+  * General
7
+    - Fixed FFV1 pixel format selection when an hardware decoder is used
8
+      (#6565)
9
+    - Fixed an issue that could happen when chapters titles are not UTF-8
10
+      (#6489)
11
+    - Fixed gcc14 aarch64 build failures (#6463)
12
+  * Subtitles
13
+    - Improved support for SRT files with overlapping subtitles (#6155)
14
+  * Audio
15
+    - Fixed AC3 and EAC3 extradata in MKV (#6582)
16
+  * Third-party libraries
17
+    - nv-codec-headers: Harden DLL loading so that it only uses system32 for
18
+      the search path on Windows (#6548)
19
+    - Updated libraries
20
+      - libdav1d 1.5.1 (AV1 video decoding)
21
+      - HarfBuzz 10.2.0 (subtitles)
22
+      - libjpeg-turbo 3.1.0 (preview image compression)
23
+  * Windows
24
+    - Fix an issue with the autoname function not updating when title is the
25
+      only option (#6517)
26
+    - Fix an issue where the audio encoder may not display correctly after a
27
+      queue has been imported and queue item edited. This may exhibit in other
28
+      scenarios as well (#6524)
29
+    - Fix an issue with titlebar / taskbar progress erroneously showing with
30
+      multi-instance encodes (#6477)
31
+    - Fix a crash when importing chapters where there is a chapter count
32
+      mis-match (#6514)
33
+    - Fixed an issue with autoname pre/postfix option where it would apply
34
+      regardless of file path collision.
35
+    - Fixed an issue where the crop controls would not enable correctly when
36
+      editing jobs (#6614)
37
+- Rebuild Source1 download.tar.bz2
38
+
39
+-------------------------------------------------------------------
40
 Wed Feb 12 18:55:19 UTC 2025 - Manfred Hollstein <manfred.h@gmx.net>
41
 
42
 - Remove the _constraints file; 6G memory are not at all needed!
43
handbrake.spec Changed
10
 
1
@@ -26,7 +26,7 @@
2
 
3
 Name:           handbrake
4
 Summary:        Multithreaded Video Transcoder
5
-Version:        1.9.0
6
+Version:        1.9.1
7
 Release:        0
8
 Url:            http://handbrake.fr/
9
 Source0:        https://github.com/HandBrake/HandBrake/archive/refs/tags/%{version}.tar.gz
10
1.9.0.tar.gz/NEWS.markdown -> 1.9.1.tar.gz/NEWS.markdown Changed
45
 
1
@@ -11,6 +11,43 @@
2
 - For Arm64 (Qualcomm or other)(https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-arm64.exe)
3
 
4
 
5
+## HandBrake 1.9.1
6
+
7
+### All platforms
8
+
9
+#### General
10
+
11
+- Fixed FFV1 pixel format selection when an hardware decoder is used (#6565)
12
+- Fixed an issue that could happen when chapters titles are not UTF-8 (#6489)
13
+- Fixed gcc14 aarch64 build failures (#6463)
14
+
15
+#### Subtitles
16
+
17
+- Improved support for SRT files with overlapping subtitles (#6155)
18
+
19
+#### Audio
20
+
21
+- Fixed AC3 and EAC3 extradata in MKV (#6582)
22
+
23
+#### Third-party libraries
24
+
25
+- nv-codec-headers: Harden DLL loading so that it only uses system32 for the search path on Windows (#6548)
26
+
27
+- Updated libraries
28
+  - libdav1d 1.5.1 (AV1 video decoding)
29
+  - HarfBuzz 10.2.0 (subtitles)
30
+  - libjpeg-turbo 3.1.0 (preview image compression)
31
+  
32
+### Windows
33
+
34
+- Fix an issue with the autoname function not updating when title is the only option (#6517)
35
+- Fix an issue where the audio encoder may not display correctly after a queue has been imported and queue item edited. This may exhibit in other scenarios as well (#6524)
36
+- Fix an issue with titlebar / taskbar progress erroneously showing with multi-instance encodes (#6477)
37
+- Fix a crash when importing chapters where there is a chapter count mis-match (#6514)
38
+- Fixed an issue with autoname pre/postfix option where it would apply regardless of file path collision.
39
+- Fixed an issue where the crop controls would not enable correctly when editing jobs (#6614)
40
+
41
+
42
 ## HandBrake 1.9.0
43
 
44
 ### All platforms
45
1.9.0.tar.gz/contrib/harfbuzz/module.defs -> 1.9.1.tar.gz/contrib/harfbuzz/module.defs Changed
14
 
1
@@ -3,9 +3,9 @@
2
 $(eval $(call import.MODULE.defs,HARFBUZZ,harfbuzz,$(__deps__)))
3
 $(eval $(call import.CONTRIB.defs,HARFBUZZ))
4
 
5
-HARFBUZZ.FETCH.url     = https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/harfbuzz-10.1.0.tar.xz
6
-HARFBUZZ.FETCH.url    += https://github.com/harfbuzz/harfbuzz/releases/download/10.1.0/harfbuzz-10.1.0.tar.xz
7
-HARFBUZZ.FETCH.sha256  = 6ce3520f2d089a33cef0fc48321334b8e0b72141f6a763719aaaecd2779ecb82
8
+HARFBUZZ.FETCH.url     = https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/harfbuzz-10.2.0.tar.xz
9
+HARFBUZZ.FETCH.url    += https://github.com/harfbuzz/harfbuzz/releases/download/10.2.0/harfbuzz-10.2.0.tar.xz
10
+HARFBUZZ.FETCH.sha256  = 620e3468faec2ea8685d32c46a58469b850ef63040b3565cde05959825b48227
11
 
12
 HARFBUZZ.build_dir             = build
13
 HARFBUZZ.CONFIGURE.exe         = cmake
14
1.9.0.tar.gz/contrib/libdav1d/module.defs -> 1.9.1.tar.gz/contrib/libdav1d/module.defs Changed
14
 
1
@@ -1,9 +1,9 @@
2
 $(eval $(call import.MODULE.defs,LIBDAV1D,libdav1d))
3
 $(eval $(call import.CONTRIB.defs,LIBDAV1D))
4
 
5
-LIBDAV1D.FETCH.url     = https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/dav1d-1.5.0.tar.bz2
6
-LIBDAV1D.FETCH.url    += https://code.videolan.org/videolan/dav1d/-/archive/1.5.0/dav1d-1.5.0.tar.bz2
7
-LIBDAV1D.FETCH.sha256  = a6ca64e34cec56ae1c2d359e1da5c5386ecd7a3a62f931d026ac4f2ff72ade64
8
+LIBDAV1D.FETCH.url     = https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/dav1d-1.5.1.tar.bz2
9
+LIBDAV1D.FETCH.url    += https://code.videolan.org/videolan/dav1d/-/archive/1.5.1/dav1d-1.5.1.tar.bz2
10
+LIBDAV1D.FETCH.sha256  = 4eddffd108f098e307b93c9da57b6125224dc5877b1b3d157b31be6ae8f1f093
11
 
12
 LIBDAV1D.build_dir     = build/
13
 
14
1.9.0.tar.gz/contrib/libjpeg-turbo/module.defs -> 1.9.1.tar.gz/contrib/libjpeg-turbo/module.defs Changed
14
 
1
@@ -1,9 +1,9 @@
2
 $(eval $(call import.MODULE.defs,LIBJPEGTURBO,libjpeg-turbo))
3
 $(eval $(call import.CONTRIB.defs,LIBJPEGTURBO))
4
 
5
-LIBJPEGTURBO.FETCH.url     = https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/libjpeg-turbo-3.0.4.tar.gz
6
-LIBJPEGTURBO.FETCH.url    += https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.0.4.tar.gz
7
-LIBJPEGTURBO.FETCH.sha256  = 0270f9496ad6d69e743f1e7b9e3e9398f5b4d606b6a47744df4b73df50f62e38
8
+LIBJPEGTURBO.FETCH.url     = https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/libjpeg-turbo-3.1.0.tar.gz
9
+LIBJPEGTURBO.FETCH.url    += https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.1.0.tar.gz
10
+LIBJPEGTURBO.FETCH.sha256  = 35fec2e1ddfb05ecf6d93e50bc57c1e54bc81c16d611ddf6eff73fff266d8285
11
 
12
 LIBJPEGTURBO.build_dir             = build
13
 LIBJPEGTURBO.CONFIGURE.exe         = cmake
14
1.9.1.tar.gz/contrib/nvenc/A01-dll-harden.patch Added
13
 
1
@@ -0,0 +1,11 @@
2
+--- nv-codec-headers-12.2.72.0/include/ffnvcodec/dynlink_loader.h
3
++++ nv-codec-headers-12.2.72.0/include/ffnvcodec/dynlink_loader.h
4
+@@ -62,7 +62,7 @@
5
+
6
+ #if !defined(FFNV_LOAD_FUNC) || !defined(FFNV_SYM_FUNC)
7
+ # ifdef _WIN32
8
+-#  define FFNV_LOAD_FUNC(path) LoadLibrary(TEXT(path))
9
++#  define FFNV_LOAD_FUNC(path) LoadLibraryExA(TEXT(path), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32)
10
+ #  define FFNV_SYM_FUNC(lib, sym) GetProcAddress((lib), (sym))
11
+ #  define FFNV_FREE_FUNC(lib) FreeLibrary(lib)
12
+ # else
13
1.9.0.tar.gz/libhb/muxavformat.c -> 1.9.1.tar.gz/libhb/muxavformat.c Changed
59
 
1
@@ -552,6 +552,10 @@
2
             track->st->time_base = m->time_base;
3
         }
4
 
5
+        // Some containers don't need metadata for some audio formats,
6
+        // and for some formats extradata will be generated automatically,
7
+        // set only what's needed
8
+        int need_extradata = 0;
9
         switch (audio->config.out.codec & HB_ACODEC_MASK)
10
         {
11
             case HB_ACODEC_DCA:
12
@@ -576,17 +580,21 @@
13
                 break;
14
             case HB_ACODEC_VORBIS:
15
                 track->st->codecpar->codec_id = AV_CODEC_ID_VORBIS;
16
+                need_extradata = 1;
17
                 break;
18
             case HB_ACODEC_OPUS:
19
                 track->st->codecpar->codec_id = AV_CODEC_ID_OPUS;
20
+                need_extradata = 1;
21
                 break;
22
             case HB_ACODEC_FFALAC:
23
             case HB_ACODEC_FFALAC24:
24
                 track->st->codecpar->codec_id = AV_CODEC_ID_ALAC;
25
+                need_extradata = 1;
26
                 break;
27
             case HB_ACODEC_FFFLAC:
28
             case HB_ACODEC_FFFLAC24:
29
                 track->st->codecpar->codec_id = AV_CODEC_ID_FLAC;
30
+                need_extradata = 1;
31
                 break;
32
             case HB_ACODEC_FFAAC:
33
             case HB_ACODEC_CA_AAC:
34
@@ -594,6 +602,7 @@
35
             case HB_ACODEC_FDK_AAC:
36
             case HB_ACODEC_FDK_HAAC:
37
                 track->st->codecpar->codec_id = AV_CODEC_ID_AAC;
38
+                need_extradata = 1;
39
 
40
                 // AAC from pass-through source may be ADTS.
41
                 // Therefore inserting "aac_adtstoasc" bitstream filter is
42
@@ -623,9 +632,14 @@
43
                 goto error;
44
         }
45
 
46
-        if (set_extradata(audio->priv.extradata, &track->st->codecpar->extradata, &track->st->codecpar->extradata_size))
47
+        if (need_extradata)
48
         {
49
-            goto error;
50
+            if (set_extradata(audio->priv.extradata,
51
+                              &track->st->codecpar->extradata,
52
+                              &track->st->codecpar->extradata_size))
53
+            {
54
+                goto error;
55
+            }
56
         }
57
 
58
         if (track->bitstream_context != NULL)
59
1.9.0.tar.gz/libhb/rpu.c -> 1.9.1.tar.gz/libhb/rpu.c Changed
10
 
1
@@ -264,7 +264,7 @@
2
                 // First subtract the crop values
3
                 left_offset   -= left_offset   > pv->crop_left   ? pv->crop_left   : left_offset;
4
                 right_offset  -= right_offset  > pv->crop_right  ? pv->crop_right  : right_offset;
5
-                top_offset    -= top_offset    > pv->crop_top    ? pv->crop_right  : top_offset;
6
+                top_offset    -= top_offset    > pv->crop_top    ? pv->crop_top    : top_offset;
7
                 bottom_offset -= bottom_offset > pv->crop_bottom ? pv->crop_bottom : bottom_offset;
8
 
9
                 // Then rescale
10
1.9.0.tar.gz/libhb/stream.c -> 1.9.1.tar.gz/libhb/stream.c Changed
63
 
1
@@ -10,6 +10,7 @@
2
 #include <string.h>
3
 #include <ctype.h>
4
 #include <errno.h>
5
+#include <iconv.h>
6
 
7
 #include "handbrake/handbrake.h"
8
 #include "handbrake/hbffmpeg.h"
9
@@ -6094,6 +6095,12 @@
10
     title->container_name = strdup( ic->iformat->name );
11
     title->data_rate = ic->bit_rate;
12
 
13
+    iconv_t iconv_context;
14
+    iconv_context = iconv_open("utf-8", "utf-8");
15
+
16
+    size_t utf8_buf_size = 2048;
17
+    char *utf8_buf = malloc(utf8_buf_size);
18
+
19
     hb_deep_log( 2, "Found ffmpeg %d chapters, container=%s", ic->nb_chapters, ic->iformat->name );
20
 
21
     if( ic->nb_chapters != 0 )
22
@@ -6131,10 +6138,29 @@
23
                 chapter->seconds = ( seconds % 60 );
24
 
25
                 tag = av_dict_get( m->metadata, "title", NULL, 0 );
26
+
27
+                // Detect if the chapter title is a valid UTF-8 string
28
+                char *p, *q;
29
+                size_t in_size, out_size, retval;
30
+
31
+                p = tag->value;
32
+                q = utf8_buf;
33
+
34
+                in_size = strlen(tag->value);
35
+                out_size = in_size;
36
+
37
+                if (utf8_buf_size < in_size)
38
+                {
39
+                    utf8_buf = realloc(utf8_buf, in_size);
40
+                }
41
+
42
+                retval = iconv(iconv_context, &p, &in_size, &q, &out_size);
43
+                int valid = retval != (size_t) -1;
44
+
45
                 /* Ignore generic chapter names set by MakeMKV
46
                  * ("Chapter 00" etc.).
47
                  * Our default chapter names are better. */
48
-                if( tag && tag->value && tag->value0 &&
49
+                if( valid && tag && tag->value && tag->value0 &&
50
                     ( strncmp( "Chapter ", tag->value, 8 ) ||
51
                       strlen( tag->value ) > 11 ) )
52
                 {
53
@@ -6155,6 +6181,9 @@
54
             }
55
     }
56
 
57
+    iconv_close(iconv_context);
58
+    free(utf8_buf);
59
+
60
     /*
61
      * Fill the metadata.
62
      */
63
1.9.0.tar.gz/libhb/sync.c -> 1.9.1.tar.gz/libhb/sync.c Changed
15
 
1
@@ -1181,9 +1181,12 @@
2
         // marker to indicate the end of a subtitle
3
         return;
4
     }
5
-    // Only SSA subs can overlap
6
+    // Theoretically only SSA subs can overlap,
7
+    // but there are some SRT subs out there with
8
+    // overlapping samples, so let's try to preserve them too
9
     if (stream->subtitle.subtitle->source      != SSASUB &&
10
         stream->subtitle.subtitle->source      != IMPORTSSA &&
11
+        stream->subtitle.subtitle->source      != IMPORTSRT &&
12
         stream->subtitle.subtitle->config.dest == PASSTHRUSUB &&
13
         buf->s.start <= stream->last_pts)
14
     {
15
1.9.0.tar.gz/libhb/templates/comb_detect_template.c -> 1.9.1.tar.gz/libhb/templates/comb_detect_template.c Changed
37
 
1
@@ -270,7 +270,7 @@
2
                 mask_vec = vandq_u32(mask_vec, condition);
3
                 mask_vec = vandq_u32(mask_vec, v_one);
4
 
5
-                vst1q_u32(&mask32, mask_vec);
6
+                vst1q_u32(mask32, mask_vec);
7
 
8
                 mask0 = mask320;
9
                 mask1 = mask321;
10
@@ -550,7 +550,7 @@
11
                         mask_vec = vandq_u32(mask_vec, condition);
12
                         mask_vec = vandq_u32(mask_vec, v_one);
13
 
14
-                        vst1q_u32(&mask32, mask_vec);
15
+                        vst1q_u32(mask32, mask_vec);
16
 
17
                         mask0 = mask320;
18
                         mask1 = mask321;
19
@@ -568,7 +568,7 @@
20
                         mask_vec = vandq_u32(mask_vec, condition);
21
                         mask_vec = vandq_u32(mask_vec, v_one);
22
 
23
-                        vst1q_u32(&mask32, mask_vec);
24
+                        vst1q_u32(mask32, mask_vec);
25
 
26
                         mask0 = mask320;
27
                         mask1 = mask321;
28
@@ -585,7 +585,7 @@
29
                         mask_vec = vandq_u32(mask_vec, condition);
30
                         mask_vec = vandq_u32(mask_vec, v_one);
31
 
32
-                        vst1q_u32(&mask32, mask_vec);
33
+                        vst1q_u32(mask32, mask_vec);
34
 
35
                         mask0 = mask320;
36
                         mask1 = mask321;
37
1.9.0.tar.gz/libhb/templates/decomb_template.c -> 1.9.1.tar.gz/libhb/templates/decomb_template.c Changed
19
 
1
@@ -181,7 +181,7 @@
2
         result = vshrq_n_s32(result, 3);
3
 
4
         uint32x4_t result_u32 = vreinterpretq_u32_s32(vaddq_s32(result, offset));
5
-        vst1q_u32(&cr_table_vec, result_u32);
6
+        vst1q_u32(cr_table_vec, result_u32);
7
         dstx+0 = crop_tablecr_table_vec0;
8
         dstx+1 = crop_tablecr_table_vec1;
9
         dstx+2 = crop_tablecr_table_vec2;
10
@@ -263,7 +263,7 @@
11
         result = vshrq_n_s16(result, 3);
12
 
13
         uint16x8_t result_u16 = vreinterpretq_u16_s16(vaddq_s16(result, offset));
14
-        vst1q_u16(&cr_table_vec, result_u16);
15
+        vst1q_u16(cr_table_vec, result_u16);
16
         dstx+0 = crop_tablecr_table_vec0;
17
         dstx+1 = crop_tablecr_table_vec1;
18
         dstx+2 = crop_tablecr_table_vec2;
19
1.9.0.tar.gz/libhb/work.c -> 1.9.1.tar.gz/libhb/work.c Changed
79
 
1
@@ -1451,6 +1451,43 @@
2
 #endif
3
 }
4
 
5
+static enum AVPixelFormat match_pix_fmt(enum AVPixelFormat pix_fmt,
6
+                                        const enum AVPixelFormat *encoder_pix_fmts,
7
+                                        int keep_chroma,
8
+                                        int keep_depth)
9
+{
10
+    while (*encoder_pix_fmts != AV_PIX_FMT_NONE)
11
+    {
12
+        int match = 1;
13
+
14
+        const AVPixFmtDescriptor *input_desc = av_pix_fmt_desc_get(pix_fmt);
15
+        const AVPixFmtDescriptor *pix_fmt_desc = av_pix_fmt_desc_get(*encoder_pix_fmts);
16
+
17
+        if (keep_chroma)
18
+        {
19
+            match &= pix_fmt_desc->log2_chroma_w >= input_desc->log2_chroma_w &&
20
+                     pix_fmt_desc->log2_chroma_h >= input_desc->log2_chroma_h;
21
+        }
22
+
23
+        if (keep_depth)
24
+        {
25
+            int input_depth = hb_get_bit_depth(pix_fmt);
26
+            int candidate_depth = hb_get_bit_depth(*encoder_pix_fmts);
27
+
28
+            match &= input_depth == candidate_depth;
29
+        }
30
+
31
+        if (match)
32
+        {
33
+            return *encoder_pix_fmts;
34
+        }
35
+
36
+        encoder_pix_fmts++;
37
+    }
38
+
39
+    return AV_PIX_FMT_NONE;
40
+}
41
+
42
 static void sanitize_filter_list_post(hb_job_t *job)
43
 {
44
 #ifdef __APPLE__
45
@@ -1465,23 +1502,20 @@
46
     {
47
         // Some encoders require a specific input pixel format
48
         // that could be different from the current pipeline format.
49
-        const int *encoder_pix_fmts = hb_video_encoder_get_pix_fmts(job->vcodec, job->encoder_profile);
50
-        int encoder_pix_fmt = *encoder_pix_fmts;
51
+        const enum AVPixelFormat *encoder_pix_fmts = hb_video_encoder_get_pix_fmts(job->vcodec,job->encoder_profile);
52
 
53
         // Prefer a pixel format with the
54
-        // same chroma subsampling
55
-        while (*encoder_pix_fmts != AV_PIX_FMT_NONE)
56
+        // same chroma subsampling and depth
57
+        enum AVPixelFormat encoder_pix_fmt = match_pix_fmt(job->input_pix_fmt, encoder_pix_fmts, 1, 1);
58
+
59
+        if (encoder_pix_fmt == AV_PIX_FMT_NONE)
60
         {
61
-            const AVPixFmtDescriptor *input_desc = av_pix_fmt_desc_get(job->input_pix_fmt);
62
-            const AVPixFmtDescriptor *pix_fmt_desc = av_pix_fmt_desc_get(*encoder_pix_fmts);
63
+            encoder_pix_fmt = match_pix_fmt(job->input_pix_fmt, encoder_pix_fmts, 1, 0);
64
+        }
65
 
66
-            if (pix_fmt_desc->log2_chroma_w >= input_desc->log2_chroma_w &&
67
-                pix_fmt_desc->log2_chroma_h >= input_desc->log2_chroma_h)
68
-            {
69
-                encoder_pix_fmt = *encoder_pix_fmts;
70
-                break;
71
-            }
72
-            encoder_pix_fmts++;
73
+        if (encoder_pix_fmt == AV_PIX_FMT_NONE)
74
+        {
75
+            encoder_pix_fmt = match_pix_fmt(job->input_pix_fmt, encoder_pix_fmts, 0, 0);
76
         }
77
 
78
         hb_filter_object_t *filter = hb_filter_init(HB_FILTER_FORMAT);
79
1.9.0.tar.gz/macosx/HBTitleSelectionController.m -> 1.9.1.tar.gz/macosx/HBTitleSelectionController.m Changed
10
 
1
@@ -42,7 +42,7 @@
2
 
3
 @end
4
 
5
-@interface HBTitleSelectionController () <NSTableViewDataSource, NSTableViewDelegate>
6
+@interface HBTitleSelectionController () <NSTableViewDataSource, NSTableViewDelegate, NSMenuItemValidation>
7
 
8
 @property (nonatomic, weak) IBOutlet HBTableView *tableView;
9
 @property (nonatomic, weak) IBOutlet NSView *rangeView;
10
1.9.0.tar.gz/win/CS/HandBrake.App.Core/HandBrake.App.Core.csproj -> 1.9.1.tar.gz/win/CS/HandBrake.App.Core/HandBrake.App.Core.csproj Changed
12
 
1
@@ -2,8 +2,8 @@
2
 
3
    <PropertyGroup>
4
        <TargetFramework>net8.0</TargetFramework>
5
-       <FileVersion>1.9.0.0</FileVersion>
6
-       <Version>1.9.0</Version>
7
+       <FileVersion>1.9.1.0</FileVersion>
8
+       <Version>1.9.1</Version>
9
        <Authors>HandBrake Team</Authors>
10
        <Description>HandBrake is an open-source, GPL-licensed, multiplatform,video transcoder.</Description>
11
        <Copyright>Copyright © 2003-2024 HandBrake Team</Copyright>
12
1.9.0.tar.gz/win/CS/HandBrake.Interop/HandBrake.Interop.csproj -> 1.9.1.tar.gz/win/CS/HandBrake.Interop/HandBrake.Interop.csproj Changed
12
 
1
@@ -2,8 +2,8 @@
2
 
3
   <PropertyGroup>
4
     <TargetFramework>net8.0</TargetFramework>
5
-    <FileVersion>1.9.0.0</FileVersion>
6
-    <Version>1.9.0</Version>
7
+    <FileVersion>1.9.1.0</FileVersion>
8
+    <Version>1.9.1</Version>
9
     <Authors>HandBrake Team</Authors>
10
     <Description>HandBrake is an open-source, GPL-licensed, multiplatform,video transcoder.</Description>
11
     <Copyright>Copyright © 2003-2024 HandBrake Team</Copyright>
12
1.9.0.tar.gz/win/CS/HandBrake.Interop/Interop/Interfaces/Model/Encoders/HBAudioEncoder.cs -> 1.9.1.tar.gz/win/CS/HandBrake.Interop/Interop/Interfaces/Model/Encoders/HBAudioEncoder.cs Changed
37
 
1
@@ -152,5 +152,35 @@
2
                 return this.ShortName.Contains("flac"); // TODO Find a better way to do this. 
3
             }
4
         }
5
+
6
+        protected bool Equals(HBAudioEncoder other)
7
+        {
8
+            return this.ShortName == other.ShortName;
9
+        }
10
+
11
+        public override bool Equals(object obj)
12
+        {
13
+            if (ReferenceEquals(null, obj))
14
+            {
15
+                return false;
16
+            }
17
+
18
+            if (ReferenceEquals(this, obj))
19
+            {
20
+                return true;
21
+            }
22
+
23
+            if (obj.GetType() != this.GetType())
24
+            {
25
+                return false;
26
+            }
27
+
28
+            return Equals((HBAudioEncoder)obj);
29
+        }
30
+
31
+        public override int GetHashCode()
32
+        {
33
+            return (this.ShortName != null ? this.ShortName.GetHashCode() : 0);
34
+        }
35
     }
36
 }
37
1.9.0.tar.gz/win/CS/HandBrake.Nsis.Installer/Installer64.nsi -> 1.9.1.tar.gz/win/CS/HandBrake.Nsis.Installer/Installer64.nsi Changed
12
 
1
@@ -5,8 +5,8 @@
2
       It may be used under the terms of the GNU General Public License. */
3
 
4
 !define PRODUCT_NAME "HandBrake"
5
-!define PRODUCT_VERSION "1.9.0"
6
-!define PRODUCT_VERSION_NUMBER "1.9.0"
7
+!define PRODUCT_VERSION "1.9.1"
8
+!define PRODUCT_VERSION_NUMBER "1.9.1"
9
 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\HandBrake.exe"
10
 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
11
 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
12
1.9.0.tar.gz/win/CS/HandBrake.Worker/HandBrake.Worker.csproj -> 1.9.1.tar.gz/win/CS/HandBrake.Worker/HandBrake.Worker.csproj Changed
21
 
1
@@ -12,7 +12,7 @@
2
     <PackageProjectUrl>https://handbrake.fr</PackageProjectUrl>
3
     <RepositoryUrl>https://github.com/HandBrake/HandBrake</RepositoryUrl>
4
     <RepositoryType>git</RepositoryType>
5
-    <AssemblyVersion>1.9.0.0</AssemblyVersion>
6
+    <AssemblyVersion>1.9.1.0</AssemblyVersion>
7
     <Platforms>AnyCPU</Platforms>
8
     <PlatformTarget>AnyCPU</PlatformTarget>
9
     <ApplicationIcon>handbrakepineapple.ico</ApplicationIcon>
10
@@ -20,8 +20,8 @@
11
     <AssemblyName>HandBrake.Worker</AssemblyName>
12
     <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
13
     <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
14
-    <FileVersion>1.9.0.0</FileVersion>
15
-    <Version>1.9.0</Version>
16
+    <FileVersion>1.9.1.0</FileVersion>
17
+    <Version>1.9.1</Version>
18
   </PropertyGroup>
19
 
20
   <ItemGroup>
21
1.9.0.tar.gz/win/CS/HandBrakeWPF/HandBrakeWPF.csproj -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/HandBrakeWPF.csproj Changed
12
 
1
@@ -14,8 +14,8 @@
2
     <PackageProjectUrl>https://handbrake.fr</PackageProjectUrl>
3
     <RepositoryUrl>https://github.com/HandBrake/HandBrake</RepositoryUrl>
4
     <RepositoryType>git</RepositoryType>
5
-    <AssemblyVersion>1.9.0.0</AssemblyVersion>
6
-    <Version>1.9.0</Version>
7
+    <AssemblyVersion>1.9.1.0</AssemblyVersion>
8
+    <Version>1.9.1</Version>
9
     <Platforms>AnyCPU</Platforms>
10
     <PlatformTarget>AnyCPU</PlatformTarget>
11
     <ApplicationIcon>handbrakepineapple.ico</ApplicationIcon>
12
1.9.0.tar.gz/win/CS/HandBrakeWPF/Helpers/AutoNameHelper.cs -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/Helpers/AutoNameHelper.cs Changed
26
 
1
@@ -282,14 +282,17 @@
2
 
3
             if (behaviour != AutonameFileCollisionBehaviour.AppendNumber)
4
             {
5
-                autoNamePath = Path.Combine(Path.GetDirectoryName(autoNamePath), prefix + filenameWithoutExt + postfix + extension);
6
-
7
-                int counter = 0;
8
-                while (File.Exists(autoNamePath))
9
+                if (File.Exists(autoNamePath))
10
                 {
11
-                    counter = counter + 1;
12
-                    string appendedNumber = string.Format("({0})", counter);
13
-                    autoNamePath = Path.Combine(Path.GetDirectoryName(autoNamePath), prefix + filenameWithoutExt + postfix + appendedNumber + extension);
14
+                    autoNamePath = Path.Combine(Path.GetDirectoryName(autoNamePath), prefix + filenameWithoutExt + postfix + extension);
15
+
16
+                    int counter = 0;
17
+                    while (File.Exists(autoNamePath))
18
+                    {
19
+                        counter = counter + 1;
20
+                        string appendedNumber = string.Format("({0})", counter);
21
+                        autoNamePath = Path.Combine(Path.GetDirectoryName(autoNamePath), prefix + filenameWithoutExt + postfix + appendedNumber + extension);
22
+                    }
23
                 }
24
             }
25
             else
26
1.9.0.tar.gz/win/CS/HandBrakeWPF/Model/ChangedOption.cs -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/Model/ChangedOption.cs Changed
11
 
1
@@ -15,6 +15,8 @@
2
         Chapters,
3
         Dimensions,
4
         Source,
5
-        Preset
6
+        Preset,
7
+        Angle,
8
+        Title
9
     }
10
 }
11
1.9.0.tar.gz/win/CS/HandBrakeWPF/Services/SystemService.cs -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/Services/SystemService.cs Changed
12
 
1
@@ -82,6 +82,10 @@
2
                     this.queueService.Pause(true);
3
                     this.storageLowPause = true;
4
                 }
5
+                else
6
+                {
7
+                    this.storageLowPause = false;
8
+                }
9
             }
10
         }
11
 
12
1.9.0.tar.gz/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs Changed
26
 
1
@@ -380,16 +380,18 @@
2
                 List<TimeSpan> diffs = new List<TimeSpan>();
3
                 foreach (KeyValuePair<int, Tuple<string, TimeSpan>> import in importedChapters)
4
                 {
5
-                    ChapterMarker sourceMarker = this.Chaptersimport.Key - 1;
6
-                    TimeSpan source = sourceMarker.Duration;
7
+                    int key = import.Key - 1;
8
 
9
-                    TimeSpan diff = source - import.Value.Item2;
10
-                    diffs.Add(diff);
11
+                    if (key <= (this.Chapters.Count -1))
12
+                    {
13
+                        ChapterMarker sourceMarker = this.Chapterskey;
14
+                        TimeSpan source = sourceMarker.Duration;
15
 
16
+                        TimeSpan diff = source - import.Value.Item2;
17
+                        diffs.Add(diff);
18
+                    }
19
                 }
20
 
21
-
22
-               // var diffs = importedChapters.Zip(this.Chapters, (import, source) => source.Duration - import.Value.Item2);
23
                 if (diffs.Count(diff => Math.Abs(diff.TotalSeconds) > 15) > 2)
24
                 {
25
                     if (this.errorService.ShowMessageBox(
26
1.9.0.tar.gz/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs Changed
27
 
1
@@ -2206,7 +2206,7 @@
2
 
3
             bool is_execute = false;
4
             
5
-            if ((autonameFormat.Contains(Constants.Source) || autonameFormat.Contains(Constants.SourcePath) || autonameFormat.Contains(Constants.SourceFolderName)) && option == ChangedOption.Source)
6
+            if ((autonameFormat.Contains(Constants.Source) || autonameFormat.Contains(Constants.SourcePath) || autonameFormat.Contains(Constants.SourceFolderName) || autonameFormat.Contains(Constants.Title)) && option == ChangedOption.Source)
7
             {
8
                 is_execute = true;
9
             }
10
@@ -2512,11 +2512,15 @@
11
                         this.windowsTaskbar.SetNoProgress();
12
                         this.ProgramStatusLabel = string.Format(Resources.Main_QueueMultiJobStatus, this.queueProcessor.CompletedCount, Environment.NewLine, queueJobStatuses.Count, this.queueProcessor.Count);
13
 
14
+                        this.WindowTitle = Resources.HandBrake_Title; // Percentage is not available when multiple jobs are running. 
15
+                        this.windowsTaskbar.SetTaskBarProgress(0);
16
+
17
                         this.notifyIconService.SetTooltip(string.Format(Resources.TaskTrayStatusManyTitle, Resources.HandBrake_Title, queueJobStatuses.Count));
18
                         this.IsMultiProcess = true;
19
                         this.NotifyOfPropertyChange(() => this.IsMultiProcess);
20
                     }
21
-                });
22
+                }
23
+                );
24
         }
25
 
26
         private void UserSettingServiceSettingChanged(object sender, SettingChangedEventArgs e)
27
1.9.0.tar.gz/win/CS/HandBrakeWPF/ViewModels/PictureSettingsViewModel.cs -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/ViewModels/PictureSettingsViewModel.cs Changed
9
 
1
@@ -563,6 +563,7 @@
2
             this.NotifyOfPropertyChange(() => this.ParHeight);
3
             this.NotifyOfPropertyChange(() => this.MaxWidth);
4
             this.NotifyOfPropertyChange(() => this.MaxHeight);
5
+            this.NotifyOfPropertyChange(() => this.IsCustomCrop);
6
 
7
             this.UpdateVisibleControls();
8
         }
9
1.9.0.tar.gz/win/CS/HandBrakeWPF/app.manifest -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/app.manifest Changed
9
 
1
@@ -1,6 +1,6 @@
2
 <?xml version="1.0" encoding="utf-8"?>
3
 <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
4
-  <assemblyIdentity version="1.9.0.0" name="HandBrake.app"/>
5
+  <assemblyIdentity version="1.9.1.0" name="HandBrake.app"/>
6
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
7
     <security>
8
       <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
9
1.9.0.tar.gz/win/CS/HandBrakeWPF/packages.lock.json -> 1.9.1.tar.gz/win/CS/HandBrakeWPF/packages.lock.json Changed
19
 
1
@@ -109,7 +109,7 @@
2
       "handbrake.app.core": {
3
         "type": "Project",
4
         "dependencies": {
5
-          "HandBrake.Interop": "1.9.0, )"
6
+          "HandBrake.Interop": "1.9.1, )"
7
         }
8
       },
9
       "handbrake.interop": {
10
@@ -118,7 +118,7 @@
11
       "handbrake.worker": {
12
         "type": "Project",
13
         "dependencies": {
14
-          "HandBrake.Interop": "1.9.0, )"
15
+          "HandBrake.Interop": "1.9.1, )"
16
         }
17
       }
18
     }
19
download.tar.bz2/dav1d-1.5.0.tar.bz2 Deleted
download.tar.bz2/dav1d-1.5.1.tar.bz2 Added
version.txt Changed
16
 
1
@@ -1,9 +1,9 @@
2
 URL=https://github.com/HandBrake/HandBrake.git
3
-HASH=fa9154a20f3f64fdc183a097e6b63f7fd4bc6cab
4
-SHORTHASH=fa9154a20
5
-TAG=1.9.0
6
-TAG_HASH=fa9154a20f3f64fdc183a097e6b63f7fd4bc6cab
7
+HASH=3182fa5f64422d9e3a3a581210d81468bf43b568
8
+SHORTHASH=3182fa5f6
9
+TAG=1.9.1
10
+TAG_HASH=3182fa5f64422d9e3a3a581210d81468bf43b568
11
 REV=0
12
 BRANCH=
13
 REMOTE=https://github.com/HandBrake/HandBrake.git
14
-DATE=2024-12-01 16:28:40 +0100
15
+DATE=2025-02-10 16:59:28 +0100
16
Refresh
Refresh
Request History
manfred-h's avatar

manfred-h created request 2 months ago

- Update to version 1.9.1:
* General
- Fixed FFV1 pixel format selection when an hardware decoder is used
(#6565)
- Fixed an issue that could happen when chapters titles are not UTF-8
(#6489)
- Fixed gcc14 aarch64 build failures (#6463)
* Subtitles
- Improved support for SRT files with overlapping subtitles (#6155)
* Audio
- Fixed AC3 and EAC3 extradata in MKV (#6582)
* Third-party libraries
- nv-codec-headers: Harden DLL loading so that it only uses system32 for
the search path on Windows (#6548)
- Updated libraries
- libdav1d 1.5.1 (AV1 video decoding)
- HarfBuzz 10.2.0 (subtitles)
- libjpeg-turbo 3.1.0 (preview image compression)
* Windows
- Fix an issue with the autoname function not updating when title is the
only option (#6517)
- Fix an issue where the audio encoder may not display correctly after a
queue has been imported and queue item edited. This may exhibit in other
scenarios as well (#6524)
- Fix an issue with titlebar / taskbar progress erroneously showing with
multi-instance encodes (#6477)
- Fix a crash when importing chapters where there is a chapter count
mis-match (#6514)
- Fixed an issue with autoname pre/postfix option where it would apply
regardless of file path collision.
- Fixed an issue where the crop controls would not enable correctly when
editing jobs (#6614)
- Rebuild Source1 download.tar.bz2


Malcolm Lewis's avatar

malcolmlewis accepted request 2 months ago

Looks OK to me,....