Changes of Revision 11

ffhevc.changes Changed
x
 
1
@@ -1,4 +1,16 @@
2
 -------------------------------------------------------------------
3
+Mon Nov 08 10:10:00 UTC 2016 - neutrino8@opensuse.org
4
+
5
+- Update to version 2.9.6
6
+  * Added support for encoding to TrueHD audio. Requires a very
7
+    recent ffmpeg version, preferably latest from git
8
+  * Some small improvements to the additional container output
9
+  * Moved the video_deinterlace_func() function inside the actual
10
+    deinterlace code
11
+  * Update to the README file
12
+  * Update to the man page
13
+
14
+-------------------------------------------------------------------
15
 Mon Nov 07 16:25:00 UTC 2016 - neutrino8@opensuse.org
16
 
17
 - Update to version 2.9.5
18
ffhevc.spec Changed
10
 
1
@@ -17,7 +17,7 @@
2
 
3
 
4
 Name:           ffhevc
5
-Version:        2.9.5
6
+Version:        2.9.6
7
 Release:        0
8
 Summary:        A small shell script for encoding to H.265/HEVC with ffmpeg
9
 License:        GPL-2.0+
10
ffhevc-2.9.5.tar.gz/ChangeLog -> ffhevc-2.9.6.tar.gz/ChangeLog Changed
14
 
1
@@ -1,3 +1,12 @@
2
+2016-11-08 - ffhevc 2.9.6
3
+   * Added support for encoding to TrueHD audio. Requires a very recent
4
+     ffmpeg version, preferably latest from git
5
+   * Some small improvements to the additional container output
6
+   * Moved the video_deinterlace_func() function inside the actual
7
+     deinterlace code
8
+   * Update to the README file
9
+   * Update to the man page
10
+   
11
 2016-11-07 - ffhevc 2.9.5
12
    * Cosmetics in the code for deinterlacing
13
    * Instead of skipping FPS conversion if the FPS can't be detected,
14
ffhevc-2.9.5.tar.gz/README -> ffhevc-2.9.6.tar.gz/README Changed
10
 
1
@@ -17,7 +17,7 @@
2
 - it supports copying virtually an unlimited amount of subtitles.
3
 - it creates the final output directory if user provides a path in addition to the output name.
4
 - it supports virtually an unlimited amount of audio tracks.
5
-- it supports encoding audio to AC-3, E-AC-3, DTS, MP3, Vorbis, Opus, FLAC, PCM or AAC or copying an audio track.
6
+- it supports encoding audio to AC-3, E-AC-3, TrueHD, DTS, MP3, Vorbis, Opus, FLAC, PCM or AAC or copying an audio track.
7
 - it supports setting the nice value in the config file.
8
 - it supports a limited amount of user-provided metadata.
9
 - it optionally scales the video.
10
ffhevc-2.9.5.tar.gz/ffhevc -> ffhevc-2.9.6.tar.gz/ffhevc Changed
198
 
1
@@ -2,8 +2,8 @@
2
 #
3
 # Small script to encode to H.265/HEVC video using FFmpeg and libx265.
4
 # Author: Grozdan "microchip" Nikolov <neutrino8@opensuse.org>
5
-# Version: 2.9.5
6
-# Date: 2016-11-07
7
+# Version: 2.9.6
8
+# Date: 2016-11-08
9
 #
10
 # ffhevc is free software ; you can redistribute it and/or modify
11
 # it under the terms of the GNU General Public License as published by
12
@@ -23,7 +23,7 @@
13
 brown() { echo -e "\e[0;33m$1\e[0;39;49m"; }
14
 error() { echo -e "\e[1;31m$1\e[0;39;49m"; }
15
 
16
-version="2.9.5"
17
+version="2.9.6"
18
 
19
 CFG="$HOME/.ffhevc"
20
 cfgversion="28"
21
@@ -567,12 +567,12 @@
22
    fi
23
 fi
24
 
25
-# Used by mc deinterlace and FPS conversion
26
+# Used by mc/bobbing deinterlace and FPS conversion
27
 video_fps_func() {
28
    GETFPS="$($FFPROBE -i "$input" -select_streams v:0 -show_entries stream=r_frame_rate 2>&1 | sed -n 's|^r_frame_rate=||p')"
29
 }
30
 
31
-# Used by mc deinterlace and interlace-aware encoding
32
+# Used by mc/bobbing deinterlace and interlace-aware encoding
33
 video_field_parity_func() {
34
    echo
35
    green "-> Detecting Field Parity..."
36
@@ -598,24 +598,23 @@
37
 }
38
 
39
 if [ "$VID_DEINTERLACE" = "y" ]; then
