[FFmpeg-devel] [PATCH 3/3] avcodec/mpeg2_metadata_bsf: fix the AVClass version number

2017-11-10 Thread James Almer
--- libavcodec/mpeg2_metadata_bsf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/mpeg2_metadata_bsf.c b/libavcodec/mpeg2_metadata_bsf.c index f1f84e6cd9..b9a49ab943 100644 --- a/libavcodec/mpeg2_metadata_bsf.c +++ b/libavcodec/mpeg2_metadata_bsf.c @@ -294,7

[FFmpeg-devel] [PATCH 1/3] avcodec/h264_metadata_bsf: fix the AVClass version number

2017-11-10 Thread James Almer
--- libavcodec/h264_metadata_bsf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c index 73e73e96e4..ada40a57c7 100644 --- a/libavcodec/h264_metadata_bsf.c +++ b/libavcodec/h264_metadata_bsf.c @@ -506,7 +506,7 @@

[FFmpeg-devel] [PATCH 2/3] avcodec/h265_metadata_bsf: fix the AVClass version number

2017-11-10 Thread James Almer
--- libavcodec/h265_metadata_bsf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/h265_metadata_bsf.c b/libavcodec/h265_metadata_bsf.c index 9af5cc256f..67dbe288e3 100644 --- a/libavcodec/h265_metadata_bsf.c +++ b/libavcodec/h265_metadata_bsf.c @@ -440,7 +440,7 @@

[FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add hevc_videotoolbox encoder

2017-11-10 Thread Aman Gupta
From: Aman Gupta --- configure| 2 + libavcodec/allcodecs.c | 1 + libavcodec/videotoolboxenc.c | 296 ++- 3 files changed, 214 insertions(+), 85 deletions(-) diff --git a/configure b/configure index

Re: [FFmpeg-devel] [PATCH v4 06/14] avcodec: add decode_params callback to AVHWAccel struct

2017-11-10 Thread Aman Gupta
On Fri, Nov 10, 2017 at 5:45 PM, James Almer wrote: > On 11/10/2017 6:40 PM, Aman Gupta wrote: > > From: Aman Gupta > > > > --- > > libavcodec/avcodec.h | 14 ++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/libavcodec/avcodec.h

Re: [FFmpeg-devel] [PATCH v4 06/14] avcodec: add decode_params callback to AVHWAccel struct

2017-11-10 Thread James Almer
On 11/10/2017 6:40 PM, Aman Gupta wrote: > From: Aman Gupta > > --- > libavcodec/avcodec.h | 14 ++ > 1 file changed, 14 insertions(+) > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h > index c4134424f0..2bd46faa50 100644 > --- a/libavcodec/avcodec.h >

Re: [FFmpeg-devel] [PATCH 2/4] decode: add a method for attaching lavc-internal data to frames

2017-11-10 Thread Michael Niedermayer
On Fri, Nov 10, 2017 at 05:03:15PM +0100, Timo Rothenpieler wrote: > From: Anton Khirnov > > Use the AVFrame.private_ref field. > > This new struct will be useful in the following commits. > > Merges Libav commit 359a8a3e2d1194b52b6c386f94fd0929567dfb67. > --- >

Re: [FFmpeg-devel] [DEVEL][PATCH v2] ffmpeg: fix channel_layout bug on non-default layout

2017-11-10 Thread pkv.stream
Le 11/11/2017 à 1:07 AM, Michael Niedermayer a écrit : On Fri, Nov 10, 2017 at 10:27:48PM +0100, pkv.stream wrote: Le 10/11/2017 à 1:12 AM, Michael Niedermayer a écrit : On Thu, Nov 09, 2017 at 09:37:33PM +0100, pkv.stream wrote: Hi Michael, ffmpeg_opt.c | 11 ++- 1 file

Re: [FFmpeg-devel] [DEVEL][PATCH v2] ffmpeg: fix channel_layout bug on non-default layout

2017-11-10 Thread Michael Niedermayer
On Fri, Nov 10, 2017 at 10:27:48PM +0100, pkv.stream wrote: > Le 10/11/2017 à 1:12 AM, Michael Niedermayer a écrit : > >On Thu, Nov 09, 2017 at 09:37:33PM +0100, pkv.stream wrote: > >>Hi Michael, > >> > ffmpeg_opt.c | 11 ++- > 1 file changed, 10 insertions(+), 1 deletion(-) >

[FFmpeg-devel] [PATCH] avformat/utils: preserve AV_PKT_FLAG_DISCARD in parse_packet

2017-11-10 Thread John Stebbins
--- libavformat/utils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavformat/utils.c b/libavformat/utils.c index 2b2411ffe7..93a5a00105 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1457,6 +1457,7 @@ static int parse_packet(AVFormatContext *s, AVPacket *pkt, int

[FFmpeg-devel] [RFC] H264 Error Resilience

2017-11-10 Thread Michael Niedermayer
Hi all Kieran asked me about h264 ER TODO so here are some ideas H264 features: Redundant pictures. It would be possible to encode a low bitrate image for each access unit and use it when the primary picture has lost slices. This can be limited to slices which would be concealed poorly

Re: [FFmpeg-devel] [PATCH v4 14/14] avcodec/videotoolbox: fix whitespace

2017-11-10 Thread Rodger Combs
Patchset LGTM. > On Nov 10, 2017, at 15:40, Aman Gupta wrote: > > From: Aman Gupta > > --- > libavcodec/videotoolbox.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c > index

[FFmpeg-devel] [PATCH v4 10/14] avcodec/videotoolbox: remove unnecessary if statement

2017-11-10 Thread Aman Gupta
From: Aman Gupta Cosmetic change only. --- libavcodec/videotoolbox.c | 68 +++ 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index ff8ba41821..fc33dce608 100644 ---

[FFmpeg-devel] [PATCH v4 14/14] avcodec/videotoolbox: fix whitespace

2017-11-10 Thread Aman Gupta
From: Aman Gupta --- libavcodec/videotoolbox.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index 9eb06e619f..04c558935d 100644 --- a/libavcodec/videotoolbox.c +++ b/libavcodec/videotoolbox.c @@

[FFmpeg-devel] [PATCH v4 07/14] avcodec/h264: implement new decode_params callback for PPS/SPS

2017-11-10 Thread Aman Gupta
From: Aman Gupta This callback will be used by the VideoToolbox H264 hwaccel so that it can receive SPS and PPS NALUs. VideoToolbox requires PPS changes to be fed into the decoder session, and for the session to be recreated when the SPS changes. --- libavcodec/h264dec.c | 16

[FFmpeg-devel] [PATCH v4 09/14] avcodec/videotoolbox: create avcC even when h264 extradata is missing

2017-11-10 Thread Aman Gupta
From: Aman Gupta Removes the avctx->extradata_size requirement when creating avcC/hvcC, since avctx->extradata is only used in the esds code path. This fixes an issue where the VideoToolbox decoder would not work unless avformat_find_stream_info() was called. ---

[FFmpeg-devel] [PATCH v4 13/14] avcodec/videotoolboxenc: remove spurious warning

2017-11-10 Thread Aman Gupta
From: Aman Gupta --- libavcodec/videotoolboxenc.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index eba6cc672f..a7bef72da8 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -1853,8

[FFmpeg-devel] [PATCH v4 08/14] avcodec/videotoolbox: use decode_params to propagate H264 PPS changes and restart on SPS changes

2017-11-10 Thread Aman Gupta
From: Aman Gupta This fixes decoding of H264 video samples with SPS and PPS changes. See for example https://s3.amazonaws.com/tmm1/videotoolbox/spschange.ts, which previously stalled the decoder and failed to produce any new frames after the SPS change. If the VideoToolbox

[FFmpeg-devel] [PATCH v4 12/14] avcodec/videotoolbox: pass through hevc param changes to the decoder

2017-11-10 Thread Aman Gupta
From: Aman Gupta This includes the SEI_PREFIX/SEI_SUFFIX NALUs, which can contain updates like HEVC_SEI_TYPE_ACTIVE_PARAMETER_SETS. Previously, hevc samples with this SEI present would not playback correctly. See for example https://github.com/lhc7/iina/issues/1123 ---

[FFmpeg-devel] [PATCH v4 11/14] avcodec/hevc: implement new decode_params callback for VideoToolbox

2017-11-10 Thread Aman Gupta
From: Aman Gupta --- libavcodec/hevcdec.c | 32 1 file changed, 32 insertions(+) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 675025b211..501ee6a55e 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -2816,23

[FFmpeg-devel] [PATCH v4 02/14] avcodec/videotoolbox: extract videotoolbox_{start, stop} helpers

2017-11-10 Thread Aman Gupta
From: Aman Gupta These helpers will be used in later commits to automatically restart the decoder session when SPS changes are encountered. --- libavcodec/videotoolbox.c | 22 +++--- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git

[FFmpeg-devel] [PATCH v4 03/14] avcodec/videotoolbox: reset bitstream_size in end_frame

2017-11-10 Thread Aman Gupta
From: Aman Gupta This allows decode_slice to be invoked multiple times before end_frame, causing slices to accumulate before being fed into the VT decoder. An upcoming commit will re-use decode_slice for SPS and PPS nalus, so they can be propagated into the VT decoder session

[FFmpeg-devel] [PATCH v4 04/14] avcodec/videotoolbox: print descriptive errors on decode failures

2017-11-10 Thread Aman Gupta
From: Aman Gupta --- libavcodec/videotoolbox.c | 20 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index a4a282c33a..9db2e1116b 100644 --- a/libavcodec/videotoolbox.c +++

[FFmpeg-devel] [PATCH v4 05/14] avcodec/h264, videotoolbox: return AVERROR_INVALIDDATA when no frames are produced

2017-11-10 Thread Aman Gupta
From: Aman Gupta The only reason videotoolbox wouldn't produce frames is if the data fed to it was invalid, so returning AVERROR_INVALIDDATA makes sense here. Further, it means AVERROR_EXTERNAL can be used in further commits to signal fatal VideoToolbox errors, letting the user

[FFmpeg-devel] [PATCH v4 06/14] avcodec: add decode_params callback to AVHWAccel struct

2017-11-10 Thread Aman Gupta
From: Aman Gupta --- libavcodec/avcodec.h | 14 ++ 1 file changed, 14 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index c4134424f0..2bd46faa50 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3459,6 +3459,20 @@ typedef

[FFmpeg-devel] [PATCH v4 01/14] avcodec/videotoolbox: use early return in videotoolbox_default_free

2017-11-10 Thread Aman Gupta
From: Aman Gupta Cosmetic change only. --- libavcodec/videotoolbox.c | 14 +++--- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index ecb2502c1f..f5a282f72c 100644 --- a/libavcodec/videotoolbox.c +++

Re: [FFmpeg-devel] [PATCH 1/2] aptx: implement the aptX bluetooth codec

2017-11-10 Thread Rostislav Pehlivanov
On 10 November 2017 at 21:09, Aurelien Jacobs wrote: > The encoder was reverse engineered from binary library and from > EP0398973B1 patent (long expired). > The decoder was simply deduced from the encoder. > --- > doc/general.texi| 2 + > libavcodec/Makefile |

Re: [FFmpeg-devel] [PATCH 2/2] aptx: add raw muxer and demuxer for aptX

2017-11-10 Thread Rostislav Pehlivanov
On 10 November 2017 at 21:09, Aurelien Jacobs wrote: > --- > doc/general.texi | 1 + > libavformat/Makefile | 2 ++ > libavformat/allformats.c | 1 + > libavformat/aptxdec.c| 78 ++ > ++ > libavformat/rawenc.c

[FFmpeg-devel] [DEVEL][PATCH v2] ffmpeg: fix channel_layout bug on non-default layout

2017-11-10 Thread pkv.stream
Le 10/11/2017 à 1:12 AM, Michael Niedermayer a écrit : On Thu, Nov 09, 2017 at 09:37:33PM +0100, pkv.stream wrote: Hi Michael, ffmpeg_opt.c | 11 ++- 1 file changed, 10 insertions(+), 1 deletion(-) 2af07f4366efdfaf1018bb2ea29be672befe0823

[FFmpeg-devel] [PATCH] ffmpeg: use explicitly requested hwaccel only

2017-11-10 Thread Timo Rothenpieler
With there being two hwaccels that use the CUDA pix_fmt now, just relying on the pix_fmt to identify the selected hwaccel is not enough anymore. So this checks if the user explicitly selected a hwaccel, and only accepts that one. --- fftools/ffmpeg.c | 7 --- 1 file changed, 4 insertions(+),

Re: [FFmpeg-devel] [PATCH 08/11] avcodec/v210enc: add AVX-512 10-bit line pack function

2017-11-10 Thread James Darnley
On 2017-11-10 14:32, James Darnley wrote: > I mentioned previously that using ZMM registers will cause the CPU to > reduce its frequency. > > Gramner said on IRC that a user should spend 20-30% of time in > AVX-512/ZMM code for it to be a net gain in speed. > From ffmpeg-devel IRC on 2017-10-26

[FFmpeg-devel] [PATCH 2/2] aptx: add raw muxer and demuxer for aptX

2017-11-10 Thread Aurelien Jacobs
--- doc/general.texi | 1 + libavformat/Makefile | 2 ++ libavformat/allformats.c | 1 + libavformat/aptxdec.c| 78 libavformat/rawenc.c | 13 libavformat/utils.c | 1 + 6 files changed, 96 insertions(+)

Re: [FFmpeg-devel] [PATCH 1/2] aptx: implement the aptX bluetooth codec

2017-11-10 Thread Aurelien Jacobs
On Fri, Nov 10, 2017 at 12:25:12AM +, Rostislav Pehlivanov wrote: > On 9 November 2017 at 22:48, Aurelien Jacobs wrote: > > > On Thu, Nov 09, 2017 at 02:32:44PM +, Rostislav Pehlivanov wrote: > > > On 9 November 2017 at 13:37, Aurelien Jacobs wrote: >

[FFmpeg-devel] [PATCH 1/2] aptx: implement the aptX bluetooth codec

2017-11-10 Thread Aurelien Jacobs
The encoder was reverse engineered from binary library and from EP0398973B1 patent (long expired). The decoder was simply deduced from the encoder. --- doc/general.texi| 2 + libavcodec/Makefile | 2 + libavcodec/allcodecs.c | 1 + libavcodec/aptx.c | 860

Re: [FFmpeg-devel] [PATCH] Add android_capture indev

2017-11-10 Thread Felix Matouschek
Hello, here is a new version of the patch with further fixes. Greetings, Felix 0001-avdevice-add-android_camera-indev.patch Description: Binary data ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org

Re: [FFmpeg-devel] [PATCH] h264dec: h264_select_output_frame() - fill correctly has_b_frames based on the level

2017-11-10 Thread Jaroslav Kysela
Dne 9.11.2017 v 21:38 Jaroslav Kysela napsal(a): > The current code does not handle correctly the situation when > sps->num_reoder_frames > was set using the level. The incorrect has_b_frames results in the wrong DTS > guess and > malformed output (wrong 'Non-monotonous DTS' fixup). > >

Re: [FFmpeg-devel] [DEVEL][PATCH] ffmpeg: fix channel_layout bug on non-default layout

2017-11-10 Thread pkv.stream
Le 10/11/2017 à 1:12 AM, Michael Niedermayer a écrit : On Thu, Nov 09, 2017 at 09:37:33PM +0100, pkv.stream wrote: Hi Michael, ffmpeg_opt.c | 11 ++- 1 file changed, 10 insertions(+), 1 deletion(-) 2af07f4366efdfaf1018bb2ea29be672befe0823

Re: [FFmpeg-devel] [DEVEL][PATCH] ffmpeg: fix channel_layout bug on non-default layout

2017-11-10 Thread pkv.stream
Le 10/11/2017 à 1:12 AM, Michael Niedermayer a écrit : On Thu, Nov 09, 2017 at 09:37:33PM +0100, pkv.stream wrote: Hi Michael, ffmpeg_opt.c | 11 ++- 1 file changed, 10 insertions(+), 1 deletion(-) 2af07f4366efdfaf1018bb2ea29be672befe0823

[FFmpeg-devel] [PATCH 3/4] decode: add a mechanism for performing delayed processing on the decoded frames

2017-11-10 Thread Timo Rothenpieler
From: Anton Khirnov This will be useful in the CUVID hwaccel. Merges Libav commit badf0951f54c1332e77455dc40398f3512540c1b. --- libavcodec/decode.c | 15 +++ libavcodec/decode.h | 14 ++ 2 files changed, 29 insertions(+) diff --git

[FFmpeg-devel] [PATCH 1/4] avutil/frame: Add private_ref to AVFrame

2017-11-10 Thread Timo Rothenpieler
From: Michael Niedermayer This gives FFmpeg libs a field that they can freely and safely use. Avoiding the need of wrapping of a users opaque_ref field and its issues. Signed-off-by: Michael Niedermayer --- libavutil/frame.c | 8 +++-

[FFmpeg-devel] [PATCH 2/4] decode: add a method for attaching lavc-internal data to frames

2017-11-10 Thread Timo Rothenpieler
From: Anton Khirnov Use the AVFrame.private_ref field. This new struct will be useful in the following commits. Merges Libav commit 359a8a3e2d1194b52b6c386f94fd0929567dfb67. --- libavcodec/decode.c | 51 ++--

[FFmpeg-devel] [PATCH 4/4] decode: add a per-frame private data for hwaccel use

2017-11-10 Thread Timo Rothenpieler
From: Anton Khirnov This will be useful in the CUVID hwaccel. It should also eventually replace current decoder-specific mechanisms used by various other hwaccels. Merges Libav commit 704311b2946d74a80f65906961cd9baaa18683a3. --- libavcodec/decode.c | 3 +++

Re: [FFmpeg-devel] [PATCH 10/11] avcodec/blockdsp: add AVX-512 version of clear_block(s)

2017-11-10 Thread James Almer
On 11/10/2017 10:28 AM, James Darnley wrote: > On 2017-11-09 20:35, Martin Vignali wrote: >> 2017-11-09 12:58 GMT+01:00 James Darnley : >> >>> From: James Darnley >>> >>> Also adjust alignment requirements where nessecary. >>> --- >>> Whether this patch

Re: [FFmpeg-devel] [PATCH 05/11] avcodec: add stride alignment needed for AVX-512

2017-11-10 Thread James Almer
On 11/10/2017 10:58 AM, James Darnley wrote: > On 2017-11-10 02:38, James Almer wrote: >> On 11/9/2017 8:58 AM, James Darnley wrote: >>> --- >>> configure | 2 ++ >>> libavcodec/internal.h | 4 +++- >>> 2 files changed, 5 insertions(+), 1 deletion(-) >>> >>> diff --git a/configure

Re: [FFmpeg-devel] [PATCH 05/11] avcodec: add stride alignment needed for AVX-512

2017-11-10 Thread James Darnley
On 2017-11-10 02:38, James Almer wrote: > On 11/9/2017 8:58 AM, James Darnley wrote: >> --- >> configure | 2 ++ >> libavcodec/internal.h | 4 +++- >> 2 files changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/configure b/configure >> index 146a87324c..fce8030d91 100755 >> ---

Re: [FFmpeg-devel] [PATCH 08/11] avcodec/v210enc: add AVX-512 10-bit line pack function

2017-11-10 Thread James Darnley
On 2017-11-09 20:42, Martin Vignali wrote: > I doesn't want to block this patch, but > like you say (in your previous version), that this version is not faster, > i'm not sure, it's interesting to apply it. > You already made "real" avx512 version for other funcs, in order to check > the rest of

Re: [FFmpeg-devel] [PATCH 11/11] avcodec/lossless_videodsp: add AVX-512 version of add_bytes

2017-11-10 Thread James Darnley
On 2017-11-09 20:43, Martin Vignali wrote: > 2017-11-09 20:37 GMT+01:00 Martin Vignali : >> lgtm >> >> Can you post your checkasm benchmark result for this ? Yep > $ ./tests/checkasm/checkasm --bench --test=llviddsp > benchmarking with native FFmpeg timers > nop: 26.0 >

Re: [FFmpeg-devel] [PATCH 10/11] avcodec/blockdsp: add AVX-512 version of clear_block(s)

2017-11-10 Thread James Darnley
On 2017-11-09 20:35, Martin Vignali wrote: > 2017-11-09 12:58 GMT+01:00 James Darnley : > >> From: James Darnley >> >> Also adjust alignment requirements where nessecary. >> --- >> Whether this patch is committed or not the change to 4xm.c should be >>

[FFmpeg-devel] [PATCH] avcodec: fix wrong duration of packets (dvd, bluray)

2017-11-10 Thread Александр Слободенюк
Fixing very little bug for blu ray pcm in .mts files: The nature of bug: duration of blu ray packets is little bit wrong. How to reproduce: ./ffprobe -i bluray-pcm-file.mts -show_packets -select_streams a:0 | head -n 50 ... Stream #0:1[0x1100]: Audio: pcm_bluray (HDMV / 0x564D4448), 48000 Hz,

Re: [FFmpeg-devel] [PATCH] aacenc: WIP support for PCEs

2017-11-10 Thread Kv Pham
> Hi atomnuker, > > that's wonderful; > > there are two things also: > > 1) there are changes to make to the list of channel layouts not requiring > PCE > > ==> AV_CH_LAYOUT_5POINT0 to AV_CH_LAYOUT_5POINT0_BACK since the previous > is 5.0(side) while the latter is 5.0 which is what is in spec

Re: [FFmpeg-devel] [PATCH] avfilter/vf_tile: add skip option

2017-11-10 Thread Nicolas George
Le decadi 20 brumaire, an CCXXVI, Paul B Mahol a écrit : > Yes. Ok, I will look at the code with that in mind. > What if user sets overlap to same or greater than nb_frames, just error out? That seems reasonable. Clamping the value with a warning would be ok too, I think. Both of these

Re: [FFmpeg-devel] [PATCH] avfilter/vf_tile: add skip option

2017-11-10 Thread Paul B Mahol
On 11/10/17, Nicolas George wrote: > Le septidi 17 brumaire, an CCXXVI, Paul B Mahol a ecrit : >> Signed-off-by: Paul B Mahol >> --- >> doc/filters.texi | 5 + >> libavfilter/vf_tile.c | 53 >> ++- >> 2

Re: [FFmpeg-devel] [PATCH] avfilter/vf_tile: add skip option

2017-11-10 Thread Nicolas George
Le septidi 17 brumaire, an CCXXVI, Paul B Mahol a écrit : > Signed-off-by: Paul B Mahol > --- > doc/filters.texi | 5 + > libavfilter/vf_tile.c | 53 > ++- > 2 files changed, 49 insertions(+), 9 deletions(-) > > diff