Overview
Request 6247 (accepted)
- Update to version 1.9.2:
* General
- Allowed muxing NVENC AV1 and VCN AV1 WebM container
- Fixed a crash that could happen when a source contains chapters with no
titles (#6565)
* Windows
- Fixed and issue where the audio track name would not reset on source
track change. (#6642)
- Created by manfred-h 2 months ago
- In state accepted
- 4 package maintainers
handbrake.changes
Changed
-------------------------------------------------------------------
+Mon Feb 24 06:59:59 UTC 2025 - Manfred Hollstein <manfred.h@gmx.net>
+
+- Update to version 1.9.2:
+ * General
+ - Allowed muxing NVENC AV1 and VCN AV1 WebM container
+ - Fixed a crash that could happen when a source contains chapters with no
+ titles (#6565)
+ * Windows
+ - Fixed and issue where the audio track name would not reset on source
+ track change. (#6642)
+
+-------------------------------------------------------------------
Thu Feb 13 16:30:21 UTC 2025 - Bjørn Lie <zaitor@opensuse.org>
- Drop unused pkgconfig(webkit2gtk-4.0) BuildRequires: It was only
handbrake.spec
Changed
Name: handbrake
Summary: Multithreaded Video Transcoder
-Version: 1.9.1
+Version: 1.9.2
Release: 0
Url: http://handbrake.fr/
Source0: https://github.com/HandBrake/HandBrake/archive/refs/tags/%{version}.tar.gz
1.9.1.tar.gz/NEWS.markdown -> 1.9.2.tar.gz/NEWS.markdown
Changed
- For Arm64 (Qualcomm or other)(https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-arm64.exe)
+## HandBrake 1.9.2
+
+### All platforms
+
+#### General
+
+- Allowed muxing NVENC AV1 and VCN AV1 WebM container
+- Fixed a crash that could happen when a source contains chapters with no titles (#6565)
+
+### Windows
+
+- Fixed and issue where the audio track name would not reset on source track change. (#6642)
+
## HandBrake 1.9.1
### All platforms
1.9.1.tar.gz/libhb/common.c -> 1.9.2.tar.gz/libhb/common.c
Changed
{ { "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, },
{ { "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, },
{ { "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, },
- { { "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, },
- { { "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, },
- { { "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, },
- { { "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, },
- { { "FFV1", "ffv1", "FFV1 (libavcodec)", HB_VCODEC_FFMPEG_FFV1, HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_FFV1, },
+ { { "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, },
+ { { "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, },
+ { { "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, },
+ { { "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, },
+ { { "FFV1", "ffv1", "FFV1 (libavcodec)", HB_VCODEC_FFMPEG_FFV1, HB_MUX_MASK_MKV, }, NULL, 0, 1, HB_GID_VCODEC_FFV1, },
{ { "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, },
{ { "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, },
{ { "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, },
1.9.1.tar.gz/libhb/stream.c -> 1.9.2.tar.gz/libhb/stream.c
Changed
chapter->seconds = ( seconds % 60 );
tag = av_dict_get( m->metadata, "title", NULL, 0 );
+ int valid = tag && tag->value && tag->value0;
- // Detect if the chapter title is a valid UTF-8 string
- char *p, *q;
- size_t in_size, out_size, retval;
-
- p = tag->value;
- q = utf8_buf;
+ if (valid)
+ {
+ // Detect if the chapter title is a valid UTF-8 string
+ char *p, *q;
+ size_t in_size, out_size, retval;
+
+ in_size = strlen(tag->value);
+ out_size = in_size;
+
+ if (utf8_buf_size < in_size)
+ {
+ utf8_buf = realloc(utf8_buf, in_size + 1);
+ utf8_buf_size = in_size + 1;
+ }
- in_size = strlen(tag->value);
- out_size = in_size;
+ p = tag->value;
+ q = utf8_buf;
- if (utf8_buf_size < in_size)
- {
- utf8_buf = realloc(utf8_buf, in_size);
+ retval = iconv(iconv_context, &p, &in_size, &q, &out_size);
+ valid = retval != (size_t) -1;
}
- retval = iconv(iconv_context, &p, &in_size, &q, &out_size);
- int valid = retval != (size_t) -1;
-
/* Ignore generic chapter names set by MakeMKV
* ("Chapter 00" etc.).
* Our default chapter names are better. */
- if( valid && tag && tag->value && tag->value0 &&
+ if (valid &&
( strncmp( "Chapter ", tag->value, 8 ) ||
strlen( tag->value ) > 11 ) )
{
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
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
- <FileVersion>1.9.1.0</FileVersion>
- <Version>1.9.1</Version>
+ <FileVersion>1.9.2.0</FileVersion>
+ <Version>1.9.2</Version>
<Authors>HandBrake Team</Authors>
<Description>HandBrake is an open-source, GPL-licensed, multiplatform,video transcoder.</Description>
<Copyright>Copyright © 2003-2024 HandBrake Team</Copyright>
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
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
- <FileVersion>1.9.1.0</FileVersion>
- <Version>1.9.1</Version>
+ <FileVersion>1.9.2.0</FileVersion>
+ <Version>1.9.2</Version>
<Authors>HandBrake Team</Authors>
<Description>HandBrake is an open-source, GPL-licensed, multiplatform,video transcoder.</Description>
<Copyright>Copyright © 2003-2024 HandBrake Team</Copyright>
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
It may be used under the terms of the GNU General Public License. */
!define PRODUCT_NAME "HandBrake"
-!define PRODUCT_VERSION "1.9.1"
-!define PRODUCT_VERSION_NUMBER "1.9.1"
+!define PRODUCT_VERSION "1.9.2"
+!define PRODUCT_VERSION_NUMBER "1.9.2"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\HandBrake.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
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
<PackageProjectUrl>https://handbrake.fr</PackageProjectUrl>
<RepositoryUrl>https://github.com/HandBrake/HandBrake</RepositoryUrl>
<RepositoryType>git</RepositoryType>
- <AssemblyVersion>1.9.1.0</AssemblyVersion>
+ <AssemblyVersion>1.9.2.0</AssemblyVersion>
<Platforms>AnyCPU</Platforms>
<PlatformTarget>AnyCPU</PlatformTarget>
<ApplicationIcon>handbrakepineapple.ico</ApplicationIcon>
<AssemblyName>HandBrake.Worker</AssemblyName>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
- <FileVersion>1.9.1.0</FileVersion>
- <Version>1.9.1</Version>
+ <FileVersion>1.9.2.0</FileVersion>
+ <Version>1.9.2</Version>
</PropertyGroup>
<ItemGroup>
1.9.1.tar.gz/win/CS/HandBrakeWPF/HandBrakeWPF.csproj -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
Changed
<PackageProjectUrl>https://handbrake.fr</PackageProjectUrl>
<RepositoryUrl>https://github.com/HandBrake/HandBrake</RepositoryUrl>
<RepositoryType>git</RepositoryType>
- <AssemblyVersion>1.9.1.0</AssemblyVersion>
- <Version>1.9.1</Version>
+ <AssemblyVersion>1.9.2.0</AssemblyVersion>
+ <Version>1.9.2</Version>
<Platforms>AnyCPU</Platforms>
<PlatformTarget>AnyCPU</PlatformTarget>
<ApplicationIcon>handbrakepineapple.ico</ApplicationIcon>
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
this.NotifyOfPropertyChange(() => this.ScannedTrack);
this.NotifyOfPropertyChange(() => this.TrackReference);
- if (string.IsNullOrEmpty(this.TrackName))
+ if (!string.IsNullOrEmpty(this.scannedTrack?.Name))
{
- this.TrackName = !string.IsNullOrEmpty(this.scannedTrack?.Name) ? this.scannedTrack.Name : null;
+ this.TrackName = this.scannedTrack.Name;
}
this.GetDefaultMixdownIfNull();
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
using System.Collections.Generic;
using HandBrakeWPF.Services.Logging.EventArgs;
+ using HandBrakeWPF.Services.Queue;
+ using HandBrakeWPF.Services.Queue.Interfaces;
public interface ILogInstanceManager
{
/// <param name="filename">The key of the log instance</param>
/// <returns>An ILog instance or null if invalid key</returns>
ILog GetLogInstance(string filename);
+
+ /// <summary>
+ /// Set the instance of the queue that is in-use.
+ /// </summary>
+ void SetQueue(IQueueService queueService);
}
}
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
using System.IO;
using System.Linq;
+ using HandBrakeWPF.Services.Interfaces;
using HandBrakeWPF.Services.Logging.EventArgs;
using HandBrakeWPF.Services.Logging.Interfaces;
+ using HandBrakeWPF.Services.Queue.Interfaces;
public class LogInstanceManager : ILogInstanceManager
{
+ private readonly IUserSettingService userSettingService;
+ private IQueueService queueService;
+
private readonly object instanceLock = new object();
private Dictionary<string, ILog> logInstances = new Dictionary<string, ILog>();
-
+
public event EventHandler<LogFileEventArgs> LogInstancesChanged;
+ public LogInstanceManager(IUserSettingService userSettingService)
+ {
+ this.queueService = null;
+ this.userSettingService = userSettingService;
+ }
+
public ILog ApplicationLogInstance { get; private set; }
public void Register(string filename, ILog log, bool isMaster)
public void ResetApplicationLog()
{
- this.ApplicationLogInstance.Reset();
- this.OnLogInstancesChanged(new LogFileEventArgs(this.ApplicationLogInstance.FileName, this.ApplicationLogInstance, true));
+ if (this.CanResetLog())
+ {
+ this.ApplicationLogInstance.Reset();
+ this.OnLogInstancesChanged(new LogFileEventArgs(this.ApplicationLogInstance.FileName, this.ApplicationLogInstance, true));
+ }
}
public List<string> GetLogFiles()
return null;
}
+ public void SetQueue(IQueueService queueService)
+ {
+ this.queueService = queueService;
+ }
+
protected virtual void OnLogInstancesChanged(LogFileEventArgs e)
{
this.LogInstancesChanged?.Invoke(this, e);
}
+
+ private bool CanResetLog()
+ {
+ // If we are running in-process and already encoding, don't allow log resets.
+ if (!userSettingService.GetUserSetting<bool>(UserSettingConstants.ProcessIsolationEnabled))
+ {
+ if (this.queueService.IsEncoding || this.queueService.IsPaused || this.queueService.IsProcessing)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
}
}
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
this.logInstanceManager = logInstanceManager;
this.portService = portService;
+ this.logInstanceManager.SetQueue(this);
+
// If this is the first instance, just use the main queue file, otherwise add the instance id to the filename.
this.queueFile = string.Format("{0}{1}.json", QueueRecoveryHelper.QueueFileName, GeneralUtilities.ProcessId);
1.9.1.tar.gz/win/CS/HandBrakeWPF/app.manifest -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/app.manifest
Changed
•<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
- <assemblyIdentity version="1.9.1.0" name="HandBrake.app"/>
+ <assemblyIdentity version="1.9.2.0" name="HandBrake.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
1.9.1.tar.gz/win/CS/HandBrakeWPF/packages.lock.json -> 1.9.2.tar.gz/win/CS/HandBrakeWPF/packages.lock.json
Changed
"handbrake.app.core": {
"type": "Project",
"dependencies": {
- "HandBrake.Interop": "1.9.1, )"
+ "HandBrake.Interop": "1.9.2, )"
}
},
"handbrake.interop": {
"handbrake.worker": {
"type": "Project",
"dependencies": {
- "HandBrake.Interop": "1.9.1, )"
+ "HandBrake.Interop": "1.9.2, )"
}
}
}
handbrake
Request History
manfred-h created request 2 months ago
- Update to version 1.9.2:
* General
- Allowed muxing NVENC AV1 and VCN AV1 WebM container
- Fixed a crash that could happen when a source contains chapters with no
titles (#6565)
* Windows
- Fixed and issue where the audio track name would not reset on source
track change. (#6642)
manfred-h accepted request 2 months ago