40
-   video_deinterlace_func() {
41
-       printf "Use Motion-Compensation Deinterlacing? [y/N]: "
42
-       read mcd
43
-       if [ "$mcd" = "y" -o "$mcd" = "Y" ]; then
44
-           video_field_parity_func
45
-           printf "Specify the Field Parity of the Input File [tff/bff - default is $defpar]: "
46
-           read par
47
-           test -z "$par" && fpar="$defpar" || fpar="$par"
48
-       fi
49
-       case "$1" in
50
-           ofps)   test ! -z "$fpar" && deinterlace="yadif=1,mcdeint=mode=medium:parity=$fpar:qp=10,framestep=step=2," || deinterlace="yadif=0," ;;
51
-           bob)    test ! -z "$fpar" && deinterlace="yadif=1,mcdeint=mode=medium:parity=$fpar:qp=10," || deinterlace="yadif=1," ;;
52
-       esac
53
-   }
54
-   
55
    printf "Deinterlace the Input File? [y/N]: "
56
    read deint
57
    if [ "$deint" = "y" -o "$deint" = "Y" ]; then
58
+       video_deinterlace_func() {
59
+           printf "Use Motion-Compensation Deinterlacing? [y/N]: "
60
+           read mcd
61
+           if [ "$mcd" = "y" -o "$mcd" = "Y" ]; then
62
+               video_field_parity_func
63
+               printf "Specify the Field Parity of the Input File [tff/bff - default is $defpar]: "
64
+               read par
65
+               test -z "$par" && fpar="$defpar" || fpar="$par"
66
+           fi
67
+           case "$1" in
68
+               ofps)   test ! -z "$fpar" && deinterlace="yadif=1,mcdeint=mode=medium:parity=$fpar:qp=10,framestep=step=2," || deinterlace="yadif=0," ;;
69
+               bob)    test ! -z "$fpar" && deinterlace="yadif=1,mcdeint=mode=medium:parity=$fpar:qp=10," || deinterlace="yadif=1," ;;
70
+           esac
71
+       }
72
        echo
73
        brown " Deinterlace Methods"
74
        brown " ~~~~~~~~~~~~~~~~~~~"
75
@@ -683,7 +682,7 @@
76
 fi
77
 
78
 if [ -z "$deinterlace" ]; then
79
-   printf "Enable Interlace-aware encoding? [y/N]: "
80
+   printf "Enable Interlace-aware Encoding? [y/N]: "
81
    read intaw
82
    if [ "$intaw" = "y" -o "$intaw" = "Y" ]; then
83
        video_field_parity_func
84
@@ -1059,6 +1058,7 @@
85
    echo " Opus ----> Channels Support: 8 (ffmpeg max)"
86
    echo " Vorbis --> Channels Support: 8 (ffmpeg max)"
87
    echo " MP3 -----> Channels Support: 2 (codec max)"
88
+   echo " TrueHD --> Channels Support: 6 (encoder max)"
89
    echo " FLAC ----> Channels Support: 8 (codec max)"
90
    echo " PCM -----> Channels Support: 8 (ffmpeg max)"
91
    echo " COPY ----> Channels Support: depends on audio codec"
92
@@ -1092,6 +1092,14 @@
93
            abropts[i]="32-6144"
94
            abrdef[i]="768"
95
            ;;
96
+           truehd)
97
+           strict="-strict -2"
98
+           acdc[i]="truehd"
99
+           ameta[i]="TrueHD"
100
+           abropts[i]="1000-18000"
101
+           abrdef[i]="5000"
102
+           skiptfs="1"
103
+           ;;
104
            dts)
105
            strict="-strict -2"
106
            acdc[i]="dca"
107
@@ -1178,7 +1186,7 @@
108
        case "$CON" in
109
            mp4)
110
            case "${acodec[i]}" in
111
-               pcm|opus|flac)
112
+               pcm|opus|flac|truehd)
113
                error "-> $(echo "${acodec[i]}" | tr '[:lower:]' '[:upper:]') is not supported by the MP4 container!"
114
                error "-> Check your config file, if needed, in '$CFG'"
115
                exit 1
116
@@ -1226,7 +1234,7 @@
117
            esac
118
            
119
            case "${acodec[i]}" in
120
-               ac3|eac3|dts|aac|fdk*|mp3|vorbis|opus|"")
121
+               ac3|eac3|truehd|dts|aac|fdk*|mp3|vorbis|opus|"")
122
                printf "Track $i: Specify the Audio Bitrate in kbps [${abropts[i]} - default is ${abrdef[i]}]: "
123
                read abr[i]
124
                test -z "${abr[i]}" && abitrate[i]="${abrdef[i]}k" || abitrate[i]="${abr[i]}k"
125
@@ -1236,7 +1244,7 @@
126
            esac
127
            
128
            case "${acodec[i]}" in
129
-               ac3|eac3|dts|"")        chanrange[i]="1-6"; defchan[i]="6" ;;
130
+               ac3|eac3|truehd|dts|"")     chanrange[i]="1-6"; defchan[i]="6" ;;
131
                aac|opus|vorbis|flac|pcm)   chanrange[i]="1-8"; defchan[i]="8" ;;
