Skip to content

Commit

Permalink
0.3.9.3: init
Browse files Browse the repository at this point in the history
  • Loading branch information
zvezdochiot committed Jan 28, 2023
0 parents commit 9b24d6e
Show file tree
Hide file tree
Showing 116 changed files with 30,341 additions and 0 deletions.
119 changes: 119 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
Version: sacd_extract 0.3.9.3-75
- changed in how the content of TPE1 (Artist name) of ID3 tag is filled. If Disc/Album artist or Performer are missing from the SACD, then the TPE1 is no longer created;
- fixed a bug in concurrent ISO+DSF/DSDIFF processing mode (when folders are not identical);

----------------------------------------------------------------------------------

Version: sacd_extract 0.3.9.3-71-g781ecde73214576cf7dee777ed07511f98f7784d

added UTF-16 encodings with BOM for ID3v2.3 tags;
added id3tag=3 option for creating DSF files with ID3V2.3 tags and string encodings ISO-8859-1 (ASCII);
The ID3 tags will be created:
(id3tag=1) in ID3V2.3 version with full metadata. String encodings is UTF-16 with BOM (UCS-2);
(id3tag=2) in ID3V2.3 version with minimal medatadata*. String encodings is UTF-16 with BOM (UCS-2);
(id3tag=3) in ID3V2.3 version with full metadata. String encodings is ISO-8859-1 (ASCII);
(id3tag=4) in ID3V2.4 version with full metadata. String encodings is UTF-8;
(id3tag=5) in ID3V2.4 version with minimal metadata*. String encodings is UTF-8;
(id3tag=0) ID3tag will not be created (for testing and experimental purpose).
now the default format for ID3 tags will be ID3v2.4 format (with UTF-8 encodings).
Note: * minimal metadata contains only 4 elements: Track Title, Album Title, Artist Name and Track Number.

-----------------------------------------------------------------------------------------------------------
Version: 0.3.9.3-63-g077212b4b0e4aa2c1ff1cd53651cc4af85e58f3d Release Candidate
- added id3tag=0 (or =1, =2, =4, =5) option. At DSF conversion the ID3 tags will be created:
- (=1) in ID3V2.3 version with full metadata (Default) or with minimal medatadata* (=2);
- (=4) in ID3V2.4 version with full metadata or with minimal medatadata* (=5);
- if =0 then ID3tag will not be created (for testing and experimental purpose).

*Minimal metadata contains only 4 elements: Track Title, Album Title, Artist Name and Track Number.

- addedd logging=1 option :logging will be activated. All messages during execution of sacd_extract will be saved in 'logfile-sacd_extract.txt'.

sacd_extract.exe sha256: e56b3a31c4d4a1c41b587963a1f62dbdd47987324c02b221bfa2adb6ec8770bf
Linux sacd_extract sha256: f6c156c8d8629854a292b0174046928bd12b6cde4c704ca29660adcfce4c2fe5
-------------------------------------------------------------------------------------------------------------

Version: 0.3.9.3-51-gdeed25c3d4515e9d878c3e855cb72324958aafdf pre-release
- added concatenation option -k (--concatenate). Used in conjunction with track selection to concatenate selected tracks. Designed only for DSF format. Also, concatenate option can be set in 'sacd_extract.cfg' file as 'concatenate=1'. This allow to work ok with SACDExtractGui; Padding-less option for concatenation can be set also in 'sacd_extract.cfg' (to override the same option in SACDExtractGui which is disabled when tracks selection is enabled).Example 'nopad=0';
- fixed a bug in ID3 tag (where missing a null terminal in id3 tag text frames);
- ID3 tag are using now UTF-8 encoding;
- now 'artist' -A (--artist), 'performer' -a (--performer) and 'pauses' -b (--pauses) options can be declared in command line;

sacd_extract.exe sha256: e0f909748b427b9659b9393c2bc0fb8b676a98d85295b24d84b549d4265b350b
Linux sacd_extract sha256: 3fa8e56d2a5d395b93cf4f8af50accff10dc8676367fee1229fac4e922ffc477
----------------------------------------------------------------------------------------------------------
Version: 0.3.9.3-30-g045865607bafe3c5037f0a883aec82aec9c20d6d pre-release
- fixed -z (--dsf-nopad) not working;
- changed the name of option 'audio_frame_trimming=1' into 'pauses'. When 'pauses=1' then pauses are included in tracks.

sacd_extract.exe sha256: a97c3f6d427bf26342127aa27c89f7da4883a92c2a3499edfdd5568a23c5765f
Linux sacd_extract sha256: 2544f62c6b4e516dd929dbb5dd768021bd61c8a62d0dd7cb452579196c9da546

