From 9d66e88fc1d87b3eb2f5692c7e0ca79b82f11b99 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 5 Jan 2017 13:08:16 +0400 Subject: [PATCH] Alpha 0.10.24: fixed image alignment for ffmpeg, using ffmpeg 3.2. --- Telegram/Resources/colors.palette | 3 ++ Telegram/Resources/default.tdesktop-theme | 3 ++ Telegram/Resources/icons/dialogs_chat.png | Bin 335 -> 265 bytes Telegram/Resources/icons/dialogs_chat@2x.png | Bin 602 -> 490 bytes Telegram/Resources/winrc/Telegram.rc | 8 ++-- Telegram/Resources/winrc/Updater.rc | 8 ++-- Telegram/SourceFiles/core/version.h | 4 +- Telegram/SourceFiles/history/history.style | 6 +-- Telegram/SourceFiles/historywidget.cpp | 16 ++++++++ Telegram/SourceFiles/media/media_audio.cpp | 4 +- .../SourceFiles/media/media_clip_ffmpeg.cpp | 37 +++++++++++++++--- Telegram/SourceFiles/mediaview.cpp | 6 +-- Telegram/SourceFiles/profile/profile.style | 4 +- Telegram/build/version | 6 +-- doc/building-cmake.md | 2 +- doc/building-msvc.md | 2 +- doc/building-qtcreator.md | 2 +- doc/building-xcode-old.md | 2 +- doc/building-xcode.md | 2 +- 19 files changed, 82 insertions(+), 33 deletions(-) diff --git a/Telegram/Resources/colors.palette b/Telegram/Resources/colors.palette index a966448809..56741875ac 100644 --- a/Telegram/Resources/colors.palette +++ b/Telegram/Resources/colors.palette @@ -379,6 +379,7 @@ historySendIconFg: windowBgActive; historySendIconFgOver: windowBgActive; historyPinnedBg: historyComposeAreaBg; historyReplyBg: historyComposeAreaBg; +historyReplyIconFg: windowBgActive; historyReplyCancelFg: cancelIconFg; historyReplyCancelFgOver: cancelIconFgOver; @@ -394,6 +395,8 @@ overviewPhotoSelectOverlay: #40ace333; // profile profileStatusFgOver: #7c99b2; +profileVerifiedCheckBg: windowBgActive; +profileVerifiedCheckFg: windowFgActive; // settings notificationsBoxMonitorFg: windowFg; diff --git a/Telegram/Resources/default.tdesktop-theme b/Telegram/Resources/default.tdesktop-theme index 45d3d59a48..2d3c295469 100644 --- a/Telegram/Resources/default.tdesktop-theme +++ b/Telegram/Resources/default.tdesktop-theme @@ -325,6 +325,7 @@ historySendIconFg: windowBgActive; historySendIconFgOver: windowBgActive; historyPinnedBg: historyComposeAreaBg; historyReplyBg: historyComposeAreaBg; +historyReplyIconFg: windowBgActive; historyReplyCancelFg: cancelIconFg; historyReplyCancelFgOver: cancelIconFgOver; historyComposeButtonBg: historyComposeAreaBg; @@ -335,6 +336,8 @@ overviewCheckFg: windowBg; overviewCheckFgActive: windowBg; overviewPhotoSelectOverlay: #40ace333; profileStatusFgOver: #7c99b2; +profileVerifiedCheckBg: windowBgActive; +profileVerifiedCheckFg: windowFgActive; notificationsBoxMonitorFg: windowFg; notificationsBoxScreenBg: dialogsBgActive; notificationSampleUserpicFg: windowBgActive; diff --git a/Telegram/Resources/icons/dialogs_chat.png b/Telegram/Resources/icons/dialogs_chat.png index a17196562c2ebada4ad27bc75ae52f0b8b6b10e4..ed06e164789e2e3b05d11b83f7818b8aafc5c792 100644 GIT binary patch delta 238 zcmVVU3`KuVS3<)GEW!j35K=_J3XH)tEJ4o< z)Q(Ak1SN&90)fKa6@1BspKR;>{FrJLeA0%yQnjI1su2=FIPAj%!+LAtE6nNz?SgnOUs0l4oVv#eu@Z5Z?e0MG=fK zNRk9`90LHxaYWzu=(-N`Jfp5_G)?1iR8=MGy2>{#%Ob`YQA)`$3?9d?z!P`` zOAAR6v`wETwGarH%KBmZiV#Gf&1|t`R#}U{{xI;*3~%O}w*o-;hrXuC;c$Qu0#ZuE zas2TRddKVaqPLV%v|g`i+Fyzp!SnfKuj~43OBjX_LZEG11b;!WOrVsasa)6P-tl8@Ap3gk|bGt_=zr;3$4!Q zGugHc0PuYurY>pnZNo62>pEzf1}P;x&jSGTeUHcE0RZ?0sa^_ZK86-a00000NkvXX Hu0mjfRlt!y diff --git a/Telegram/Resources/icons/dialogs_chat@2x.png b/Telegram/Resources/icons/dialogs_chat@2x.png index f49e61f0803d79deb3d9a1d2333de2e3c1f8f78b..a5e8674e9d447399a889925b643c778a8411d726 100644 GIT binary patch delta 465 zcmV;?0WSX91nL8jBYy$0Nkl z976~J&bg6yT^GLZBTZ8zNrKgC1;=p;Lr~t}oKqA<^j=XEQGc`9%np{(8NV z<2bnqkHS$U+V}NffLZZ)oCS!p0 zdTrd4x3=AGjr?Y_`DcjStFdjH!Z6HSXBdWL+xC}>_GuUw$hK|rJddQ5B&8(J^K#9f zLkJ;ADMd;t5`RJznG?IGc$Hq>3E%Q2Ez3fu(?Pe}MWfL`tyTj7TrL-!&u5%YCj>zN zt#xK^zu(7XGAYdiPwz1rjc7if=N405G0tW)8V-klzbRuholZ;h06^__oA&#Cp{Yr` z-Hu$>eH>b?Rw)RAa{OR0pd?8?ZGM+hih8}?BgA+-E=tEAkH;^Y-*q?~9s%n0dMTdW zZa1n_zUMP&tzlW#pW-TL&su9RDxy9p##re9z<KASRQ+VzQVlg3)5tq8KLlRa7txg7_`#g~#JP-<&gdkn4L3PT6Pgz1Ga$vqmB! z(0_zc>r#>=N~Kcd^Z7`YWtvPTG@sAET?BY1kw{=L7~pTT+kb5^#<(>v9(B;~_v3oK zs>pw#*=)X7K&ey`k^{iuaDXI9-y(p!17@>Xb7oenmE3MOZ8jTW4r7dx$t2nBb{dUF zG#-zIxhhrpd|vYn0D!~c5I$8porWySPx+lr2S%e&-v}a+h$i{C4 z=Sl8`#^(`S0!Rz&Mn<$F% zr3Wk)3vO+pP|z>n^YatEUQch6rxOZ=RCTM>N@U^uCVyIPs5Js2f+R_pPNz>bwOUQT z6$b(V;kOI`vMeJU4hscDA`w-6tJV5iKr9wRv)RPybP|&PiGIJ2Xf&!C9q%s+0QGvE z=b(gaHjCA2rHhn@;c$pbrGiGIfy3dTnX4!Ys?{o7F4s>1<#HMK`~79|SD`2hip3(N z^Z5(_WIM4~xF+!~TrL-4jL`>UjBdBvKP4ynZOg{{{Vue~cVaf1(eZesAJ3Bw{~~_C QI{*Lx07*qoM6N<$f@Vn!ZU6uP diff --git a/Telegram/Resources/winrc/Telegram.rc b/Telegram/Resources/winrc/Telegram.rc index dceb619320..7a459e87fc 100644 --- a/Telegram/Resources/winrc/Telegram.rc +++ b/Telegram/Resources/winrc/Telegram.rc @@ -34,8 +34,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,10,23,0 - PRODUCTVERSION 0,10,23,0 + FILEVERSION 0,10,24,0 + PRODUCTVERSION 0,10,24,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -51,10 +51,10 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "CompanyName", "Telegram Messenger LLP" - VALUE "FileVersion", "0.10.23.0" + VALUE "FileVersion", "0.10.24.0" VALUE "LegalCopyright", "Copyright (C) 2014-2016" VALUE "ProductName", "Telegram Desktop" - VALUE "ProductVersion", "0.10.23.0" + VALUE "ProductVersion", "0.10.24.0" END END BLOCK "VarFileInfo" diff --git a/Telegram/Resources/winrc/Updater.rc b/Telegram/Resources/winrc/Updater.rc index 5fdc6fdb1d..a68fa3b002 100644 --- a/Telegram/Resources/winrc/Updater.rc +++ b/Telegram/Resources/winrc/Updater.rc @@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,10,23,0 - PRODUCTVERSION 0,10,23,0 + FILEVERSION 0,10,24,0 + PRODUCTVERSION 0,10,24,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -43,10 +43,10 @@ BEGIN BEGIN VALUE "CompanyName", "Telegram Messenger LLP" VALUE "FileDescription", "Telegram Updater" - VALUE "FileVersion", "0.10.23.0" + VALUE "FileVersion", "0.10.24.0" VALUE "LegalCopyright", "Copyright (C) 2014-2016" VALUE "ProductName", "Telegram Desktop" - VALUE "ProductVersion", "0.10.23.0" + VALUE "ProductVersion", "0.10.24.0" END END BLOCK "VarFileInfo" diff --git a/Telegram/SourceFiles/core/version.h b/Telegram/SourceFiles/core/version.h index 6486a425aa..da219f7eb0 100644 --- a/Telegram/SourceFiles/core/version.h +++ b/Telegram/SourceFiles/core/version.h @@ -24,7 +24,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org #define BETA_VERSION_MACRO (0ULL) -constexpr int AppVersion = 10023; -constexpr str_const AppVersionStr = "0.10.23"; +constexpr int AppVersion = 10024; +constexpr str_const AppVersionStr = "0.10.24"; constexpr bool AppAlphaVersion = true; constexpr uint64 AppBetaVersion = BETA_VERSION_MACRO; diff --git a/Telegram/SourceFiles/history/history.style b/Telegram/SourceFiles/history/history.style index d029356fda..cf7d4fb215 100644 --- a/Telegram/SourceFiles/history/history.style +++ b/Telegram/SourceFiles/history/history.style @@ -267,9 +267,9 @@ historyReplyHeight: 49px; historyReplyTop: 8px; historyReplyBottom: 6px; historyReplyIconPosition: point(13px, 13px); -historyReplyIcon: icon {{ "history_action_reply", windowBgActive }}; -historyForwardIcon: icon {{ "history_action_forward", windowBgActive }}; -historyEditIcon: icon {{ "history_action_edit", windowBgActive }}; +historyReplyIcon: icon {{ "history_action_reply", historyReplyIconFg }}; +historyForwardIcon: icon {{ "history_action_forward", historyReplyIconFg }}; +historyEditIcon: icon {{ "history_action_edit", historyReplyIconFg }}; historyReplyCancel: IconButton { width: 49px; height: 49px; diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index b4320a1c80..84475502ea 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -234,6 +234,22 @@ void HistoryInner::enumerateItemsInHistory(History *history, int historytop, Met // binary search should've skipped all the items that are above / below the visible area if (TopToBottom) { + if (itembottom <= _visibleAreaTop && (cAlphaVersion() || cBetaVersion())) { + // Debugging a crash + auto fields = QStringList(); + fields.append(QString::number(historytop)); + fields.append(QString::number(history->height)); + fields.append(QString::number(_visibleAreaTop)); + fields.append(QString::number(_visibleAreaBottom)); + fields.append(QString::number(blocktop)); + fields.append(QString::number(block->height)); + fields.append(QString::number(itemtop)); + fields.append(QString::number(item->height())); + fields.append(QString::number(itembottom)); + fields.append(QString::number(history->blocks.size())); + fields.append(QString::number(block->items.size())); + SignalHandlers::setCrashAnnotation("ItemInfo1", fields.join(',')); + } t_assert(itembottom > _visibleAreaTop); } else { t_assert(itemtop < _visibleAreaBottom); diff --git a/Telegram/SourceFiles/media/media_audio.cpp b/Telegram/SourceFiles/media/media_audio.cpp index cca44a6b06..c47aefa443 100644 --- a/Telegram/SourceFiles/media/media_audio.cpp +++ b/Telegram/SourceFiles/media/media_audio.cpp @@ -1711,7 +1711,9 @@ void AudioCaptureInner::processFrame(int32 offset, int32 framesize) { int res = 0; char err[AV_ERROR_MAX_STRING_SIZE] = { 0 }; - short *srcSamplesDataChannel = (short*)(_captured.data() + offset), **srcSamplesData = &srcSamplesDataChannel; + auto srcSamplesDataChannel = (short*)(_captured.data() + offset); + auto srcSamplesData = &srcSamplesDataChannel; + // memcpy(d->srcSamplesData[0], _captured.constData() + offset, framesize); int32 skipSamples = AudioVoiceMsgSkip * AudioVoiceMsgFrequency / 1000, fadeSamples = AudioVoiceMsgFade * AudioVoiceMsgFrequency / 1000; if (d->fullSamples < skipSamples + fadeSamples) { diff --git a/Telegram/SourceFiles/media/media_clip_ffmpeg.cpp b/Telegram/SourceFiles/media/media_clip_ffmpeg.cpp index c34c8837b7..b5e1a66616 100644 --- a/Telegram/SourceFiles/media/media_clip_ffmpeg.cpp +++ b/Telegram/SourceFiles/media/media_clip_ffmpeg.cpp @@ -30,6 +30,30 @@ namespace internal { namespace { constexpr int kSkipInvalidDataPackets = 10; +constexpr int kAlignImageBy = 16; + +void alignedImageBufferCleanupHandler(void *data) { + auto buffer = static_cast(data); + delete[] buffer; +} + +// Create a QImage of desired size where all the data is aligned to 16 bytes. +QImage createAlignedImage(QSize size) { + auto width = size.width(); + auto height = size.height(); + auto widthalign = kAlignImageBy / 4; + auto neededwidth = width + ((width % widthalign) ? (widthalign - (width % widthalign)) : 0); + auto bytesperline = neededwidth * 4; + auto buffer = new uchar[bytesperline * height + kAlignImageBy]; + auto cleanupdata = static_cast(buffer); + auto bufferval = reinterpret_cast(buffer); + auto alignedbuffer = buffer + ((bufferval % kAlignImageBy) ? (bufferval - (bufferval % kAlignImageBy)) : 0); + return QImage(alignedbuffer, width, height, bytesperline, QImage::Format_ARGB32, alignedImageBufferCleanupHandler, cleanupdata); +} + +bool isAlignedImage(const QImage &image) { + return !(reinterpret_cast(image.constBits()) % kAlignImageBy) && !(image.bytesPerLine() % kAlignImageBy); +} } // namespace @@ -126,7 +150,7 @@ ReaderImplementation::ReadResult FFMpegReaderImplementation::readNextFrame() { void FFMpegReaderImplementation::processReadFrame() { int64 duration = av_frame_get_pkt_duration(_frame); - int64 framePts = (_frame->pkt_pts == AV_NOPTS_VALUE) ? _frame->pkt_dts : _frame->pkt_pts; + int64 framePts = _frame->pts; TimeMs frameMs = (framePts * 1000LL * _fmtContext->streams[_streamId]->time_base.num) / _fmtContext->streams[_streamId]->time_base.den; _currentFrameDelay = _nextFrameDelay; if (_frameMs + _currentFrameDelay < frameMs) { @@ -219,13 +243,12 @@ bool FFMpegReaderImplementation::renderFrame(QImage &to, bool &hasAlpha, const Q return false; } } - QSize toSize(size.isEmpty() ? QSize(_width, _height) : size); if (!size.isEmpty() && rotationSwapWidthHeight()) { toSize.transpose(); } - if (to.isNull() || to.size() != toSize) { - to = QImage(toSize, QImage::Format_ARGB32); + if (to.isNull() || to.size() != toSize || !to.isDetached() || !isAlignedImage(to)) { + to = createAlignedImage(toSize); } hasAlpha = (_frame->format == AV_PIX_FMT_BGRA || (_frame->format == -1 && _codecContext->pix_fmt == AV_PIX_FMT_BGRA)); if (_frame->width == toSize.width() && _frame->height == toSize.height() && hasAlpha) { @@ -239,8 +262,10 @@ bool FFMpegReaderImplementation::renderFrame(QImage &to, bool &hasAlpha, const Q _swsSize = toSize; _swsContext = sws_getCachedContext(_swsContext, _frame->width, _frame->height, AVPixelFormat(_frame->format), toSize.width(), toSize.height(), AV_PIX_FMT_BGRA, 0, 0, 0, 0); } - uint8_t * toData[1] = { to.bits() }; - int toLinesize[1] = { to.bytesPerLine() }, res; + // AV_NUM_DATA_POINTERS defined in AVFrame struct + uint8_t *toData[AV_NUM_DATA_POINTERS] = { to.bits(), nullptr }; + int toLinesize[AV_NUM_DATA_POINTERS] = { to.bytesPerLine(), 0 }; + int res; if ((res = sws_scale(_swsContext, _frame->data, _frame->linesize, 0, _frame->height, toData, toLinesize)) != _swsSize.height()) { LOG(("Gif Error: Unable to sws_scale to good size %1, height %2, should be %3").arg(logData()).arg(res).arg(_swsSize.height())); return false; diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index 925e1d50a8..db0fd7b28e 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -215,7 +215,7 @@ bool MediaView::gifShown() const { _gif->pauseResumeVideo(); const_cast(this)->_videoPaused = _gif->videoPaused(); } - _gif->start(_gif->width(), _gif->height(), _gif->width(), _gif->height(), ImageRoundRadius::None, ImageRoundCorner::None); + _gif->start(_gif->width() / cIntRetinaFactor(), _gif->height() / cIntRetinaFactor(), _gif->width() / cIntRetinaFactor(), _gif->height() / cIntRetinaFactor(), ImageRoundRadius::None, ImageRoundCorner::None); const_cast(this)->_current = QPixmap(); } return true;// _gif->state() != Media::Clip::State::Error; @@ -1531,7 +1531,7 @@ void MediaView::restartVideoAtSeekPosition(TimeMs positionMs) { _autoplayVideoDocument = _doc; if (_current.isNull()) { - _current = _gif->current(_gif->width(), _gif->height(), _gif->width(), _gif->height(), ImageRoundRadius::None, ImageRoundCorner::None, getms()); + _current = _gif->current(_gif->width() / cIntRetinaFactor(), _gif->height() / cIntRetinaFactor(), _gif->width() / cIntRetinaFactor(), _gif->height() / cIntRetinaFactor(), ImageRoundRadius::None, ImageRoundCorner::None, getms()); } _gif = std_::make_unique(_doc->location(), _doc->data(), [this](Media::Clip::Notification notification) { clipCallback(notification); @@ -1672,7 +1672,7 @@ void MediaView::paintEvent(QPaintEvent *e) { if (_photo || fileShown()) { QRect imgRect(_x, _y, _w, _h); if (imgRect.intersects(r)) { - QPixmap toDraw = _current.isNull() ? _gif->current(_gif->width(), _gif->height(), _gif->width(), _gif->height(), ImageRoundRadius::None, ImageRoundCorner::None, ms) : _current; + auto toDraw = _current.isNull() ? _gif->current(_gif->width() / cIntRetinaFactor(), _gif->height() / cIntRetinaFactor(), _gif->width() / cIntRetinaFactor(), _gif->height() / cIntRetinaFactor(), ImageRoundRadius::None, ImageRoundCorner::None, ms) : _current; if (!_gif && (!_doc || !_doc->sticker() || _doc->sticker()->img->isNull()) && toDraw.hasAlpha()) { p.fillRect(imgRect, _transparentBrush); } diff --git a/Telegram/SourceFiles/profile/profile.style b/Telegram/SourceFiles/profile/profile.style index da08e063ce..032cf7a965 100644 --- a/Telegram/SourceFiles/profile/profile.style +++ b/Telegram/SourceFiles/profile/profile.style @@ -148,8 +148,8 @@ profileReportReasonOther: InputField(defaultInputField) { profileVerifiedCheckShift: -3px; profileVerifiedCheck: icon { - { "profile_verified_star", windowBgActive, point(0px, 7px) }, - { "profile_verified_check", windowFgActive, point(4px, 11px) } + { "profile_verified_star", profileVerifiedCheckBg, point(0px, 7px) }, + { "profile_verified_check", profileVerifiedCheckFg, point(4px, 11px) } }; profileCommonGroupsSkip: 24px; diff --git a/Telegram/build/version b/Telegram/build/version index e70af82442..e6dd3facec 100644 --- a/Telegram/build/version +++ b/Telegram/build/version @@ -1,6 +1,6 @@ -AppVersion 10023 +AppVersion 10024 AppVersionStrMajor 0.10 -AppVersionStrSmall 0.10.23 -AppVersionStr 0.10.23 +AppVersionStrSmall 0.10.24 +AppVersionStr 0.10.24 AlphaChannel 1 BetaVersion 0 diff --git a/doc/building-cmake.md b/doc/building-cmake.md index 8951d03ed8..8609d2a05d 100644 --- a/doc/building-cmake.md +++ b/doc/building-cmake.md @@ -66,7 +66,7 @@ In Terminal go to **/home/user/TBuild/Libraries** and run git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg cd ffmpeg - git checkout release/3.1 + git checkout release/3.2 sudo apt-get update sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev diff --git a/doc/building-msvc.md b/doc/building-msvc.md index b7c9f071e6..ecfc46c47c 100644 --- a/doc/building-msvc.md +++ b/doc/building-msvc.md @@ -151,7 +151,7 @@ Go to **D:\\TBuild\\Libraries** and run git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg cd ffmpeg - git checkout release/3.1 + git checkout release/3.2 http://msys2.github.io/ > Download [msys2-x86_64-20150512.exe](http://sourceforge.net/projects/msys2/files/Base/x86_64/msys2-x86_64-20150512.exe/download) and install to **D:\\msys64** diff --git a/doc/building-qtcreator.md b/doc/building-qtcreator.md index 8b73f6964a..da96bf1383 100644 --- a/doc/building-qtcreator.md +++ b/doc/building-qtcreator.md @@ -69,7 +69,7 @@ In Terminal go to **/home/user/TBuild/Libraries** and run git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg cd ffmpeg - git checkout release/3.1 + git checkout release/3.2 sudo apt-get update sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev diff --git a/doc/building-xcode-old.md b/doc/building-xcode-old.md index 1e2edd6251..c7a2bf2383 100644 --- a/doc/building-xcode-old.md +++ b/doc/building-xcode-old.md @@ -127,7 +127,7 @@ In Terminal go to **/Users/user/TBuild/Libraries** and run: git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg cd ffmpeg - git checkout release/3.1 + git checkout release/3.2 #####Building libraries diff --git a/doc/building-xcode.md b/doc/building-xcode.md index 831d2f65d3..27f7e1a58f 100644 --- a/doc/building-xcode.md +++ b/doc/building-xcode.md @@ -147,7 +147,7 @@ In Terminal go to **/Users/user/TBuild/Libraries** and run: git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg cd ffmpeg - git checkout release/3.1 + git checkout release/3.2 * Download [libiconv-1.14](http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz) from http://www.gnu.org/software/libiconv/#downloading * Extract to **/Users/user/TBuild/Libraries** to have **/Users/user/TBuild/Libraries/ibiconv-1.14**