Changes of Revision 53
handbrake.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Mon Feb 24 06:59:59 UTC 2025 - Manfred Hollstein <manfred.h@gmx.net>
4
+
5
+- Update to version 1.9.2:
6
+ * General
7
+ - Allowed muxing NVENC AV1 and VCN AV1 WebM container
8
+ - Fixed a crash that could happen when a source contains chapters with no
9
+ titles (#6565)
10
+ * Windows
11
+ - Fixed and issue where the audio track name would not reset on source
12
+ track change. (#6642)
13
+
14
+-------------------------------------------------------------------
15
Thu Feb 13 16:30:21 UTC 2025 - Bjørn Lie <zaitor@opensuse.org>
16
17
- Drop unused pkgconfig(webkit2gtk-4.0) BuildRequires: It was only
18
handbrake.spec
Changed
10
1
2
3
Name: handbrake
4
Summary: Multithreaded Video Transcoder
5
-Version: 1.9.1
6
+Version: 1.9.2
7
Release: 0
8
Url: http://handbrake.fr/
9
Source0: https://github.com/HandBrake/HandBrake/archive/refs/tags/%{version}.tar.gz
10
1.9.1.tar.gz/NEWS.markdown -> 1.9.2.tar.gz/NEWS.markdown
Changed
21
1
2
- For Arm64 (Qualcomm or other)(https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-arm64.exe)
3
4
5
+## HandBrake 1.9.2
6
+
7
+### All platforms
8
+
9
+#### General
10
+
11
+- Allowed muxing NVENC AV1 and VCN AV1 WebM container
12
+- Fixed a crash that could happen when a source contains chapters with no titles (#6565)
13
+
14
+### Windows
15
+
16
+- Fixed and issue where the audio track name would not reset on source track change. (#6642)
17
+
18
## HandBrake 1.9.1
19
20
### All platforms
21
1.9.1.tar.gz/libhb/common.c -> 1.9.2.tar.gz/libhb/common.c
Changed
18
1
2
{ { "AV1 10-bit (SVT)", "svt_av1_10bit", "AV1 10-bit (SVT)", HB_VCODEC_SVT_AV1_10BIT, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_SVT, },
3
{ { "AV1 (Intel QSV)", "qsv_av1", "AV1 (Intel Media SDK)", HB_VCODEC_QSV_AV1, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_QSV, },
4
{ { "AV1 10-bit (Intel QSV)", "qsv_av1_10bit", "AV1 10-bit (Intel Media SDK)", HB_VCODEC_QSV_AV1_10BIT, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_QSV, },
5
- { { "AV1 (NVEnc)", "nvenc_av1", "AV1 (NVEnc)", HB_VCODEC_FFMPEG_NVENC_AV1, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_NVENC, },
6
- { { "AV1 10-bit (NVEnc)", "nvenc_av1_10bit", "AV1 10-bit (NVEnc)", HB_VCODEC_FFMPEG_NVENC_AV1_10BIT, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_NVENC, },
7
- { { "AV1 (AMD VCE)", "vce_av1", "AV1 (AMD VCE)", HB_VCODEC_FFMPEG_VCE_AV1, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_VCE, },
8
- { { "AV1 (MediaFoundation)", "mf_av1", "AV1 (MediaFoundation)", HB_VCODEC_FFMPEG_MF_AV1, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_MF, },
9
- { { "FFV1", "ffv1", "FFV1 (libavcodec)", HB_VCODEC_FFMPEG_FFV1, HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_FFV1, },
10
+ { { "AV1 (NVEnc)", "nvenc_av1", "AV1 (NVEnc)", HB_VCODEC_FFMPEG_NVENC_AV1, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_NVENC, },
11
+ { { "AV1 10-bit (NVEnc)", "nvenc_av1_10bit", "AV1 10-bit (NVEnc)", HB_VCODEC_FFMPEG_NVENC_AV1_10BIT, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_NVENC, },
12
+ { { "AV1 (AMD VCE)", "vce_av1", "AV1 (AMD VCE)", HB_VCODEC_FFMPEG_VCE_AV1, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_VCE, },
13
+ { { "AV1 (MediaFoundation)", "mf_av1", "AV1 (MediaFoundation)", HB_VCODEC_FFMPEG_MF_AV1, HB_MUX_MASK_MP4|HB_MUX_MASK_WEBM|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_AV1_MF, },
14
+ { { "FFV1", "ffv1", "FFV1 (libavcodec)", HB_VCODEC_FFMPEG_FFV1, HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_FFV1, },
15
{ { "H.264 (x264)", "x264", "H.264 (libx264)", HB_VCODEC_X264_8BIT, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_H264_X264, },
16
{ { "H.264 10-bit (x264)", "x264_10bit", "H.264 10-bit (libx264)", HB_VCODEC_X264_10BIT, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_H264_X264, },
17
{ { "H.264 (Intel QSV)", "qsv_h264", "H.264 (Intel Media SDK)", HB_VCODEC_QSV_H264, HB_MUX_MASK_MP4|HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_H264_QSV, },
18
1.9.1.tar.gz/libhb/stream.c -> 1.9.2.tar.gz/libhb/stream.c
Changed
51
1
2
chapter->seconds = ( seconds % 60 );
3
4
tag = av_dict_get( m->metadata, "title", NULL, 0 );
5
+ int valid = tag && tag->value && tag->value0;
6
7
- // Detect if the chapter title is a valid UTF-8 string
8
- char *p, *q;
9
- size_t in_size, out_size, retval;
10
-
11
- p = tag->value;
12
- q = utf8_buf;
13
+ if (valid)
14
+ {
15
+ // Detect if the chapter title is a valid UTF-8 string
16
+ char *p, *q;
17
+ size_t in_size, out_size, retval;
18
+
19
+ in_size = strlen(tag->value);
20
+ out_size = in_size;
21
+
22
+ if (utf8_buf_size < in_size)
23
+ {
24
+ utf8_buf = realloc(utf8_buf, in_size + 1);
25
+ utf8_buf_size = in_size + 1;
26
+ }
27
28
- in_size = strlen(tag->value);
29
- out_size = in_size;
30
+ p = tag->value;
31
+ q = utf8_buf;
32
33
- if (utf8_buf_size < in_size)
34
- {
35
- utf8_buf = realloc(utf8_buf, in_size);
36
+ retval = iconv(iconv_context, &p, &in_size, &q, &out_size);
37
+ valid = retval != (size_t) -1;
38
}
39
40
- retval = iconv(iconv_context, &p, &in_size, &q, &out_size);
41
- int valid = retval != (size_t) -1;
42
-
43
/* Ignore generic chapter names set by MakeMKV
44
* ("Chapter 00" etc.).
45
* Our default chapter names are better. */
46
- if( valid && tag && tag->value && tag->value0 &&
47
+ if (valid &&
48
( strncmp( "Chapter ", tag->value, 8 ) ||
49
strlen( tag->value ) > 11 ) )
50
{
51
1.9.1.tar.gz/win/CS/HandBrake.App.Core/HandBrake.App.Core.csproj -> 1.9.2.tar.gz/win/CS/HandBrake.App.Core/HandBrake.App.Core.csproj
Changed
12
1
2
3
<PropertyGroup>
4
<TargetFramework>net8.0</TargetFramework>
5
- <FileVersion>1.9.1.0</FileVersion>
6
- <Version>1.9.1</Version>
7
+ <FileVersion>1.9.2.0</FileVersion>
8
+ <Version>1.9.2</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.1.tar.gz/win/CS/HandBrake.Interop/HandBrake.Interop.csproj -> 1.9.2.tar.gz/win/CS/HandBrake.Interop/HandBrake.Interop.csproj
Changed
12
1
2
3
<PropertyGroup>
4
<TargetFramework>net8.0</TargetFramework>
5
- <FileVersion>1.9.1.0</FileVersion>
6
- <Version>1.9.1</Version>
7
+ <FileVersion>1.9.2.0</FileVersion>
8
+ <Version>1.9.2</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.1.tar.gz/win/CS/HandBrake.Nsis.Installer/Installer64.nsi -> 1.9.2.tar.gz/win/CS/HandBrake.Nsis.Installer/Installer64.nsi
Changed
12
1
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.1"
6
-!define PRODUCT_VERSION_NUMBER "1.9.1"
7
+!define PRODUCT_VERSION "1.9.2"
8
+!define PRODUCT_VERSION_NUMBER "1.9.2"
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.1.tar.gz/win/CS/HandBrake.Worker/HandBrake.Worker.csproj -> 1.9.2.tar.gz/win/CS/HandBrake.Worker/HandBrake.Worker.csproj
Changed
21
1
2
<PackageProjectUrl>https://handbrake.fr</PackageProjectUrl>
3
<RepositoryUrl>https://github.com/HandBrake/HandBrake</RepositoryUrl>
4
<RepositoryType>git</RepositoryType>
5
- <AssemblyVersion>1.9.1.0</AssemblyVersion>
6
+ <AssemblyVersion>1.9.2.0</AssemblyVersion>
7
<Platforms>AnyCPU</Platforms>
8
<PlatformTarget>AnyCPU</PlatformTarget>
9
<ApplicationIcon>handbrakepineapple.ico</ApplicationIcon>
10
11
<AssemblyName>HandBrake.Worker</AssemblyName>
12
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
13
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
14
- <FileVersion>1.9.1.0</FileVersion>
15
- <Version>1.9.1</Version>
16
+ <FileVersion>1.9.2.0</FileVersion>
17
+ <Version>1.9.2</Version>
18
</PropertyGroup>
19
20
<ItemGroup>
21
1.9.1.tar.gz/win/CS/HandBrakeWPF/HandBrakeWPF.csproj -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
Changed
12
1
2
<PackageProjectUrl>https://handbrake.fr</PackageProjectUrl>
3
<RepositoryUrl>https://github.com/HandBrake/HandBrake</RepositoryUrl>
4
<RepositoryType>git</RepositoryType>
5
- <AssemblyVersion>1.9.1.0</AssemblyVersion>
6
- <Version>1.9.1</Version>
7
+ <AssemblyVersion>1.9.2.0</AssemblyVersion>
8
+ <Version>1.9.2</Version>
9
<Platforms>AnyCPU</Platforms>
10
<PlatformTarget>AnyCPU</PlatformTarget>
11
<ApplicationIcon>handbrakepineapple.ico</ApplicationIcon>
12
1.9.1.tar.gz/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs
Changed
13
1
2
this.NotifyOfPropertyChange(() => this.ScannedTrack);
3
this.NotifyOfPropertyChange(() => this.TrackReference);
4
5
- if (string.IsNullOrEmpty(this.TrackName))
6
+ if (!string.IsNullOrEmpty(this.scannedTrack?.Name))
7
{
8
- this.TrackName = !string.IsNullOrEmpty(this.scannedTrack?.Name) ? this.scannedTrack.Name : null;
9
+ this.TrackName = this.scannedTrack.Name;
10
}
11
12
this.GetDefaultMixdownIfNull();
13
1.9.1.tar.gz/win/CS/HandBrakeWPF/Services/Logging/Interfaces/ILogInstanceManager.cs -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/Services/Logging/Interfaces/ILogInstanceManager.cs
Changed
21
1
2
using System.Collections.Generic;
3
4
using HandBrakeWPF.Services.Logging.EventArgs;
5
+ using HandBrakeWPF.Services.Queue;
6
+ using HandBrakeWPF.Services.Queue.Interfaces;
7
8
public interface ILogInstanceManager
9
{
10
11
/// <param name="filename">The key of the log instance</param>
12
/// <returns>An ILog instance or null if invalid key</returns>
13
ILog GetLogInstance(string filename);
14
+
15
+ /// <summary>
16
+ /// Set the instance of the queue that is in-use.
17
+ /// </summary>
18
+ void SetQueue(IQueueService queueService);
19
}
20
}
21
1.9.1.tar.gz/win/CS/HandBrakeWPF/Services/Logging/LogInstanceManager.cs -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/Services/Logging/LogInstanceManager.cs
Changed
73
1
2
using System.IO;
3
using System.Linq;
4
5
+ using HandBrakeWPF.Services.Interfaces;
6
using HandBrakeWPF.Services.Logging.EventArgs;
7
using HandBrakeWPF.Services.Logging.Interfaces;
8
+ using HandBrakeWPF.Services.Queue.Interfaces;
9
10
public class LogInstanceManager : ILogInstanceManager
11
{
12
+ private readonly IUserSettingService userSettingService;
13
+ private IQueueService queueService;
14
+
15
private readonly object instanceLock = new object();
16
private Dictionary<string, ILog> logInstances = new Dictionary<string, ILog>();
17
-
18
+
19
public event EventHandler<LogFileEventArgs> LogInstancesChanged;
20
21
+ public LogInstanceManager(IUserSettingService userSettingService)
22
+ {
23
+ this.queueService = null;
24
+ this.userSettingService = userSettingService;
25
+ }
26
+
27
public ILog ApplicationLogInstance { get; private set; }
28
29
public void Register(string filename, ILog log, bool isMaster)
30
31
32
public void ResetApplicationLog()
33
{
34
- this.ApplicationLogInstance.Reset();
35
- this.OnLogInstancesChanged(new LogFileEventArgs(this.ApplicationLogInstance.FileName, this.ApplicationLogInstance, true));
36
+ if (this.CanResetLog())
37
+ {
38
+ this.ApplicationLogInstance.Reset();
39
+ this.OnLogInstancesChanged(new LogFileEventArgs(this.ApplicationLogInstance.FileName, this.ApplicationLogInstance, true));
40
+ }
41
}
42
43
public List<string> GetLogFiles()
44
45
return null;
46
}
47
48
+ public void SetQueue(IQueueService queueService)
49
+ {
50
+ this.queueService = queueService;
51
+ }
52
+
53
protected virtual void OnLogInstancesChanged(LogFileEventArgs e)
54
{
55
this.LogInstancesChanged?.Invoke(this, e);
56
}
57
+
58
+ private bool CanResetLog()
59
+ {
60
+ // If we are running in-process and already encoding, don't allow log resets.
61
+ if (!userSettingService.GetUserSetting<bool>(UserSettingConstants.ProcessIsolationEnabled))
62
+ {
63
+ if (this.queueService.IsEncoding || this.queueService.IsPaused || this.queueService.IsProcessing)
64
+ {
65
+ return false;
66
+ }
67
+ }
68
+
69
+ return true;
70
+ }
71
}
72
}
73
1.9.1.tar.gz/win/CS/HandBrakeWPF/Services/Queue/QueueService.cs -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/Services/Queue/QueueService.cs
Changed
10
1
2
this.logInstanceManager = logInstanceManager;
3
this.portService = portService;
4
5
+ this.logInstanceManager.SetQueue(this);
6
+
7
// If this is the first instance, just use the main queue file, otherwise add the instance id to the filename.
8
this.queueFile = string.Format("{0}{1}.json", QueueRecoveryHelper.QueueFileName, GeneralUtilities.ProcessId);
9
10
1.9.1.tar.gz/win/CS/HandBrakeWPF/app.manifest -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/app.manifest
Changed
9
1
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.1.0" name="HandBrake.app"/>
5
+ <assemblyIdentity version="1.9.2.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.1.tar.gz/win/CS/HandBrakeWPF/packages.lock.json -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/packages.lock.json
Changed
19
1
2
"handbrake.app.core": {
3
"type": "Project",
4
"dependencies": {
5
- "HandBrake.Interop": "1.9.1, )"
6
+ "HandBrake.Interop": "1.9.2, )"
7
}
8
},
9
"handbrake.interop": {
10
11
"handbrake.worker": {
12
"type": "Project",
13
"dependencies": {
14
- "HandBrake.Interop": "1.9.1, )"
15
+ "HandBrake.Interop": "1.9.2, )"
16
}
17
}
18
}
19