----------------------------------------------------------------------------------------------------------
Version: 0.3.9.3-23-gb562b812f5984d6d181dd21961d422c28484c0aa pre-release
- for dsf/dff option, audioframes counter is added for each tracks and compares with total duration to see if it misses one.

sacd_extract.exe sha256: 48d0902005637e06fae55f7656eddd954a87e990fda0bd04e13ba6a3b6c990d6
Linux sacd_extract sha256: e6075ca23f7ce4cffdf804d4c49cdfb57923e32fa33c6a14b1df49250be6ab73

------------------------------------------------------------------------------------------------------------------------------------------------
Version: 0.3.9.3-17-g80f9b52d9a211b52a7b1f019b4882c81a3a4f6b7 pre-release

Binaries compiled with cross compiler mingw64 for Windows (64bit) & Gnu 7.4.0 for Linux.
- fixed infinite loop 99% when iso files are corrupted;
- added Performer tag to dsf files;
- multi-byte chars in filenames is supported for Windows when input files are iso (using wmain);
- better management in creating folders/files/tracks names (including albums with multiple discs);
- folders are created like this: Album name/(Disc no)/(Stereo or 5ch or 6ch). If configuration file sacd_extract.cfg exist in working folder of app(which can be shown with -v option) and has text lines: 'artist=1' (and/or 'performer=1') it adds artist at the name of folder and/or adds performer at the filename of tracks;
- changed priority in title/artist extracting metadata. Now disc_title/disc_artist came first instead of album_title/album_artist (useful in case of multiple discs of an album);
- added -w (--concurrent) for compatibility with SACDExtractGUI;
- added -o (--output-dir[=DIR] ) and -y (--output-dir-conc[=DIR]) options for setting explicit output folder (for compatibility with SACDExtractGUI);
- for DSF/DFF files, the pops/crackles noise is reduced by trimming frames at track boundaries;
- audio frames are trimmed out (based on timecode) at boundaries to reflect the correct playing time of tracks specified in Tracklist. This is done for DSF/DFF files (no for DFF-EM);
- eliminates crashes when disk for output is full;
- corrected behavior in case of discs with only one multi-channel area (with no stereo area);
- added total play time for each area when printing disc info;
- now it strips out ending slash or backslash, if exists, at --output-dir or --output-dir-conc to be compatible with BatchEncoder;
- added xml metadata file export option (is activated when Cue sheet is checked). Libray libxml2 is used;
- added more integrity checks of the audio frames;
- fixed 2 BUGS which can make pops/crackles noises at the end of DSF/DFF tracks;
- added -z (--dsf-nopad) option, (now is fully compatible with SACDExtractGUI);
- added 'audio_frame_trimming=1' option in sacd_extract.cfg (see above 'audio frames are trimmed out....').

version 0.3.7

- fixed a bug where arranger phonetic was referenced incorrectly during print (-P)
- option to allow individual dsf/dsdiff track extraction
- added (foobar) compatible escaping to cuesheets
- added user optional output filename/folder (last parameter)

version 0.3.6

- network speed improvement
- added native OS X support
- gapless is on by default for individual tracks
- fixed issue where CUE export wrote to wrong filename

version 0.3.5

- added ID3 tags to Edit Master for multiple ID3 tagging
- added option to export individual CUE Sheets
- fixed DSTI table where DST Edit Master > 2GB
- fixed SACD to ID3 genre conversion table

version 0.3.4 (bug fix release, please update if running 0.3.3)

- fixed a bug where DSTI was incorrectly part of DSD chunk

version 0.3.3 (bug fix release, please update if running 0.3.2)

- fixed a bug where a wrong DSDIFF header was written for edit masters

version 0.3.2

- added DSDIFF Edit Master (single DSD file) support
- added CUE Sheet support for Edit Master
- added DST frame buffer overflow protection
- added DST frame index chunk support
- removed gapless support (replaced by DSDIFF Edit Master)
- merged Maxims optimized FIR decoder
133 changes: 133 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# CMake build file for SACD Extract

cmake_minimum_required(VERSION 2.6)