132
                mp3)                chanrange[i]="1-2"; defchan[i]="2" ;;
133
                fdk*)
134
@@ -1265,13 +1273,14 @@
135
                ;;
136
            esac
137
            case "${acodec[i]}" in
138
-               ac3|eac3|"")
139
+               ac3|eac3|truehd|"")
140
                case "${ach[i]}" in
141
                    [1-6]) true ;;
142
                    *)
143
                    case "${acodec[i]}" in
144
                        ac3|"") error "-> AC-3 supports only 1-6 channels!" ;;
145
                        eac3)   error "-> E-AC-3 encoder in ffmpeg supports only 1-6 channels!" ;;
146
+                       truehd) error "-> TrueHD encoder in ffmpeg supports only 1-6 channels!" ;;
147
                    esac
148
                    exit 1
149
                    ;;
150
@@ -1424,7 +1433,7 @@
151
                            ;;
152
                        esac
153
                        ;;
154
-                       vorbis|pcm)
155
+                       vorbis|pcm|truehd)
156
                        brown " Supported Sample Rates"
157
                        brown " ~~~~~~~~~~~~~~~~~~~~~~"
158
                        echo " 0 -> 8000 Hz     5 -> 24000 Hz    10 -> 88200 Hz"
159
@@ -1480,7 +1489,7 @@
160
            mp4)
161
            for a in $(eval echo "{1..$MAX_AUD_TRACKS}"); do
162
                case "${acodec[a]}" in
163
-                   pcm|opus|flac)
164
+                   pcm|opus|flac|truehd)
165
                    error "-> Additional container $i does not support ${acodec[a]} audio!"
166
                    error "-> See: $formats_url"
167
                    exit 1
168
@@ -1503,6 +1512,11 @@
169
    # Haven't found a reliable way to make it work with
170
    # FLAC and PCM audio so just skip this if one of
171
    # these audio codecs is chosen. Patch welcome
172
+   # In case of TrueHD, while we support setting the
173
+   # bitrate, that codec is variable in nature and
174
+   # the actual bitrate can wildly fluctuate, which
175
+   # will result in miscalculation for the target
176
+   # size by an unknown amount
177
    if [ -z "$skiptfs" ]; then
178
        echo
179
        printf "Set a Target File Size? [y/N]: "
180
@@ -1619,12 +1633,13 @@
181
 echo "" >> "$OUTFILE.sh"
182
 if [ ! -z "$extracon" ]; then
183
    for i in $extracon; do
184
-       echo "$FFMPEG -i \"$OUTPUT\" -map 0 -c copy \"${OUTPUT%.*}.$i\"" >> "$OUTFILE.sh"
185
-       echo "" >> "$OUTFILE.sh"
186
+       echo "echo" >> "$OUTFILE.sh"
187
+       echo "echo -e \"\e[1;32m-> Converting to $i...\e[0;39;49m\"" >> "$OUTFILE.sh"
188
+       echo "$FFMPEG -i \"$OUTPUT\" -map 0 -c copy \"${OUTPUT%.*}.$i\" >/dev/null 2>&1" >> "$OUTFILE.sh"
189
+       echo "test \"\$?\" = \"0\" && echo -e \"\e[1;32m-> Done\e[0;39;49m\" || echo -e \"\e[1;31m-> Failed!\e[0;39;49m\"" >> "$OUTFILE.sh"
190
    done
191
+   echo "echo" >> "$OUTFILE.sh"
192
 fi
193
 chmod +x "$OUTFILE.sh"
194
 
195
 source "$OUTFILE.sh"
196
-
197
-exit $?
198
ffhevc-2.9.5.tar.gz/ffhevc.1 -> ffhevc-2.9.6.tar.gz/ffhevc.1 Changed
21
 
1
@@ -3,7 +3,7 @@
2
 .de IPs
3
 .IP "\\$1"
4
 ..
5
-.TH ffhevc 1 "Sep 05, 2016"
6
+.TH ffhevc 1 "Nov 07, 2016"
7
 .SH NAME
8
 ffhevc
9
 
10
@@ -14,8 +14,8 @@
11
 
12
 .SH DESCRIPTION
13
 \fBffhevc\fR is a small, yet quite capable shell script for encoding to the H.265/HEVC video
14
-format. It uses the FFmpeg encoder and the libx265 library. \fBffhevc\fR supports the basic
15
-requirements for video encoding coupled with support for encoding multiple audio tracks
16
+format. It uses the FFmpeg encoder and the libx265 library. \fBffhevc\fR supports mostly the
17
+basic requirements for video encoding coupled with support for encoding multiple audio tracks
18
 and copying multiple subtitles. \fBffhevc\fR only supports as input video files so it is
19
 not possible to encode directly from a DVD/BD drive or an ISO image.
20
 .LP
21