Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-12-17lavc/nellymoserenc: avoid wasteful powGanesh Ajjanagadde
exp2 suffices here. Some trivial speedup is done in addition here by reusing results. This retains accuracy, and in particular results in identical values with GNU libm + gcc/clang. sample benchmark (Haswell, GNU/Linux): proposed : 424160 decicycles in pow_table, 512 runs, 0 skips exp2 only: 1262093 decicycles in pow_table, 512 runs, 0 skips old : 2849085 decicycles in pow_table, 512 runs, 0 skips Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-30avcodec/nellymoserenc: use log2 instead of log()/M_LN2Ganesh Ajjanagadde
This is likely more precise and conveys the intent better. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-07-27Merge commit 'def97856de6021965db86c25a732d78689bd6bb0'Michael Niedermayer
* commit 'def97856de6021965db86c25a732d78689bd6bb0': lavc: AV-prefix all codec capabilities Conflicts: cmdutils.c ffmpeg.c ffplay.c libavcodec/8svx.c libavcodec/aacenc.c libavcodec/ac3dec.c libavcodec/adpcm.c libavcodec/alac.c libavcodec/atrac3plusdec.c libavcodec/bink.c libavcodec/dnxhddec.c libavcodec/dvdec.c libavcodec/dvenc.c libavcodec/ffv1dec.c libavcodec/ffv1enc.c libavcodec/fic.c libavcodec/flacdec.c libavcodec/flacenc.c libavcodec/flvdec.c libavcodec/fraps.c libavcodec/frwu.c libavcodec/gifdec.c libavcodec/h261dec.c libavcodec/hevc.c libavcodec/iff.c libavcodec/imc.c libavcodec/libopenjpegdec.c libavcodec/libvo-aacenc.c libavcodec/libvorbisenc.c libavcodec/libvpxdec.c libavcodec/libvpxenc.c libavcodec/libx264.c libavcodec/mjpegbdec.c libavcodec/mjpegdec.c libavcodec/mpegaudiodec_float.c libavcodec/msmpeg4dec.c libavcodec/mxpegdec.c libavcodec/nvenc_h264.c libavcodec/nvenc_hevc.c libavcodec/pngdec.c libavcodec/qpeg.c libavcodec/ra288.c libavcodec/rv10.c libavcodec/s302m.c libavcodec/sp5xdec.c libavcodec/takdec.c libavcodec/tiff.c libavcodec/tta.c libavcodec/utils.c libavcodec/v210dec.c libavcodec/vp6.c libavcodec/vp9.c libavcodec/wavpack.c libavcodec/yop.c Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27Merge commit '7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615'Michael Niedermayer
* commit '7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615': lavc: AV-prefix all codec flags Conflicts: doc/examples/muxing.c ffmpeg.c ffmpeg_opt.c ffplay.c libavcodec/aacdec.c libavcodec/aacenc.c libavcodec/ac3dec.c libavcodec/ac3enc_float.c libavcodec/atrac1.c libavcodec/atrac3.c libavcodec/atrac3plusdec.c libavcodec/dcadec.c libavcodec/ffv1enc.c libavcodec/h264.c libavcodec/h264_loopfilter.c libavcodec/h264_mb.c libavcodec/imc.c libavcodec/libmp3lame.c libavcodec/libtheoraenc.c libavcodec/libtwolame.c libavcodec/libvpxenc.c libavcodec/libxavs.c libavcodec/libxvid.c libavcodec/mpeg12dec.c libavcodec/mpeg12enc.c libavcodec/mpegaudiodec_template.c libavcodec/mpegvideo.c libavcodec/mpegvideo_enc.c libavcodec/mpegvideo_motion.c libavcodec/nellymoserdec.c libavcodec/nellymoserenc.c libavcodec/nvenc.c libavcodec/on2avc.c libavcodec/options_table.h libavcodec/opus_celt.c libavcodec/pngenc.c libavcodec/ra288.c libavcodec/ratecontrol.c libavcodec/twinvq.c libavcodec/vc1_block.c libavcodec/vc1_loopfilter.c libavcodec/vc1_mc.c libavcodec/vc1dec.c libavcodec/vorbisdec.c libavcodec/vp3.c libavcodec/wma.c libavcodec/wmaprodec.c libavcodec/x86/hpeldsp_init.c libavcodec/x86/me_cmp_init.c Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27lavc: AV-prefix all codec capabilitiesVittorio Giovara
Express bitfields more simply. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27lavc: AV-prefix all codec flagsVittorio Giovara
Convert doxygen to multiline and express bitfields more simply. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27avcodec: Add a min size parameter to ff_alloc_packet2()Michael Niedermayer
This parameter can be used to inform the allocation code about how much downsizing might occur, and can be used to optimize how to allocate the packet Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-02-26Fix buffer_size argument to init_put_bits() in multiple encoders.Dyami Caliri
Several encoders were multiplying the buffer size by 8, in order to get a bit size. However, the buffer_size argument is for the byte size of the buffer. We had experienced crashes encoding prores (Anatoliy) at size 4096x4096.
2015-02-01avcodec/nellymoserenc: replace assert by av_assert1()Michael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-18avcodec/nellymoser: Use avpriv_float_dsp_alloc()Michael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-16avcodec/nellymoserenc: update comment to match ↵Michael Niedermayer
5c805d69a49a1f32a7a8a1b16fb3d631d85ca56d Found-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-13avcodec/nellymoserenc: fix sign errorMichael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-13nellymoserenc: fix array indexVittorio Giovara
CC: libav-stable@libav.org Bug-Id: CID 732258
2014-11-13nellymoserenc: fix array element orderingMichael Niedermayer
Fixes assertion failures and valgrind warnings in trellis encoder. CC: libav-stable@libav.org Bug-Id: CID 732256 / CID 732257
2014-10-19avcodec/nellymoserenc: use av_freep(), do not leave stale pointers in memoryMichael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-14Merge commit '2df0c32ea12ddfa72ba88309812bfb13b674130f'Michael Niedermayer
* commit '2df0c32ea12ddfa72ba88309812bfb13b674130f': lavc: use a separate field for exporting audio encoder padding Conflicts: libavcodec/audio_frame_queue.c libavcodec/avcodec.h libavcodec/libvorbisenc.c libavcodec/utils.c libavcodec/version.h libavcodec/wmaenc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-13lavc: use a separate field for exporting audio encoder paddingAnton Khirnov
Currently, the amount of padding inserted at the beginning by some audio encoders, is exported through AVCodecContext.delay. However - the term 'delay' is heavily overloaded and can have multiple different meanings even in the case of audio encoding. - this field has entirely different meanings, depending on whether the codec context is used for encoding or decoding (and has yet another different meaning for video), preventing generic handling of the codec context. Therefore, add a new field -- AVCodecContext.initial_padding. It could conceivably be used for decoding as well at a later point.
2014-03-04Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: put_bits: Remove unused includes Conflicts: libavcodec/put_bits.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-04put_bits: Remove unused includesVittorio Giovara
This requires adding includes to other files that relied on these being included implicitly.
2013-10-04Merge commit 'b2bed9325dbd6be0da1d91ffed3f513c40274fd2'Michael Niedermayer
* commit 'b2bed9325dbd6be0da1d91ffed3f513c40274fd2': cosmetics: Group .name and .long_name together in codec/format declarations Conflicts: libavcodec/8svx.c libavcodec/alac.c libavcodec/cljr.c libavcodec/dnxhddec.c libavcodec/dnxhdenc.c libavcodec/dpxenc.c libavcodec/dvdec.c libavcodec/dvdsubdec.c libavcodec/dvdsubenc.c libavcodec/ffv1dec.c libavcodec/flacdec.c libavcodec/flvdec.c libavcodec/fraps.c libavcodec/frwu.c libavcodec/g726.c libavcodec/gif.c libavcodec/gifdec.c libavcodec/h261dec.c libavcodec/h263dec.c libavcodec/iff.c libavcodec/imc.c libavcodec/libopencore-amr.c libavcodec/libopenjpegdec.c libavcodec/libopenjpegenc.c libavcodec/libspeexenc.c libavcodec/libvo-amrwbenc.c libavcodec/libvorbisenc.c libavcodec/libvpxenc.c libavcodec/libx264.c libavcodec/libxavs.c libavcodec/libxvid.c libavcodec/ljpegenc.c libavcodec/mjpegbdec.c libavcodec/mjpegdec.c libavcodec/mpeg12dec.c libavcodec/mpeg4videodec.c libavcodec/msmpeg4dec.c libavcodec/pgssubdec.c libavcodec/pngdec.c libavcodec/pngenc.c libavcodec/proresdec_lgpl.c libavcodec/proresenc_kostya.c libavcodec/ra144enc.c libavcodec/rawdec.c libavcodec/rv10.c libavcodec/sp5xdec.c libavcodec/takdec.c libavcodec/tta.c libavcodec/v210dec.c libavcodec/vp6.c libavcodec/wavpack.c libavcodec/xbmenc.c libavcodec/yop.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-04cosmetics: Group .name and .long_name together in codec/format declarationsDiego Biurrun
2013-03-13Merge commit '0f24a3ca999a702f83af9307f9f47b6fdeb546a5'Michael Niedermayer
* commit '0f24a3ca999a702f83af9307f9f47b6fdeb546a5': lavc: remove disabled FF_API_OLD_ENCODE_VIDEO cruft lavc: remove disabled FF_API_OLD_ENCODE_AUDIO cruft lavc: remove disabled FF_API_OLD_DECODE_AUDIO cruft Conflicts: libavcodec/flacenc.c libavcodec/libgsm.c libavcodec/utils.c libavcodec/version.h The compatibility wrapers are left as they likely sre still in wide use. They will be removed when they break or otherwise cause work without an volunteer being available. Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-09lavc: remove disabled FF_API_OLD_ENCODE_AUDIO cruftAnton Khirnov
2013-03-07normalize calls to ff_alloc_packet2James Zern
- check ret < 0 - remove excessive error log Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-02-26Merge commit 'c242bbd8b6939507a1a6fb64101b0553d92d303f'Michael Niedermayer
* commit 'c242bbd8b6939507a1a6fb64101b0553d92d303f': Remove unnecessary dsputil.h #includes Conflicts: libavcodec/ffv1.c libavcodec/h261dec.c libavcodec/h261enc.c libavcodec/h264pred.c libavcodec/lpc.h libavcodec/mjpegdec.c libavcodec/rectangle.h libavcodec/x86/idct_sse2_xvid.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-02-26Remove unnecessary dsputil.h #includesDiego Biurrun
2013-01-23Merge commit '42d324694883cdf1fff1612ac70fa403692a1ad4'Michael Niedermayer
* commit '42d324694883cdf1fff1612ac70fa403692a1ad4': floatdsp: move vector_fmul_reverse from dsputil to avfloatdsp. Conflicts: libavcodec/arm/dsputil_init_vfp.c libavcodec/arm/dsputil_vfp.S libavcodec/dsputil.c libavcodec/ppc/float_altivec.c libavcodec/x86/dsputil.asm libavutil/x86/float_dsp.asm Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-22floatdsp: move vector_fmul_reverse from dsputil to avfloatdsp.Ronald S. Bultje
Now, nellymoserenc and aacenc no longer depends on dsputil. Independent of this patch, wmaprodec also does not depend on dsputil, so I removed it from there also.
2013-01-14lavc: Fix assignments in if() when calling ff_af_queue_addMichael Niedermayer
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-01-14nellymoserenc: Fix assignments in if()Michael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-12nellymoserenc: fix array element orderingMichael Niedermayer
Fixes assertion failures in trellis encoder Fixes valgrind warnings in trellis encoder Fixes CID732257 Fixes CID732256 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-08Merge commit '36ef5369ee9b336febc2c270f8718cec4476cb85'Michael Niedermayer
* commit '36ef5369ee9b336febc2c270f8718cec4476cb85': Replace all CODEC_ID_* with AV_CODEC_ID_* lavc: add AV prefix to codec ids. Conflicts: doc/APIchanges doc/examples/decoding_encoding.c doc/examples/muxing.c ffmpeg.c ffprobe.c ffserver.c libavcodec/8svx.c libavcodec/avcodec.h libavcodec/dnxhd_parser.c libavcodec/dvdsubdec.c libavcodec/error_resilience.c libavcodec/h263dec.c libavcodec/libvorbisenc.c libavcodec/mjpeg_parser.c libavcodec/mjpegenc.c libavcodec/mpeg12.c libavcodec/mpeg4videodec.c libavcodec/mpegvideo.c libavcodec/mpegvideo_enc.c libavcodec/pcm.c libavcodec/r210dec.c libavcodec/utils.c libavcodec/v210dec.c libavcodec/version.h libavdevice/alsa-audio-dec.c libavdevice/bktr.c libavdevice/v4l2.c libavformat/asfdec.c libavformat/asfenc.c libavformat/avformat.h libavformat/avidec.c libavformat/caf.c libavformat/electronicarts.c libavformat/flacdec.c libavformat/flvdec.c libavformat/flvenc.c libavformat/framecrcenc.c libavformat/img2.c libavformat/img2dec.c libavformat/img2enc.c libavformat/ipmovie.c libavformat/isom.c libavformat/matroska.c libavformat/matroskadec.c libavformat/matroskaenc.c libavformat/mov.c libavformat/movenc.c libavformat/mp3dec.c libavformat/mpeg.c libavformat/mpegts.c libavformat/mxf.c libavformat/mxfdec.c libavformat/mxfenc.c libavformat/nsvdec.c libavformat/nut.c libavformat/oggenc.c libavformat/pmpdec.c libavformat/rawdec.c libavformat/rawenc.c libavformat/riff.c libavformat/sdp.c libavformat/utils.c libavformat/vocenc.c libavformat/wtv.c libavformat/xmv.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-07Replace all CODEC_ID_* with AV_CODEC_ID_*Anton Khirnov
2012-06-09Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: float_dsp: ppc: add a separate header for Altivec function prototypes ARM: fix float_dsp breakage from d5a7229 Add a float DSP framework to libavutil PPC: Move types_altivec.h and util_altivec.h from libavcodec to libavutil ARM: Move asm.S from libavcodec to libavutil vc1dsp: mark put/avg_vc1_mspel_mc() always_inline Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-06-08Add a float DSP framework to libavutilJustin Ruggles
Move vector_fmul() from DSPContext to AVFloatDSPContext.
2012-04-08Fix nellymoser encoder crash with hardcoded tables.Reimar Döffinger
Use the correct init function to avoid crashes due to writing to a rodata location. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-04-08Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: rtpdec_asf: Set the no_resync_search option for the chained asf demuxer asfdec: Add an option for not searching for the packet markers cosmetics: Clean up the tiffenc pix_fmts declaration to match the style of others cosmetics: Align codec declarations cosmetics: Convert mimic.c to utf-8 avconv: remove an unused function parameter. avconv: remove now pointless variables. avconv: drop support for building without libavfilter. nellymoserenc: fix crash due to memsetting the wrong area. libavformat: Only require first packet to be known for audio/video streams avplay: Don't try to scale timestamps if the tb isn't set Conflicts: Changelog configure ffmpeg.c libavcodec/aacenc.c libavcodec/bmpenc.c libavcodec/dnxhddec.c libavcodec/dnxhdenc.c libavcodec/ffv1.c libavcodec/flacenc.c libavcodec/fraps.c libavcodec/huffyuv.c libavcodec/libopenjpegdec.c libavcodec/mpeg12enc.c libavcodec/mpeg4videodec.c libavcodec/pamenc.c libavcodec/pgssubdec.c libavcodec/pngenc.c libavcodec/qtrleenc.c libavcodec/rawdec.c libavcodec/sgienc.c libavcodec/tiffenc.c libavcodec/v210dec.c libavcodec/wmv2dec.c libavformat/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-04-06cosmetics: Align codec declarationsMartin Storsjö
Also break some long lines, remove codec function placeholder comments and add spaces in sample/pixel format lists. Signed-off-by: Martin Storsjö <martin@martin.st>
2012-04-06nellymoserenc: fix crash due to memsetting the wrong area.Reimar Döffinger
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de> Signed-off-by: Martin Storsjö <martin@martin.st>
2012-04-06nellymoserenc: fix crash due to memsetting the wrong area.Reimar Döffinger
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-03-23cosmetics: remove superfluous curly bracketsPaul B Mahol
Signed-off-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-03-22nellymoserenc: switch to ff_alloc_packet2().Michael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-03-22Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: (26 commits) adxenc: use AVCodec.encode2() adxenc: Use the AVFrame in ADXContext for coded_frame indeo4: fix out-of-bounds function call. configure: Restructure help output. configure: Internal-only components should not be command-line selectable. vorbisenc: use AVCodec.encode2() libvorbis: use AVCodec.encode2() libopencore-amrnbenc: use AVCodec.encode2() ra144enc: use AVCodec.encode2() nellymoserenc: use AVCodec.encode2() roqaudioenc: use AVCodec.encode2() libspeex: use AVCodec.encode2() libvo_amrwbenc: use AVCodec.encode2() libvo_aacenc: use AVCodec.encode2() wmaenc: use AVCodec.encode2() mpegaudioenc: use AVCodec.encode2() libmp3lame: use AVCodec.encode2() libgsmenc: use AVCodec.encode2() libfaac: use AVCodec.encode2() g726enc: use AVCodec.encode2() ... Conflicts: configure libavcodec/Makefile libavcodec/ac3enc.c libavcodec/adxenc.c libavcodec/libgsm.c libavcodec/libvorbis.c libavcodec/vorbisenc.c libavcodec/wmaenc.c tests/ref/acodec/g722 tests/ref/lavf/asf tests/ref/lavf/ffm tests/ref/lavf/mkv tests/ref/lavf/mpg tests/ref/lavf/rm tests/ref/lavf/ts tests/ref/seek/lavf_asf tests/ref/seek/lavf_ffm tests/ref/seek/lavf_mkv tests/ref/seek/lavf_mpg tests/ref/seek/lavf_rm tests/ref/seek/lavf_ts Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-03-21nellymoserenc: use AVCodec.encode2()Justin Ruggles
2012-03-05Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: (27 commits) cmdutils: use new avcodec_is_decoder/encoder() functions. lavc: make codec_is_decoder/encoder() public. lavc: deprecate AVCodecContext.sub_id. libcdio: add a forgotten AVClass to the private context. swscale: remove "cpu flags" from -sws_flags description. proresenc: give user a possibility to alter some encoding parameters vorbisenc: add output buffer overwrite protection libopencore-amrnbenc: fix end-of-stream handling ra144enc: fix end-of-stream handling nellymoserenc: zero any leftover packet bytes nellymoserenc: use proper MDCT overlap delay qpeg: Use bytestream2 functions to prevent buffer overreads. swscale: make %rep unconditional. vp8: convert simple loopfilter x86 assembly to use named arguments. vp8: convert idct x86 assembly to use named arguments. vp8: convert mc x86 assembly to use named arguments. vp8: convert loopfilter x86 assembly to use cpuflags(). vp8: convert idct/mc x86 assembly to use cpuflags(). swscale: remove now unnecessary hack. x86inc: don't "bake" stack_offset in named arguments. ... Conflicts: cmdutils.c doc/APIchanges libavcodec/mpeg12.c libavcodec/options.c libavcodec/qpeg.c libavcodec/utils.c libavcodec/version.h libavdevice/libcdio.c tests/lavf-regression.sh Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-03-04nellymoserenc: zero any leftover packet bytesJustin Ruggles
fixes writing of uninitialized packet data
2012-03-04nellymoserenc: use proper MDCT overlap delayJustin Ruggles
2012-02-26Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: (34 commits) mlp_parser: fix the channel mask value used for the top surround channel vorbisenc: check all allocations for failure roqaudioenc: return AVERROR codes instead of -1 roqaudioenc: set correct bit rate roqaudioenc: use AVCodecContext.frame_size correctly. roqaudioenc: remove unneeded sample_fmt check ra144enc: use int16_t* for input samples rather than void* ra144enc: set AVCodecContext.coded_frame ra144enc: remove unneeded sample_fmt check nellymoserenc: set AVCodecContext.coded_frame nellymoserenc: improve error checking in encode_init() nellymoserenc: return AVERROR codes instead of -1 libvorbis: improve error checking in oggvorbis_encode_init() mpegaudioenc: return AVERROR codes instead of -1 libfaac: improve error checking and handling in Faac_encode_init() avutil: add AVERROR_UNKNOWN check for coded_frame allocation failure in several audio encoders audio encoders: do not set coded_frame->key_frame. g722enc: check for trellis data allocation error libspeexenc: export encoder delay through AVCodecContext.delay ... Conflicts: doc/APIchanges libavcodec/avcodec.h libavcodec/fraps.c libavcodec/kgv1dec.c libavcodec/libfaac.c libavcodec/libgsm.c libavcodec/libvorbis.c libavcodec/mlp_parser.c libavcodec/roqaudioenc.c libavcodec/vorbisenc.c libavutil/avutil.h libavutil/error.c libavutil/error.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-02-25nellymoserenc: set AVCodecContext.coded_frameJustin Ruggles
2012-02-25nellymoserenc: improve error checking in encode_init()Justin Ruggles