Projects
Multimedia
handbrake
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 20
View file
handbrake.changes
Changed
@@ -1,4 +1,44 @@ ------------------------------------------------------------------- +Mon Feb 27 23:28:43 UTC 2017 - joerg.lorenzen@ki.tng.de + +- update to version 1.0.3 + + Video + - Fixed H.264 decoding using Libav where the initial GOP was + dropped. + - Fixed 2-pass x265 encoding where the source header + incorrectly specifies frame rate. + - Fixed 2-pass encoding with bob deinterlace and constant frame + rate. + - Fixed a seek issue in Libav while reading MKV sources with + embedded subtitles. + - Fixed multiple issues preventing Libav from opening WMV + sources properly. + - Fixed miscellaneous issues in Libav. + - Fixed memory leaks in OpenCL. + - Improved sync for streams delayed by a large amount. + + Audio + - Fixed a Libav crash encoding AAC at very high bitrates. + - Fixed a potential hang in Libav while decoding AAC. + - Improved Libav audio sync with MP4 sources containing edit + lists. + - Improved mapping of single channel layouts to single channel + layouts. + + Linux + - Fixed a potential crash when selecting video encoders. + - Fixed various controls not applying values properly. + + Mac + - Fixed a crash when attempting to edit a queued job. + - Improved audio start point to use edit lists when encoding + using CoreAudio AAC. + + Windows + - Fixed Title Specific Scan for DVD/Blu-ray. + - Fixed broken/missing NLMeans denoise tunes. + - Fixed an issue that could cause error -17 when encoding using + Intel QuickSync Video. + - Fixed an issue where the SRT language code was not being set + correctly. + +------------------------------------------------------------------- Sun Feb 12 14:26:07 UTC 2017 - pascal.bleser@opensuse.org - use its own static build of libbluray as it requires a patch
View file
handbrake.spec
Changed
@@ -18,7 +18,7 @@ Name: handbrake Summary: Multithreaded Video Transcoder -Version: 1.0.2 +Version: 1.0.3 Release: 1 Url: http://handbrake.fr/ Source0: https://handbrake.fr/mirror/HandBrake-%{version}.tar.bz2
View file
HandBrake-1.0.2.tar.bz2/NEWS.markdown -> HandBrake-1.0.3.tar.bz2/NEWS.markdown
Changed
@@ -1,5 +1,45 @@ # HandBrake News +## HandBrake 1.0.3 + +### All platforms + +#### Video + +- Fixed H.264 decoding using Libav where the initial GOP was dropped +- Fixed 2-pass x265 encoding where the source header incorrectly specifies frame rate +- Fixed 2-pass encoding with bob deinterlace and constant frame rate +- Fixed a seek issue in Libav while reading MKV sources with embedded subtitles +- Fixed multiple issues preventing Libav from opening WMV sources properly +- Fixed miscellaneous issues in Libav +- Fixed memory leaks in OpenCL +- Improved sync for streams delayed by a large amount + +#### Audio + +- Fixed a Libav crash encoding AAC at very high bitrates +- Fixed a potential hang in Libav while decoding AAC +- Improved Libav audio sync with MP4 sources containing edit lists +- Improved mapping of single channel layouts to single channel layouts + +### Linux + +- Fixed a potential crash when selecting video encoders +- Fixed various controls not applying values properly + +### Mac + +- Fixed a crash when attempting to edit a queued job +- Improved audio start point to use edit lists when encoding using CoreAudio AAC + +### Windows + +- Fixed Title Specific Scan for DVD/Blu-ray +- Fixed broken/missing NLMeans denoise tunes +- Fixed an issue that could cause error -17 when encoding using Intel QuickSync Video +- Fixed an issue where the SRT language code was not being set correctly + + ## HandBrake 1.0.2 ### All platforms
View file
HandBrake-1.0.3.tar.bz2/contrib/ffmpeg/A05-h264-recovery.patch
Added
@@ -0,0 +1,20 @@ +diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c +index 5137039..6d7aa7b 100644 +--- a/libavcodec/h264dec.c ++++ b/libavcodec/h264dec.c +@@ -452,7 +452,6 @@ void ff_h264_flush_change(H264Context *h) + if (h->cur_pic_ptr) + h->cur_pic_ptr->reference = 0; + h->first_field = 0; +- ff_h264_sei_uninit(&h->sei); + h->recovery_frame = -1; + h->frame_recovered = 0; + } +@@ -466,6 +465,7 @@ static void flush_dpb(AVCodecContext *avctx) + memset(h->delayed_pic, 0, sizeof(h->delayed_pic)); + + ff_h264_flush_change(h); ++ ff_h264_sei_uninit(&h->sei); + + for (i = 0; i < H264_MAX_PICTURE_COUNT; i++) + ff_h264_unref_picture(h, &h->DPB[i]);
View file
HandBrake-1.0.3.tar.bz2/contrib/ffmpeg/A06-edit-list-offset.patch
Added
@@ -0,0 +1,76 @@ +diff --git a/libavformat/isom.h b/libavformat/isom.h +index 8cc5ab7..0050d3a 100644 +--- a/libavformat/isom.h ++++ b/libavformat/isom.h +@@ -125,6 +125,8 @@ typedef struct MOVStreamContext { + int *keyframes; + int time_scale; + int64_t time_offset; ///< time offset of the first edit list entry ++ int64_t delay; ///< time delay of the first edit list entry ++ int64_t skip; ///< time to skip of the first or second edit list entry + int current_sample; + unsigned int bytes_per_frame; + unsigned int samples_per_frame; +diff --git a/libavformat/mov.c b/libavformat/mov.c +index 5c9f85c..c749b46 100644 +--- a/libavformat/mov.c ++++ b/libavformat/mov.c +@@ -2323,9 +2323,9 @@ static void mov_build_index(MOVContext *mov, AVStream *st) + uint64_t stream_size = 0; + + /* adjust first dts according to edit list */ +- if (sc->time_offset && mov->time_scale > 0) { +- if (sc->time_offset < 0) +- sc->time_offset = av_rescale(sc->time_offset, sc->time_scale, mov->time_scale); ++ if (mov->time_scale > 0) { ++ sc->time_offset = sc->skip - ++ av_rescale(sc->delay, sc->time_scale, mov->time_scale); + current_dts = -sc->time_offset; + } + +@@ -2986,6 +2986,10 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) + unsigned entries, first_sample_flags = frag->flags; + int flags, distance, i, err; + ++ if (c->time_scale > 0) { ++ sc->time_offset = sc->skip - ++ av_rescale(sc->delay, sc->time_scale, c->time_scale); ++ } + for (i = 0; i < c->fc->nb_streams; i++) { + if (c->fc->streams[i]->id == frag->track_id) { + st = c->fc->streams[i]; +@@ -3152,6 +3156,7 @@ static int mov_read_elst(MOVContext *c, AVIOContext *pb, MOVAtom atom) + { + MOVStreamContext *sc; + int i, edit_count, version; ++ int found_delay = 0; + + if (c->fc->nb_streams < 1) + return 0; +@@ -3164,7 +3169,7 @@ static int mov_read_elst(MOVContext *c, AVIOContext *pb, MOVAtom atom) + if ((uint64_t)edit_count*12+8 > atom.size) + return AVERROR_INVALIDDATA; + +- for (i=0; i<edit_count; i++){ ++ for (i=0; i < edit_count; i++){ + int64_t time; + int64_t duration; + if (version == 1) { +@@ -3175,8 +3180,15 @@ static int mov_read_elst(MOVContext *c, AVIOContext *pb, MOVAtom atom) + time = (int32_t)avio_rb32(pb); /* media time */ + } + avio_rb32(pb); /* Media rate */ +- if (i == 0 && time >= -1) { +- sc->time_offset = time != -1 ? time : -duration; ++ if (i == 0 && time == -1) { ++ sc->delay = duration; ++ found_delay = 1; ++ } ++ else if (i == 0 && time >= 0) { ++ sc->skip = time; ++ } ++ else if (i == 1 && found_delay && time >= 0) { ++ sc->skip = time; + } + } +
View file
HandBrake-1.0.3.tar.bz2/contrib/ffmpeg/A07-wmv-crash.patch
Added
@@ -0,0 +1,31 @@ +From 8e67039c6312ba520945f2c01b7b14df056d5ed1 Mon Sep 17 00:00:00 2001 +From: John Stebbins <stebbins@jetheaddev.com> +Date: Thu, 12 Jan 2017 13:36:26 -0700 +Subject: [PATCH] asfdec: Use the ASF stream count when iterating + +The AVFormat stream count can be larger due external factors, such as +an id3 tag appended. + +Avoid an out of bound read. + +Signed-off-by: Luca Barbato <lu_zero@gentoo.org> +--- + libavformat/asfdec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c +index 1c50ad6..d602af8 100644 +--- a/libavformat/asfdec.c ++++ b/libavformat/asfdec.c +@@ -1485,7 +1485,7 @@ static int asf_read_packet(AVFormatContext *s, AVPacket *pkt) + asf->return_subpayload = 0; + return 0; + } +- for (i = 0; i < s->nb_streams; i++) { ++ for (i = 0; i < asf->nb_streams; i++) { + ASFPacket *asf_pkt = &asf->asf_st[i]->pkt; + if (asf_pkt && !asf_pkt->size_left && asf_pkt->data_size) { + if (asf->asf_st[i]->span > 1 && +-- +2.9.3 +
View file
HandBrake-1.0.3.tar.bz2/contrib/ffmpeg/A08-wmv-scan-fail.patch
Added
@@ -0,0 +1,117 @@ +From 0539d84d985e811e5989ef27c13f7e2dda0f9b89 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= + <alexandra.khirnova@gmail.com> +Date: Wed, 8 Feb 2017 12:51:37 +0100 +Subject: [PATCH] asfdec: Account for different Format Data sizes + +Some muxers may use the BMP_HEADER Format Data size instead +of the ASF-specific one. + +Bug-Id: 1020 +CC: libav-stable@libav.org + +Signed-off-by: Diego Biurrun <diego@biurrun.de> +--- + libavformat/asfdec.c | 12 +++++++----- + libavformat/avidec.c | 2 +- + libavformat/riff.h | 3 ++- + libavformat/riffdec.c | 6 ++++-- + libavformat/wtv.c | 2 +- + 5 files changed, 15 insertions(+), 10 deletions(-) + +diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c +index d602af8..34730b2 100644 +--- a/libavformat/asfdec.c ++++ b/libavformat/asfdec.c +@@ -691,20 +691,22 @@ static int asf_read_properties(AVFormatContext *s, const GUIDParseTable *g) + + static int parse_video_info(AVIOContext *pb, AVStream *st) + { +- uint16_t size; ++ uint16_t size_asf; // ASF-specific Format Data size ++ uint32_t size_bmp; // BMP_HEADER-specific Format Data size + unsigned int tag; + + st->codecpar->width = avio_rl32(pb); + st->codecpar->height = avio_rl32(pb); + avio_skip(pb, 1); // skip reserved flags +- size = avio_rl16(pb); // size of the Format Data +- tag = ff_get_bmp_header(pb, st); ++ size_asf = avio_rl16(pb); ++ tag = ff_get_bmp_header(pb, st, &size_bmp); + st->codecpar->codec_tag = tag; + st->codecpar->codec_id = ff_codec_get_id(ff_codec_bmp_tags, tag); ++ size_bmp = FFMAX(size_asf, size_bmp); + +- if (size > BMP_HEADER_SIZE) { ++ if (size_bmp > BMP_HEADER_SIZE) { + int ret; +- st->codecpar->extradata_size = size - BMP_HEADER_SIZE; ++ st->codecpar->extradata_size = size_bmp - BMP_HEADER_SIZE; + if (!(st->codecpar->extradata = av_malloc(st->codecpar->extradata_size + + AV_INPUT_BUFFER_PADDING_SIZE))) { + st->codecpar->extradata_size = 0; +diff --git a/libavformat/avidec.c b/libavformat/avidec.c +index 701cccb..870066e 100644 +--- a/libavformat/avidec.c ++++ b/libavformat/avidec.c +@@ -613,7 +613,7 @@ static int avi_read_header(AVFormatContext *s) + avio_skip(pb, size); + break; + } +- tag1 = ff_get_bmp_header(pb, st); ++ tag1 = ff_get_bmp_header(pb, st, NULL); + + if (tag1 == MKTAG('D', 'X', 'S', 'B') || + tag1 == MKTAG('D', 'X', 'S', 'A')) { +diff --git a/libavformat/riff.h b/libavformat/riff.h +index a45c7f3..e5f4645 100644 +--- a/libavformat/riff.h ++++ b/libavformat/riff.h +@@ -41,9 +41,10 @@ void ff_end_tag(AVIOContext *pb, int64_t start); + /** + * Read BITMAPINFOHEADER structure and set AVStream codec width, height and + * bits_per_encoded_sample fields. Does not read extradata. ++ * Writes the size of the BMP file to *size. + * @return codec tag + */ +-int ff_get_bmp_header(AVIOContext *pb, AVStream *st); ++int ff_get_bmp_header(AVIOContext *pb, AVStream *st, uint32_t *size); + + void ff_put_bmp_header(AVIOContext *pb, AVCodecParameters *par, const AVCodecTag *tags, int for_asf); + int ff_put_wav_header(AVFormatContext *s, AVIOContext *pb, AVCodecParameters *par); +diff --git a/libavformat/riffdec.c b/libavformat/riffdec.c +index 8124835..db83b32 100644 +--- a/libavformat/riffdec.c ++++ b/libavformat/riffdec.c +@@ -180,10 +180,12 @@ enum AVCodecID ff_wav_codec_get_id(unsigned int tag, int bps) + return id; + } + +-int ff_get_bmp_header(AVIOContext *pb, AVStream *st) ++int ff_get_bmp_header(AVIOContext *pb, AVStream *st, uint32_t *size) + { + int tag1; +- avio_rl32(pb); /* size */ ++ uint32_t size_ = avio_rl32(pb); ++ if (size) ++ *size = size_; + st->codecpar->width = avio_rl32(pb); + st->codecpar->height = (int32_t)avio_rl32(pb); + avio_rl16(pb); /* planes */ +diff --git a/libavformat/wtv.c b/libavformat/wtv.c +index 794dd4b..d750cef 100644 +--- a/libavformat/wtv.c ++++ b/libavformat/wtv.c +@@ -586,7 +586,7 @@ static int parse_videoinfoheader2(AVFormatContext *s, AVStream *st) + AVIOContext *pb = wtv->pb; + + avio_skip(pb, 72); // picture aspect ratio is unreliable +- ff_get_bmp_header(pb, st); ++ ff_get_bmp_header(pb, st, NULL); + + return 72 + 40; + } +-- +2.9.3 +
View file
HandBrake-1.0.3.tar.bz2/contrib/ffmpeg/A13-mkv-fix-seek-crash.patch
Added
@@ -0,0 +1,57 @@ +From 4b73e7f3606fe0a33c258c802998b4e24ae24fb0 Mon Sep 17 00:00:00 2001 +From: John Stebbins <stebbins@jetheaddev.com> +Date: Tue, 21 Feb 2017 15:14:51 -0700 +Subject: [PATCH] matroskadec: remove broken subtitle seek code + +It looks up an index on one stream, and then uses that index on a +different stream. If nb_index_entries is different on the streams, +kaboom! +--- + libavformat/matroskadec.c | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c +index 4e121b6..d88088a 100644 +--- a/libavformat/matroskadec.c ++++ b/libavformat/matroskadec.c +@@ -2693,7 +2693,7 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index, + MatroskaDemuxContext *matroska = s->priv_data; + MatroskaTrack *tracks = NULL; + AVStream *st = s->streams[stream_index]; +- int i, index, index_sub, index_min; ++ int i, index; + + /* Parse the CUES now since we need the index data to seek. */ + if (matroska->cues_parsing_deferred) { +@@ -2720,27 +2720,15 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index, + if (index < 0) + return 0; + +- index_min = index; + tracks = matroska->tracks.elem; + for (i = 0; i < matroska->tracks.nb_elem; i++) { + tracks[i].audio.pkt_cnt = 0; + tracks[i].audio.sub_packet_cnt = 0; + tracks[i].audio.buf_timecode = AV_NOPTS_VALUE; + tracks[i].end_timecode = 0; +- if (tracks[i].type == MATROSKA_TRACK_TYPE_SUBTITLE && +- tracks[i].stream->discard != AVDISCARD_ALL) { +- index_sub = av_index_search_timestamp( +- tracks[i].stream, st->index_entries[index].timestamp, +- AVSEEK_FLAG_BACKWARD); +- if (index_sub >= 0 && +- st->index_entries[index_sub].pos < st->index_entries[index_min].pos && +- st->index_entries[index].timestamp - +- st->index_entries[index_sub].timestamp < 30000000000 / matroska->time_scale) +- index_min = index_sub; +- } + } + +- avio_seek(s->pb, st->index_entries[index_min].pos, SEEK_SET); ++ avio_seek(s->pb, st->index_entries[index].pos, SEEK_SET); + matroska->current_id = 0; + matroska->skip_to_keyframe = !(flags & AVSEEK_FLAG_ANY); + matroska->skip_to_timecode = st->index_entries[index].timestamp; +-- +2.9.3 +
View file
HandBrake-1.0.3.tar.bz2/contrib/ffmpeg/A14-aacenc-high-bitrate-crash.patch
Added
@@ -0,0 +1,28 @@ +From 7facbe6793a89ffeda7230d39fce8ccb5ce76208 Mon Sep 17 00:00:00 2001 +From: John Stebbins <stebbins@jetheaddev.com> +Date: Thu, 23 Feb 2017 15:42:02 -0700 +Subject: [PATCH] aacenc: fix crash when encoding at high bitrates + +Increases the size of the AVPacket being written into. Although the aac +spec says the max packet size should be 768 * channel count, aacenc +overshoots this and requires a larger buffer. +--- + libavcodec/aacenc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c +index 9b0e99b..b63affc 100644 +--- a/libavcodec/aacenc.c ++++ b/libavcodec/aacenc.c +@@ -572,7 +572,7 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, + } + start_ch += chans; + } +- if ((ret = ff_alloc_packet(avpkt, 768 * s->channels))) { ++ if ((ret = ff_alloc_packet(avpkt, 8192 * s->channels))) { + av_log(avctx, AV_LOG_ERROR, "Error getting output packet\n"); + return ret; + } +-- +2.9.3 +
View file
HandBrake-1.0.3.tar.bz2/contrib/ffmpeg/A15-asf-2G.patch
Added
@@ -0,0 +1,27 @@ +From 93de850f0fe3dc0084aba1933b57f0a0c0344d15 Mon Sep 17 00:00:00 2001 +From: John Stebbins <stebbins@jetheaddev.com> +Date: Thu, 23 Feb 2017 16:47:58 -0700 +Subject: [PATCH] asfdec: fix reading files larger than 2GB + +avio_skip returns file position and overflows int +--- + libavformat/asfdec.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c +index 34730b2..10d3396 100644 +--- a/libavformat/asfdec.c ++++ b/libavformat/asfdec.c +@@ -976,7 +976,8 @@ static int asf_read_simple_index(AVFormatContext *s, const GUIDParseTable *g) + uint64_t interval; // index entry time interval in 100 ns units, usually it's 1s + uint32_t pkt_num, nb_entries; + int32_t prev_pkt_num = -1; +- int i, ret; ++ int i; ++ int64_t ret; + uint64_t size = avio_rl64(pb); + + // simple index objects should be ordered by stream number, this loop tries to find +-- +2.9.3 +
View file
HandBrake-1.0.3.tar.bz2/contrib/ffmpeg/A16-decoder-hang-eagain.patch
Added
@@ -0,0 +1,71 @@ +diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c +index 6a06062..0e629ce 100644 +--- a/libavcodec/aacdec.c ++++ b/libavcodec/aacdec.c +@@ -3229,7 +3229,7 @@ static int read_audio_mux_element(struct LATMContext *latmctx, + } else if (!latmctx->aac_ctx.avctx->extradata) { + av_log(latmctx->aac_ctx.avctx, AV_LOG_DEBUG, + "no decoder config found\n"); +- return AVERROR(EAGAIN); ++ return 1; + } + if (latmctx->audio_mux_version_A == 0) { + int mux_slot_length_bytes = read_payload_length_info(latmctx, gb); +@@ -3266,8 +3266,8 @@ static int latm_decode_frame(AVCodecContext *avctx, void *out, + if (muxlength > avpkt->size) + return AVERROR_INVALIDDATA; + +- if ((err = read_audio_mux_element(latmctx, &gb)) < 0) +- return err; ++ if ((err = read_audio_mux_element(latmctx, &gb))) ++ return (err < 0) ? err : avpkt->size; + + if (!latmctx->initialized) { + if (!avctx->extradata) { +diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c +index 1ff27a1..3c1528c 100644 +--- a/libavcodec/nvenc.c ++++ b/libavcodec/nvenc.c +@@ -113,12 +113,14 @@ static const struct { + { NV_ENC_ERR_OUT_OF_MEMORY, AVERROR(ENOMEM), "out of memory" }, + { NV_ENC_ERR_ENCODER_NOT_INITIALIZED, AVERROR(EINVAL), "encoder not initialized" }, + { NV_ENC_ERR_UNSUPPORTED_PARAM, AVERROR(ENOSYS), "unsupported param" }, +- { NV_ENC_ERR_LOCK_BUSY, AVERROR(EAGAIN), "lock busy" }, ++ { NV_ENC_ERR_LOCK_BUSY, AVERROR(EBUSY), "lock busy" }, + { NV_ENC_ERR_NOT_ENOUGH_BUFFER, AVERROR(ENOBUFS), "not enough buffer" }, + { NV_ENC_ERR_INVALID_VERSION, AVERROR(EINVAL), "invalid version" }, + { NV_ENC_ERR_MAP_FAILED, AVERROR(EIO), "map failed" }, +- { NV_ENC_ERR_NEED_MORE_INPUT, AVERROR(EAGAIN), "need more input" }, +- { NV_ENC_ERR_ENCODER_BUSY, AVERROR(EAGAIN), "encoder busy" }, ++ /* this is error should always be treated specially, so this "mapping" ++ * is for completeness only */ ++ { NV_ENC_ERR_NEED_MORE_INPUT, AVERROR_UNKNOWN, "need more input" }, ++ { NV_ENC_ERR_ENCODER_BUSY, AVERROR(EBUSY), "encoder busy" }, + { NV_ENC_ERR_EVENT_NOT_REGISTERD, AVERROR(EBADF), "event not registered" }, + { NV_ENC_ERR_GENERIC, AVERROR_UNKNOWN, "generic error" }, + { NV_ENC_ERR_INCOMPATIBLE_CLIENT_KEY, AVERROR(EINVAL), "incompatible client key" }, +diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c +index 9119586..45a353a 100644 +--- a/libavcodec/qsv.c ++++ b/libavcodec/qsv.c +@@ -69,15 +69,17 @@ static const struct { + { MFX_ERR_LOCK_MEMORY, AVERROR(EIO), "failed to lock the memory block" }, + { MFX_ERR_NOT_INITIALIZED, AVERROR_BUG, "not initialized" }, + { MFX_ERR_NOT_FOUND, AVERROR(ENOSYS), "specified object was not found" }, +- { MFX_ERR_MORE_DATA, AVERROR(EAGAIN), "expect more data at input" }, +- { MFX_ERR_MORE_SURFACE, AVERROR(EAGAIN), "expect more surface at output" }, ++ /* the following 3 errors should always be handled explicitly, so those "mappings" ++ * are for completeness only */ ++ { MFX_ERR_MORE_DATA, AVERROR_UNKNOWN, "expect more data at input" }, ++ { MFX_ERR_MORE_SURFACE, AVERROR_UNKNOWN, "expect more surface at output" }, ++ { MFX_ERR_MORE_BITSTREAM, AVERROR_UNKNOWN, "expect more bitstream at output" }, + { MFX_ERR_ABORTED, AVERROR_UNKNOWN, "operation aborted" }, + { MFX_ERR_DEVICE_LOST, AVERROR(EIO), "device lost" }, + { MFX_ERR_INCOMPATIBLE_VIDEO_PARAM, AVERROR(EINVAL), "incompatible video parameters" }, + { MFX_ERR_INVALID_VIDEO_PARAM, AVERROR(EINVAL), "invalid video parameters" }, + { MFX_ERR_UNDEFINED_BEHAVIOR, AVERROR_BUG, "undefined behavior" }, + { MFX_ERR_DEVICE_FAILED, AVERROR(EIO), "device failed" }, +- { MFX_ERR_MORE_BITSTREAM, AVERROR(EAGAIN), "expect more bitstream at output" }, + { MFX_ERR_INCOMPATIBLE_AUDIO_PARAM, AVERROR(EINVAL), "incompatible audio parameters" }, + { MFX_ERR_INVALID_AUDIO_PARAM, AVERROR(EINVAL), "invalid audio parameters" }, +
View file
HandBrake-1.0.2.tar.bz2/gtk/src/callbacks.c -> HandBrake-1.0.3.tar.bz2/gtk/src/callbacks.c
Changed
@@ -250,6 +250,7 @@ } sensitive = dep_check(ud, dep_name, &hide); gtk_widget_set_sensitive(GTK_WIDGET(dep_object), sensitive); + gtk_widget_set_can_focus(GTK_WIDGET(dep_object), sensitive); if (!sensitive && hide) { if (gtk_widget_get_visible(GTK_WIDGET(dep_object)))
View file
HandBrake-1.0.2.tar.bz2/gtk/src/videohandler.c -> HandBrake-1.0.3.tar.bz2/gtk/src/videohandler.c
Changed
@@ -40,10 +40,10 @@ return hb_video_encoder_get_from_name(encoder); } -void ghb_set_video_preset(GhbValue *settings, int encoder, const char * preset) +int ghb_set_video_preset(GhbValue *settings, int encoder, const char * preset) { const char * const * videoPresets; - int ii; + int ii, result = 0; videoPresets = hb_video_encoder_get_presets(encoder); for (ii = 0; preset && videoPresets && videoPresets[ii]; ii++) @@ -51,6 +51,7 @@ if (!strcasecmp(preset, videoPresets[ii])) { ghb_dict_set_int(settings, "VideoPresetSlider", ii); + result = 1; break; } } @@ -58,6 +59,7 @@ { ghb_dict_set_string(settings, "VideoPreset", preset); } + return result; } G_MODULE_EXPORT void @@ -84,6 +86,7 @@ ghb_ui_update(ud, "VideoTune", ghb_int_value(0)); ghb_ui_update(ud, "VideoProfile", ghb_int_value(0)); ghb_ui_update(ud, "VideoLevel", ghb_int_value(0)); + ghb_ui_update(ud, "VideoOptionExtra", ghb_string_value("")); // Set the range of the preset slider int encoder = ghb_get_video_encoder(ud->settings); @@ -124,14 +127,33 @@ ghb_widget_to_setting(ud->settings, widget); int encoder = ghb_get_video_encoder(ud->settings); - int presetIndex = ghb_dict_get_int(ud->settings, "VideoPresetSlider"); - const char * const *video_presets; - const char *preset; + const char * const * video_presets; + video_presets = hb_video_encoder_get_presets(encoder); if (video_presets != NULL) { - preset = video_presets[presetIndex]; - ghb_dict_set_string(ud->settings, "VideoPreset", preset); + const char *preset; + + // Try to set same preset value + preset = ghb_dict_get_string(ud->settings, "VideoPreset"); + if (!ghb_set_video_preset(ud->settings, encoder, preset)) + { + int presetIndex, count = 0; + + // Try to set same preset index + presetIndex = ghb_dict_get_int(ud->settings, "VideoPresetSlider"); + while (video_presets[count]) count++; + if (presetIndex < count) + { + preset = video_presets[presetIndex]; + ghb_dict_set_string(ud->settings, "VideoPreset", preset); + } + else + { + // Try to set same preset "medium" preset + ghb_set_video_preset(ud->settings, encoder, "medium"); + } + } } if (!ghb_dict_get_bool(ud->settings, "x264UseAdvancedOptions") &&
View file
HandBrake-1.0.2.tar.bz2/libhb/audio_resample.c -> HandBrake-1.0.3.tar.bz2/libhb/audio_resample.c
Changed
@@ -75,6 +75,26 @@ return NULL; } +static int is_mono(uint64_t layout) +{ + int ii, channel_count; + int64_t mask; + + if (layout == AV_CH_LAYOUT_NATIVE) + { + return 0; + } + for (ii = 0, channel_count = 0, mask = 1; + ii < 64 && channel_count < 2; ii++, mask <<= 1) + { + if (layout & mask) + { + channel_count++; + } + } + return channel_count == 1; +} + void hb_audio_resample_set_channel_layout(hb_audio_resample_t *resample, uint64_t channel_layout) { @@ -85,6 +105,13 @@ // Dolby Surround is Stereo when it comes to remixing channel_layout = AV_CH_LAYOUT_STEREO; } + // avresample can't remap a single-channel layout to + // another single-channel layout + if (resample->out.channel_layout == AV_CH_LAYOUT_MONO && + is_mono(channel_layout)) + { + channel_layout = AV_CH_LAYOUT_MONO; + } resample->in.channel_layout = channel_layout; } }
View file
HandBrake-1.0.2.tar.bz2/libhb/cropscale.c -> HandBrake-1.0.3.tar.bz2/libhb/cropscale.c
Changed
@@ -142,6 +142,10 @@ { HB_OCL_BUF_FREE(hb_ocl, pv->os->bicubic_x_weights); HB_OCL_BUF_FREE(hb_ocl, pv->os->bicubic_y_weights); + if (pv->os->initialized == 1) + { + hb_ocl->clReleaseKernel(pv->os->m_kernel); + } } free(pv->os); }
View file
HandBrake-1.0.2.tar.bz2/libhb/decavcodec.c -> HandBrake-1.0.3.tar.bz2/libhb/decavcodec.c
Changed
@@ -1665,8 +1665,12 @@ { av_dict_free( &av_opts ); hb_log( "decavcodecvWork: avcodec_open failed" ); - *buf_out = hb_buffer_eof_init(); - return HB_WORK_DONE; + // avcodec_open can fail due to incorrectly parsed extradata + // so try again when this fails + av_freep( &pv->context->extradata ); + pv->context->extradata_size = 0; + hb_buffer_close( &in ); + return HB_WORK_OK; } av_dict_free( &av_opts ); pv->video_codec_opened = 1; @@ -1860,7 +1864,7 @@ memset( info, 0, sizeof(*info) ); - if (pv->context == NULL) + if (pv->context == NULL || pv->context->codec == NULL) return 0; info->bitrate = pv->context->bit_rate;
View file
HandBrake-1.0.2.tar.bz2/libhb/enc_qsv.c -> HandBrake-1.0.3.tar.bz2/libhb/enc_qsv.c
Changed
@@ -309,8 +309,8 @@ mfxU16 Height = pv->param.videoParam->mfx.FrameInfo.Height; mfxU16 Width = pv->param.videoParam->mfx.FrameInfo.Width; frameSurface1.Info = pv->param.videoParam->mfx.FrameInfo; - frameSurface1.Data.VU = av_mallocz(Width * Height / 2); - frameSurface1.Data.Y = av_mallocz(Width * Height); + frameSurface1.Data.Y = av_mallocz(Width * Height * 3 / 2); + frameSurface1.Data.VU = frameSurface1.Data.Y + Width * Height; frameSurface1.Data.Pitch = Width; /* Encode a single blank frame */ @@ -437,7 +437,6 @@ end: hb_buffer_close(&bitstream_buf); - av_free(frameSurface1.Data.VU); av_free(frameSurface1.Data.Y); return ret; } @@ -596,8 +595,8 @@ mfxFrameInfo info = pv->param.videoParam->mfx.FrameInfo; surface->Info = info; surface->Data.Pitch = info.Width; - surface->Data.Y = av_mallocz(info.Width * info.Height); - surface->Data.VU = av_mallocz(info.Width * info.Height / 2); + surface->Data.Y = av_mallocz(info.Width * info.Height * 3 / 2); + surface->Data.VU = surface->Data.Y + info.Width * info.Height; qsv_encode->p_surfaces[i] = surface; } } @@ -1458,7 +1457,6 @@ { if (pv->is_sys_mem) { - av_freep(&qsv_enc_space->p_surfaces[i]->Data.VU); av_freep(&qsv_enc_space->p_surfaces[i]->Data.Y); } av_freep(&qsv_enc_space->p_surfaces[i]);
View file
HandBrake-1.0.2.tar.bz2/libhb/encx265.c -> HandBrake-1.0.3.tar.bz2/libhb/encx265.c
Changed
@@ -87,7 +87,6 @@ { hb_work_private_t *pv = calloc(1, sizeof(hb_work_private_t)); int ret, depth; - hb_rational_t vrate; x265_nal *nal; uint32_t nnal; const char * const *profile_names; @@ -143,9 +142,8 @@ * Some HandBrake-specific defaults; users can override them * using the encoder_options string. */ - hb_reduce(&vrate.num, &vrate.den, job->vrate.num, job->vrate.den); - param->fpsNum = vrate.num; - param->fpsDenom = vrate.den; + param->fpsNum = job->orig_vrate.num; + param->fpsDenom = job->orig_vrate.den; param->keyframeMin = (double)job->orig_vrate.num / job->orig_vrate.den + 0.5; param->keyframeMax = param->keyframeMin * 10;
View file
HandBrake-1.0.2.tar.bz2/libhb/openclwrapper.c -> HandBrake-1.0.3.tar.bz2/libhb/openclwrapper.c
Changed
@@ -1126,6 +1126,11 @@ hb_ocl->clWaitForEvents(1, &event); else hb_log("hb_free_mapped_buffer: error %d", status); + + status = hb_ocl->clReleaseMemObject(mem); + if (status != CL_SUCCESS) + hb_log("hb_free_mapped_buffer: release error %d",status); + return (status == CL_SUCCESS) ? 1 : 0; }
View file
HandBrake-1.0.2.tar.bz2/libhb/platform/macosx/encca_aac.c -> HandBrake-1.0.3.tar.bz2/libhb/platform/macosx/encca_aac.c
Changed
@@ -46,6 +46,7 @@ AudioConverterRef converter; unsigned long isamples, isamplesiz, omaxpacket, nchannels; + int64_t first_pts; uint64_t samples, ibytes; Float64 osamplerate; @@ -146,6 +147,7 @@ w->private_data = pv; pv->job = job; + pv->first_pts = AV_NOPTS_VALUE; // pass the number of channels used into the private work data pv->nchannels = @@ -441,9 +443,9 @@ } obuf->size = odesc.mDataByteSize; - obuf->s.start = 90000LL * pv->samples / pv->osamplerate; + obuf->s.start = pv->first_pts + 90000LL * pv->samples / pv->osamplerate; pv->samples += pv->isamples; - obuf->s.stop = 90000LL * pv->samples / pv->osamplerate; + obuf->s.stop = pv->first_pts + 90000LL * pv->samples / pv->osamplerate; obuf->s.duration = (double)90000 * pv->isamples / pv->osamplerate; obuf->s.type = AUDIO_BUF; obuf->s.frametype = HB_FRAME_AUDIO; @@ -515,6 +517,10 @@ return HB_WORK_DONE; } + if (pv->first_pts == AV_NOPTS_VALUE) + { + pv->first_pts = in->s.start; + } hb_list_add(pv->list, in); *buf_out = buf = Encode(w);
View file
HandBrake-1.0.2.tar.bz2/libhb/preset.c -> HandBrake-1.0.3.tar.bz2/libhb/preset.c
Changed
@@ -615,13 +615,13 @@ hb_value_array_t * encoder_list = hb_dict_get(preset, "AudioList"); int count = hb_value_array_len(encoder_list); int track = find_audio_track(title, lang, 0, behavior); - int current_mode = 0; while (track >= 0) { + int track_count = hb_value_array_len(list); char key[8]; snprintf(key, sizeof(key), "%d", track); - count = current_mode ? 1 : count; + count = mode && track_count ? 1 : count; int ii; for (ii = 0; ii < count; ii++) { @@ -1733,7 +1733,7 @@ if (hb_value_type(ana_mode_value) == HB_VALUE_TYPE_STRING) { const char *s = hb_value_get_string(ana_mode_value); - if (!strcasecmp(s, "none")) + if (!strcasecmp(s, "off")) geo.mode = HB_ANAMORPHIC_NONE; else if (!strcasecmp(s, "strict")) geo.mode = HB_ANAMORPHIC_STRICT;
View file
HandBrake-1.0.2.tar.bz2/libhb/sync.c -> HandBrake-1.0.3.tar.bz2/libhb/sync.c
Changed
@@ -1761,12 +1761,12 @@ { // This should happen extremely rarely if ever. // But if we get here, this is the first buffer received for - // this stream. Normally, some buffers will be queued for + // this stream. Normally, some buffers will be queued for // every stream before we ever call UpdateSCR. - // We don't really know what it's timestamp should be, - // but 0 is a good guess. - buf->s.start = 0; - last_scr_pts = buf->s.start; + // We don't really know what it's timestamp should be. + // So drop the buffer. + hb_buffer_close(&buf); + return 0; } if (buf->s.stop != AV_NOPTS_VALUE) {
View file
HandBrake-1.0.2.tar.bz2/libhb/work.c -> HandBrake-1.0.3.tar.bz2/libhb/work.c
Changed
@@ -1363,10 +1363,6 @@ memset(interjob, 0, sizeof(*interjob)); interjob->sequence_id = job->sequence_id; } - else if (job->pass_id == HB_PASS_ENCODE_2ND) - { - correct_framerate(interjob, job); - } job->list_work = hb_list_init(); w = hb_get_work(job->h, WORK_READER); @@ -1484,6 +1480,11 @@ job->cfr = 0; } + if (job->pass_id == HB_PASS_ENCODE_2ND) + { + correct_framerate(interjob, job); + } + /* * The frame rate may affect the bitstream's time base, lose superfluous * factors for consistency (some encoders reduce fractions, some don't). @@ -1837,6 +1838,12 @@ } hb_buffer_pool_free(); + + if (job->use_opencl) + { + hb_release_opencl_run_env(); + } + hb_job_close(&job); }
View file
HandBrake-1.0.2.tar.bz2/macosx/HBController.m -> HandBrake-1.0.3.tar.bz2/macosx/HBController.m
Changed
@@ -644,7 +644,23 @@ { [self scanURL:job.fileURL titleIndex:job.titleIdx completionHandler:^(NSArray<HBTitle *> *titles) { - job.title = titles.firstObject; + // If the scan was cached, reselect + // the original title + for (HBTitle *title in titles) + { + if (title.index == job.titleIdx) + { + job.title = title; + break; + } + } + + // Else just one title or a title specific rescan + // select the first title + if (!job.title) + { + job.title = titles.firstObject; + } self.job = job; }];
View file
HandBrake-1.0.2.tar.bz2/version.txt -> HandBrake-1.0.3.tar.bz2/version.txt
Changed
@@ -1,9 +1,9 @@ URL=https://github.com/HandBrake/HandBrake.git -HASH=51943f4115cb540793713571120f25414ab805d8 -SHORTHASH=51943f4 -TAG=1.0.2 -TAG_HASH=51943f4115cb540793713571120f25414ab805d8 +HASH=5ecc600a805c6dc2632f4ca6d3beb4fbb8cbefd0 +SHORTHASH=5ecc600 +TAG=1.0.3 +TAG_HASH=5ecc600a805c6dc2632f4ca6d3beb4fbb8cbefd0 REV=0 BRANCH= REMOTE=https://github.com/HandBrake/HandBrake.git -DATE=2017-01-22 11:49:13 -0500 +DATE=2017-02-25 15:56:19 -0500
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrake.ApplicationServices/Properties/AssemblyInfo.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrake.ApplicationServices/Properties/AssemblyInfo.cs
Changed
@@ -43,5 +43,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyVersion("1.0.3.0")] [assembly: NeutralResourcesLanguage("")]
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrake.ApplicationServices/Utilities/LanguageUtilities.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrake.ApplicationServices/Utilities/LanguageUtilities.cs
Changed
@@ -284,5 +284,30 @@ { return MapLanguages().Values.ToList(); } + + /// <summary> + /// The get language code. + /// </summary> + /// <param name="language"> + /// The language. + /// </param> + /// <returns> + /// The <see cref="string"/>. + /// </returns> + public static string GetLanguageCode(string language) + { + if (string.IsNullOrEmpty(language)) + { + return null; + } + + string isoCode; + if (MapLanguages().TryGetValue(language, out isoCode)) + { + return isoCode; + } + + return null; + } } }
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeTools/Properties/AssemblyInfo.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeTools/Properties/AssemblyInfo.cs
Changed
@@ -41,5 +41,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyVersion("1.0.3.0")] [assembly: NeutralResourcesLanguage("")] \ No newline at end of file
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/Converters/Queue/PictureSettingsDescConveter.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/Converters/Queue/PictureSettingsDescConveter.cs
Changed
@@ -1,4 +1,4 @@ -// -------------------------------------------------------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // <copyright file="PictureSettingsDescConveter.cs" company="HandBrake Project (http://handbrake.fr)"> // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // </copyright> @@ -62,7 +62,7 @@ break; } - return resolution + Environment.NewLine + "Crop Top: " + task.Cropping.Top + ", Botton: " + task.Cropping.Bottom + ", Left: " + return resolution + Environment.NewLine + "Crop Top: " + task.Cropping.Top + ", Bottom: " + task.Cropping.Bottom + ", Left: " + task.Cropping.Left + ", Right: " + task.Cropping.Right; }
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/Installer/Installer.nsi -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/Installer/Installer.nsi
Changed
@@ -8,8 +8,8 @@ ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "HandBrake" -!define PRODUCT_VERSION "1.0.2" -!define PRODUCT_VERSION_NUMBER "1.0.2" +!define PRODUCT_VERSION "1.0.3" +!define PRODUCT_VERSION_NUMBER "1.0.3" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM"
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/Installer/Installer64.nsi -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/Installer/Installer64.nsi
Changed
@@ -8,8 +8,8 @@ ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "HandBrake" -!define PRODUCT_VERSION "1.0.2" -!define PRODUCT_VERSION_NUMBER "1.0.2" +!define PRODUCT_VERSION "1.0.3" +!define PRODUCT_VERSION_NUMBER "1.0.3" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM"
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs
Changed
@@ -61,5 +61,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyVersion("1.0.3.0")] [assembly: NeutralResourcesLanguage("")] \ No newline at end of file
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs
Changed
@@ -239,7 +239,7 @@ { Filename = item.SrtPath, Codeset = item.SrtCharCode, - Language = item.SrtLang + Language = item.SrtLangCode } };
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/Services/Encode/Model/Models/DenoiseTune.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/Services/Encode/Model/Models/DenoiseTune.cs
Changed
@@ -37,5 +37,13 @@ [Display(Name = "Animation")] [ShortName("animation")] Animation, + + [Display(Name = "Tape")] + [ShortName("tape")] + Tape, + + [Display(Name = "Sprite")] + [ShortName("sprite")] + Sprite, } }
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/Services/Encode/Model/Models/SubtitleTrack.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/Services/Encode/Model/Models/SubtitleTrack.cs
Changed
@@ -11,6 +11,8 @@ { using System; + using HandBrake.ApplicationServices.Utilities; + using HandBrakeWPF.Services.Scan.Model; using HandBrakeWPF.Utilities; @@ -46,6 +48,8 @@ /// </summary> private bool forced; + private string srtLang; + #endregion #region Constructors and Destructors @@ -198,7 +202,24 @@ /// <summary> /// Gets or sets the SRT Language /// </summary> - public string SrtLang { get; set; } + public string SrtLang + { + get + { + return this.srtLang; + } + set + { + this.srtLang = value; + string iso639 = LanguageUtilities.GetLanguageCode(this.srtLang); + this.SrtLangCode = iso639; + } + } + + /// <summary> + /// Gets or sets the srt lang code. + /// </summary> + public string SrtLangCode { get; set; } /// <summary> /// Gets or sets the SRT Offset
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/Services/Presets/Factories/JsonPresetFactory.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/Services/Presets/Factories/JsonPresetFactory.cs
Changed
@@ -265,9 +265,15 @@ case "grain": preset.Task.DenoiseTune = DenoiseTune.Grain; break; - case "highnotion": + case "highmotion": preset.Task.DenoiseTune = DenoiseTune.HighMotion; break; + case "tape": + preset.Task.DenoiseTune = DenoiseTune.Tape; + break; + case "sprite": + preset.Task.DenoiseTune = DenoiseTune.Sprite; + break; default: preset.Task.DenoiseTune = DenoiseTune.None;
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
Changed
@@ -2512,7 +2512,7 @@ DriveInformation driveInfo = ((SourceMenuItem)item).Tag as DriveInformation; if (driveInfo != null) { - this.StartScan(driveInfo.RootDirectory, 0); + this.StartScan(driveInfo.RootDirectory, this.TitleSpecificScan); } this.ShowSourceSelection = false;
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/ViewModels/X264ViewModel.cs -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/ViewModels/X264ViewModel.cs
Changed
@@ -934,7 +934,7 @@ this.Task.PropertyChanged += this.Task_PropertyChanged; this.AdvancedOptionsString = preset.Task.AdvancedEncoderOptions; - if (task.ShowAdvancedTab && task.VideoEncoder == VideoEncoder.X264 && task.VideoEncoder == VideoEncoder.X264_10) + if (task.ShowAdvancedTab && (task.VideoEncoder == VideoEncoder.X264 || task.VideoEncoder == VideoEncoder.X264_10)) { this.ShowX264AdvancedOptions = true; this.NotifyOfPropertyChange(() => ShowX264AdvancedOptions);
View file
HandBrake-1.0.2.tar.bz2/win/CS/HandBrakeWPF/app.manifest -> HandBrake-1.0.3.tar.bz2/win/CS/HandBrakeWPF/app.manifest
Changed
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> - <assemblyIdentity version="1.0.2.0" name="HandBrake.app"/> + <assemblyIdentity version="1.0.3.0" name="HandBrake.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.