# Force to compile for Mac OS X 10.13. target (if you want the app run on all OS X versions).
# Without this adding, if build is made on a MacOS 10.15 or newer, then the app will not run on systems older than 10.15.
# You can delete this if you don't care about the Mac OS X 10.15 incompatibilty problem.
if (APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum OS X deployment version" FORCE)
set(ENV{MACOSX_DEPLOYMENT_TARGET} 10.13)
endif()

include_directories(src/libcommon src/libsacd src/libdstdec src/libid3)

# Mingw-w64 support
OPTION(MINGW64 "Mingw-w64" NO)
if (MINGW64 MATCHES "YES")
MESSAGE(STATUS "Mingw-w64 mode enabled")
SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
SET(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
SET(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
endif (MINGW64 MATCHES "YES")

execute_process(
COMMAND git describe --tags --dirty --abbrev=64
OUTPUT_VARIABLE GIT_COMMIT_HASH
RESULT_VARIABLE GIT_COMMIT_HASH_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE
)

execute_process(
COMMAND git remote get-url origin
OUTPUT_VARIABLE GIT_REPO_URL
RESULT_VARIABLE GIT_REPO_URL_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE
)

# Obtain git commit hash and repo url
if(${GIT_COMMIT_HASH_RESULT} GREATER 0)
add_definitions("-DGIT_COMMIT_HASH=NA")
else(${GIT_COMMIT_HASH_RESULT} GREATER 0)
add_definitions("-DGIT_COMMIT_HASH=${GIT_COMMIT_HASH}")
MESSAGE(STATUS "git commit hash: ${GIT_COMMIT_HASH}")
endif(${GIT_COMMIT_HASH_RESULT} GREATER 0)

if(${GIT_REPO_URL_RESULT} GREATER 0)
add_definitions("-DGIT_REPO_URL=NA")
else(${GIT_REPO_URL_RESULT} GREATER 0)
add_definitions("-DGIT_REPO_URL=\"${GIT_REPO_URL}\"")
MESSAGE(STATUS "git repo url: ${GIT_REPO_URL}")
endif(${GIT_REPO_URL_RESULT} GREATER 0)

project(sacd_extract C)

# Load some macros.
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}")

# Macros we'll need
include(CheckIncludeFile)
include(CheckFunctionExists)
include(CheckTypeSize)
include(FindThreads)

# Include directory paths
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${sacd_extract_SOURCE_DIR})

include_directories("../../libs/libcommon")
include_directories("../../libs/libdstdec")
include_directories("../../libs/libid3")
include_directories("../../libs/libsacd")

message(STATUS "libmxl2 ${LIBXML2_LIBRARIES}")
find_package(LibXml2 REQUIRED)

# Extra flags for GCC
STRING(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER)
if(NOT CMAKE_BUILD_TYPE_UPPER STREQUAL "DEBUG")
if (CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang"))
add_definitions(
-pipe
-Wall -Wextra -Wcast-align -Wpointer-arith -O3
-Wno-unused-parameter `xml2-config --cflags --libs`)
endif ()
if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm*")
add_definitions(
-msse2)
endif ()
endif ()


file(GLOB libcommon_headers src/libcommon/*.h)
file(GLOB libcommon_sources src/libcommon/*.c)
source_group(libcommon FILES ${libcommon_headers} ${libcommon_sources})

file(GLOB libdstdec_headers src/libdstdec/*.h)
file(GLOB libdstdec_sources src/libdstdec/*.c)
source_group(libdstdec FILES ${libdstdec_headers} ${libdstdec_sources})

file(GLOB libid3_headers src/libid3/*.h)
file(GLOB libid3_sources src/libid3/*.c)
source_group(libid3 FILES ${libid3_headers} ${libid3_sources})

file(GLOB libsacd_headers src/libsacd/*.h)
file(GLOB libsacd_sources src/libsacd/*.c)
source_group(libsacd FILES ${libsacd_headers} ${libsacd_sources})

file(GLOB main_headers src/*.h)
file(GLOB main_sources src/*.c)
source_group(main FILES ${main_headers} ${main_sources})

add_executable(sacd_extract
${main_headers} ${main_sources}
${libcommon_headers} ${libcommon_sources}
${libdstdec_headers} ${libdstdec_sources}
${libid3_headers} ${libid3_sources}
${libsacd_headers} ${libsacd_sources}
)

if(WIN32)
set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIRARIES} -lpthread -lws2_32 -liconv -lxml2 -static")
target_compile_options(${PROJECT_NAME} PRIVATE -municode)
target_link_libraries(${PROJECT_NAME} -municode)
add_definitions(-D_FILE_OFFSET_BITS=64)
add_definitions(-DUNICODE -D_UNICODE -DIN_LIBXML)
elseif(APPLE)
set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIRARIES} -liconv -lpthread -lxml2")
else()
add_definitions(-D_FILE_OFFSET_BITS=64)
set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIRARIES} -lpthread -lxml2")
endif()
Loading

0 comments on commit 9b24d6e

Please sign in to comment.