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

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-09-05Merge commit '2143948381c8118bdc2f50bd4079520b9885bd54'Michael Niedermayer
* commit '2143948381c8118bdc2f50bd4079520b9885bd54': Drop unnecessary av_unused attributes. Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-09-05Drop unnecessary av_unused attributes.Diego Biurrun
2014-05-13Use rac_get_prob branchy version when used within a conditional branch.Matt Oliver
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-05Merge commit '3dc6272bed7890a49080e18eacf3c7a4a6594b0d'Michael Niedermayer
* commit '3dc6272bed7890a49080e18eacf3c7a4a6594b0d': Remove a number of unnecessary dsputil.h #includes Conflicts: libavcodec/h264pred.c libavcodec/vc1dsp.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-04Remove a number of unnecessary dsputil.h #includesDiego Biurrun
2013-08-16Merge commit 'cb214707a6cb0d3272ec0261af6f1f5d8b7dabc7'Michael Niedermayer
* commit 'cb214707a6cb0d3272ec0261af6f1f5d8b7dabc7': vp56data: Move all shared enum/struct declarations to common header Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-15vp56data: Move all shared enum/struct declarations to common headerDiego Biurrun
2013-04-20vp56: Use hpeldsp instead of dsputil for half-pel functionsRonald S. Bultje
This makes vp5 and vp6 independent of dsputil. Signed-off-by: Martin Storsjö <martin@martin.st>
2013-04-15vp3: Use full transpose for all IDCTsRonald S. Bultje
This way, the special IDCT permutations are no longer needed. This is similar to how H264 does it, and removes the dsputil dependency imposed by the scantable code. Also remove the unused type == 0 cases from the plain C version of the idct. Signed-off-by: Martin Storsjö <martin@martin.st>
2013-03-13vp56: use hpeldsp instead of dsputil for half-pel functions.Ronald S. Bultje
This makes vp5 and vp6 independent of dsputil.
2013-03-13vp3/x86: use full transpose for all IDCTs.Ronald S. Bultje
This way, the special IDCT permutations are no longer needed. Bfin code is disabled until someone updates it. This is similar to how H264 does it, and removes the dsputil dependency imposed by the scantable code. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-12Merge commit '759001c534287a96dc96d1e274665feb7059145d'Michael Niedermayer
* commit '759001c534287a96dc96d1e274665feb7059145d': lavc decoders: work with refcounted frames. Anton Khirnov (1): lavc decoders: work with refcounted frames. Clément Bœsch (47): lavc/ansi: reset file lavc/ansi: re-do refcounted frame changes from Anton fraps: reset file lavc/fraps: switch to refcounted frames gifdec: reset file lavc/gifdec: switch to refcounted frames dsicinav: resolve conflicts smc: resolve conflicts zmbv: resolve conflicts rpza: resolve conflicts vble: resolve conflicts xxan: resolve conflicts targa: resolve conflicts vmnc: resolve conflicts utvideodec: resolve conflicts tscc: resolve conflicts ulti: resolve conflicts ffv1dec: resolve conflicts dnxhddec: resolve conflicts v210dec: resolve conflicts vp3: resolve conflicts vcr1: resolve conflicts v210x: resolve conflicts wavpack: resolve conflicts pngdec: fix compilation roqvideodec: resolve conflicts pictordec: resolve conflicts mdec: resolve conflicts tiertexseqv: resolve conflicts smacker: resolve conflicts vb: resolve conflicts vqavideo: resolve conflicts xl: resolve conflicts tmv: resolve conflicts vmdav: resolve conflicts truemotion1: resolve conflicts truemotion2: resolve conflicts lcldec: fix compilation libcelt_dec: fix compilation qdrw: fix compilation r210dec: fix compilation rl2: fix compilation wnv1: fix compilation yop: fix compilation tiff: resolve conflicts interplayvideo: fix compilation qpeg: resolve conflicts (FIXME/TESTME). Hendrik Leppkes (33): 012v: convert to refcounted frames 8bps: fix compilation 8svx: resolve conflicts 4xm: resolve conflicts aasc: resolve conflicts bfi: fix compilation aura: fix compilation alsdec: resolve conflicts avrndec: convert to refcounted frames avuidec: convert to refcounted frames bintext: convert to refcounted frames cavsdec: resolve conflicts brender_pix: convert to refcounted frames cinepak: resolve conflicts cinepak: avoid using AVFrame struct directly in private context cljr: fix compilation cpia: convert to refcounted frames cscd: resolve conflicts iff: resolve conflicts and do proper conversion to refcounted frames 4xm: fix reference frame handling cyuv: fix compilation dxa: fix compilation eacmv: fix compilation eamad: fix compilation eatgv: fix compilation escape124: remove unused variable. escape130: convert to refcounted frames evrcdec: convert to refcounted frames exr: convert to refcounted frames mvcdec: convert to refcounted frames paf: properly free the frame data on decode close sgirle: convert to refcounted frames lavfi/moviesrc: use refcounted frames Michael Niedermayer (56): Merge commit '759001c534287a96dc96d1e274665feb7059145d' resolve conflicts in headers motion_est: resolve conflict mpeg4videodec: fix conflicts dpcm conflict fix dpx: fix conflicts indeo3: resolve confilcts kmvc: resolve conflicts kmvc: resolve conflicts h264: resolve conflicts utils: resolve conflicts rawdec: resolve conflcits mpegvideo: resolve conflicts svq1enc: resolve conflicts mpegvideo: dont clear data, fix assertion failure on fate vsynth1 with threads pthreads: resolve conflicts frame_thread_encoder: simple compilefix not yet tested snow: update to buffer refs crytsalhd: fix compile dirac: switch to new API sonic: update to new API svq1: resolve conflict, update to new API ffwavesynth: update to new buffer API g729: update to new API indeo5: fix compile j2kdec: update to new buffer API linopencore-amr: fix compile libvorbisdec: update to new API loco: fix compile paf: update to new API proresdec: update to new API vp56: update to new api / resolve conflicts xface: convert to refcounted frames xan: fix compile&fate v408: update to ref counted buffers v308: update to ref counted buffers yuv4dec: update to ref counted buffers y41p: update to ref counted frames xbm: update to refcounted frames targa_y216: update to refcounted buffers qpeg: fix fate/crash cdxl: fix fate tscc: fix reget buffer useage targa_y216dec: fix style msmpeg4: fix fate h264: ref_picture() copy fields that have been lost too update_frame_pool: use channel field h264: Put code that prevents deadlocks back mpegvideo: dont allow last == current wmalossless: fix buffer ref messup ff_alloc_picture: free tables in case of dimension mismatches h264: fix null pointer dereference and assertion failure frame_thread_encoder: update to bufrefs ec: fix used arrays snowdec: fix off by 1 error in dimensions check h264: disallow single unpaired fields as references of frames Paul B Mahol (2): lavc/vima: convert to refcounted frames sanm: convert to refcounted frames Conflicts: libavcodec/4xm.c libavcodec/8bps.c libavcodec/8svx.c libavcodec/aasc.c libavcodec/alsdec.c libavcodec/anm.c libavcodec/ansi.c libavcodec/avs.c libavcodec/bethsoftvideo.c libavcodec/bfi.c libavcodec/c93.c libavcodec/cavsdec.c libavcodec/cdgraphics.c libavcodec/cinepak.c libavcodec/cljr.c libavcodec/cscd.c libavcodec/dnxhddec.c libavcodec/dpcm.c libavcodec/dpx.c libavcodec/dsicinav.c libavcodec/dvdec.c libavcodec/dxa.c libavcodec/eacmv.c libavcodec/eamad.c libavcodec/eatgq.c libavcodec/eatgv.c libavcodec/eatqi.c libavcodec/error_resilience.c libavcodec/escape124.c libavcodec/ffv1.h libavcodec/ffv1dec.c libavcodec/flicvideo.c libavcodec/fraps.c libavcodec/frwu.c libavcodec/g723_1.c libavcodec/gifdec.c libavcodec/h264.c libavcodec/h264.h libavcodec/h264_direct.c libavcodec/h264_loopfilter.c libavcodec/h264_refs.c libavcodec/huffyuvdec.c libavcodec/idcinvideo.c libavcodec/iff.c libavcodec/indeo2.c libavcodec/indeo3.c libavcodec/internal.h libavcodec/interplayvideo.c libavcodec/ivi_common.c libavcodec/jvdec.c libavcodec/kgv1dec.c libavcodec/kmvc.c libavcodec/lagarith.c libavcodec/libopenjpegdec.c libavcodec/mdec.c libavcodec/mimic.c libavcodec/mjpegbdec.c libavcodec/mjpegdec.c libavcodec/mmvideo.c libavcodec/motion_est.c libavcodec/motionpixels.c libavcodec/mpc7.c libavcodec/mpeg12.c libavcodec/mpeg4videodec.c libavcodec/mpegvideo.c libavcodec/mpegvideo.h libavcodec/msrle.c libavcodec/msvideo1.c libavcodec/nuv.c libavcodec/options_table.h libavcodec/pcx.c libavcodec/pictordec.c libavcodec/pngdec.c libavcodec/pnmdec.c libavcodec/pthread.c libavcodec/qpeg.c libavcodec/qtrle.c libavcodec/r210dec.c libavcodec/rawdec.c libavcodec/roqvideodec.c libavcodec/rpza.c libavcodec/smacker.c libavcodec/smc.c libavcodec/svq1dec.c libavcodec/svq1enc.c libavcodec/targa.c libavcodec/tiertexseqv.c libavcodec/tiff.c libavcodec/tmv.c libavcodec/truemotion1.c libavcodec/truemotion2.c libavcodec/tscc.c libavcodec/ulti.c libavcodec/utils.c libavcodec/utvideodec.c libavcodec/v210dec.c libavcodec/v210x.c libavcodec/vb.c libavcodec/vble.c libavcodec/vcr1.c libavcodec/vmdav.c libavcodec/vmnc.c libavcodec/vp3.c libavcodec/vp56.c libavcodec/vp56.h libavcodec/vp6.c libavcodec/vqavideo.c libavcodec/wavpack.c libavcodec/xl.c libavcodec/xxan.c libavcodec/zmbv.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-08lavc decoders: work with refcounted frames.Anton Khirnov
2013-02-07Merge commit '79dad2a932534d1155079f937649e099f9e5cc27'Michael Niedermayer
* commit '79dad2a932534d1155079f937649e099f9e5cc27': dsputil: Separate h264chroma Conflicts: libavcodec/dsputil_template.c libavcodec/ppc/dsputil_ppc.c libavcodec/vc1dec.c libavcodec/vc1dsp.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-02-06dsputil: Separate h264chromaDiego Biurrun
2013-01-23Merge commit '88bd7fdc821aaa0cbcf44cf075c62aaa42121e3f'Michael Niedermayer
* commit '88bd7fdc821aaa0cbcf44cf075c62aaa42121e3f': Drop DCTELEM typedef Conflicts: libavcodec/alpha/dsputil_alpha.h libavcodec/alpha/motion_est_alpha.c libavcodec/arm/dsputil_init_armv6.c libavcodec/bfin/dsputil_bfin.h libavcodec/bfin/pixels_bfin.S libavcodec/cavs.c libavcodec/cavsdec.c libavcodec/dct-test.c libavcodec/dnxhdenc.c libavcodec/dsputil.c libavcodec/dsputil.h libavcodec/dsputil_template.c libavcodec/eamad.c libavcodec/h264_cavlc.c libavcodec/h264idct_template.c libavcodec/mpeg12.c libavcodec/mpegvideo.c libavcodec/mpegvideo.h libavcodec/mpegvideo_enc.c libavcodec/ppc/dsputil_altivec.c libavcodec/proresdsp.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-23Drop DCTELEM typedefDiego Biurrun
It does not help as an abstraction and adds dsputil dependencies. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-12-21Merge commit '6906b19346ae8a330bfaa1c16ce535be10789723'Michael Niedermayer
* commit '6906b19346ae8a330bfaa1c16ce535be10789723': lavc: add missing files for arm lavc: introduce VideoDSPContext Conflicts: configure libavcodec/arm/dsputil_init_armv5te.c libavcodec/dsputil.c libavcodec/dsputil.h libavcodec/dsputil_template.c libavcodec/h264.c libavcodec/mpegvideo.h libavcodec/mpegvideo_enc.c libavcodec/x86/dsputil_mmx.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-20lavc: introduce VideoDSPContextRonald S. Bultje
Move some functions from dsputil. The idea is that videodsp contains functions that are useful for a large and varied set of video decoders. Currently, it contains emulated_edge_mc() and prefetch(). Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2012-12-15Merge commit 'bb675d3ac6d722d5e117ae9042a996b55ca05b1d'Michael Niedermayer
* commit 'bb675d3ac6d722d5e117ae9042a996b55ca05b1d': vp56: make parse_header return standard error codes Conflicts: libavcodec/vp56.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-14vp56: make parse_header return standard error codesLuca Barbato
Returning 0 for failure is misleading. CC: libav-stable@libav.org
2012-12-05Merge commit 'df9b9567518f2840d79a4a96b447ebe1aa326408'Michael Niedermayer
* commit 'df9b9567518f2840d79a4a96b447ebe1aa326408': lavc: fix decode_frame() third parameter semantics for video decoders Conflicts: libavcodec/cscd.c libavcodec/eamad.c libavcodec/ffv1dec.c libavcodec/gifdec.c libavcodec/h264.c libavcodec/iff.c libavcodec/mjpegdec.c libavcodec/pcx.c libavcodec/vp56.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-05lavc: fix decode_frame() third parameter semantics for video decodersAnton Khirnov
It's got_frame, not data size
2012-10-06Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: yuv4mpeg: return proper error codes. Give all anonymously typedeffed structs in headers a name fate: Add parseutils test parseutils-test: Drop random colors from parsing test vf_pad/scale: use double precision for aspect ratios. build: error on variable-length arrays ppc: swscale: rework yuv2planeX_altivec() ppc: fmtconvert: kill VLA in float_to_int16_interleave_altivec() x86: dsputil: kill VLA in gmc_mmx() libspeexenc: Updated commentary to reflect recent changes libspeexenc: Add an option for enabling DTX doc/APIchanges: fill in missing dates and hashes. lavr: bump major to 1 and declare it stable. lavr: change the type of the data buffers to uint8_t**. lavc: deprecate the audio resampling API. Conflicts: cmdutils.h configure doc/APIchanges ffplay.c libavcodec/dwt.h libavcodec/libspeexenc.c libavfilter/vf_pad.c libavfilter/vf_scale.c libavformat/asf.h tests/fate/libavutil.mak tests/ref/fate/parseutils Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-06Give all anonymously typedeffed structs in headers a nameDiego Biurrun
Anonymous structs cannot be forward declared and have no benefit.
2012-09-15lavc/vp6: Implement "slice" threading for VP6A decodeBen Jackson
The YUV channels of VP6 are encoded in a highly linear fashion which does not have any slice-like concept to thread. The alpha channel of VP6A is fairly independent of the YUV and comprises 40% of the work. This patch uses the THREAD_SLICE capability to split the YUV and A decodes into separate threads. Two bugs are fixed by splitting YUV and alpha state: - qscale_table from VP6A decode was for alpha channel instead of YUV - alpha channel filtering settings were overwritten by YUV header parse Signed-off-by: Ben Jackson <ben@ben.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-15lavc/vp56: Move golden_frame into VP56ContextBen Jackson
Makes golden_frame more like other frame data, paves way for threading alpha channel decode. Signed-off-by: Ben Jackson <ben@ben.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-15lavc/vp56: Refactor ff_vp56_init into ff_vp56_init/ff_vp56_init_contextBen Jackson
Pave the way for per-thread context initialization. Signed-off-by: Ben Jackson <ben@ben.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-28vp56: Don't use DECLARE_ALIGN on a typedef nameDerek Buitenhuis
Instead, use it on the first member, since by definition, if any member is aligned, the whole struct must be, in order to maintain that alignment. Fixes compilation with some finicky compilers, like a mix of libclang/msvc Idea for fix from Måns Rullgård. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-27vp56: Don't use DECLARE_ALIGN on a typedef nameDerek Buitenhuis
Instead, use it on the first member, since by definition, if any member is aligned, the whole struct must be, in order to maintain that alignment. Fixes compilation with some finicky compilers. Idea for fix from Måns Rullgård. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2012-07-19Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: ppc: fix build with altivec disabled vp3: move idct and loop filter pointers to new vp3dsp context build: add CONFIG_VP3DSP, reduce repetition in OBJS lists tscc2: do not add/subtract 128 bias during DCT tscc2: fix typo in DCT configure: clarify external library section of help output configure: mark libfdk-aac as nonfree configure: cosmetics: drop some unnecessary backslashes os_support: K&R formatting cosmetics Conflicts: configure libavcodec/vp3.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-07-18vp3: move idct and loop filter pointers to new vp3dsp contextMans Rullgard
This moves all VP3-specific function pointers from dsputil to a new vp3dsp context. There is no reason to ever use the VP3 IDCT where an MPEG2 IDCT is expected or vice versa. Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-01-08Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: (29 commits) cabac: Move code only used within the CABAC test program into the test program. vp56: Drop unnecessary cabac.h #include. h264-test: Initialize AVCodecContext.av_class. build: Skip compiling network.h and rtsp.h if networking is not enabled. cosmetics: drop some pointless parentheses Disable annoying warning without changing behavior faq: Solutions for common problems with sample paths when running FATE. avcodec: attempt to clarify the CODEC_CAP_DELAY documentation avcodec: fix avcodec_encode_audio() documentation. FATE: xmv-demux test; exercise the XMV demuxer without decoding the perceptual codecs inside. vqf: recognize more metadata chunks FATE test: BMV demuxer and associated video and audio decoders. FATE: indeo4 video decoder test. FATE: update xxan-wc4 test to a sample with more code coverage. Change the recent h264_mp4toannexb bitstream filter test to output to an elementary stream rather than a program stream. g722enc: validate AVCodecContext.trellis g722enc: set frame_size, and also handle an odd number of input samples g722enc: split encoding into separate functions for trellis vs. no trellis mpegaudiodec: Use clearer pointer math tta: Fix returned error code at EOF ... Conflicts: libavcodec/h264.c libavcodec/indeo3.c libavcodec/interplayvideo.c libavcodec/ivi_common.c libavcodec/libxvidff.c libavcodec/mpegvideo.c libavcodec/ppc/mpegvideo_altivec.c libavcodec/tta.c libavcodec/utils.c libavfilter/vsrc_buffer.c libavformat/Makefile tests/fate/indeo.mak tests/ref/acodec/g722 Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-08vp56: Drop unnecessary cabac.h #include.Diego Biurrun
2011-10-27VP8: Remove no longer used vp8_rac_get_tree_with_offsetDavid Conrad
2011-10-07vp6: Check for huffman tree build errorsLaurent Aimar
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2011-09-22Check for huffman tree building error in vp6 decoder.Laurent Aimar
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-07-15Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: configure: Automatically add more flags required on symbian mem.h: switch doxygen parameter order to match function prototype doxygen: replace @sa tag by the more readable but equivalent @see doxygen: use Doxygen markup for authors and web links where appropriate doxygen: do not include license boilerplate in Doxygen documentation ac3enc: Mark AVClasses const ffserver: Replace two loops with one loop. ffmpeg: Fix the check for experimental codecs swscale: extend mmx padding. swscale: clip unscaled colorspace conversion path. doxygen: misc consistency cosmetics doc: remove file name from @file directive in Doxygen usage example doxygen: consistently place brief description doxygen: place empty line between brief description and detailed description avformat_open_input(): Add braces to shut up gcc warning. Conflicts: libavcodec/8svx.c libavcodec/tiff.c libavcodec/tiff.h libavcodec/vaapi_h264.c libavcodec/vorbis.c libavcodec/vorbisdec.c libavcodec/vp6.c libswscale/swscale_unscaled.c libswscale/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-07-15doxygen: do not include license boilerplate in Doxygen documentationDiego Biurrun
2011-03-19Replace FFmpeg with Libav in licence headersMans Rullgard
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-13ARM optimised vp56_rac_get_prob()Mans Rullgard
Approximately 3% faster on Cortex-A8. Signed-off-by: Mans Rullgard <mans@mansr.com> (cherry picked from commit 7da48fd0111adf504cfcfc5ebda7fd0681968041)
2011-02-11ARM optimised vp56_rac_get_prob()Mans Rullgard
Approximately 3% faster on Cortex-A8. Signed-off-by: Mans Rullgard <mans@mansr.com>
2010-08-12VP5/6/8: ~7% faster arithmetic decodingJason Garrett-Glaser
Grab from the bitstream in 16-bit chunks instead of 8-bit chunks. TODO: grab in 32-bit chunks on 64-bit systems. Originally committed as revision 24783 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-08-05VP5/6/8: eliminate CABAC dependencyJason Garrett-Glaser
Create a custom table for VP5/6/8's renorm to avoid depending on H.264's. Saves one instruction in the arithmetic decoder as well. Originally committed as revision 24701 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-08-03Silence unused function warnings in vp56.hJason Garrett-Glaser
Originally committed as revision 24684 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-08-03VP5/6/8: tweak some arithcoder inliningJason Garrett-Glaser
Always inline the arithmetic coder, except in the case of header-parsing stuff, in which case don't inline it at all to save code size. Originally committed as revision 24677 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-28Reindent after last commit.Alex Converse
Originally committed as revision 24562 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-28ff_prefix non static vp56 functions.Alex Converse
Originally committed as revision 24561 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-24Inline asm for VP56 arith coderEli Friedman
This is a lot more reliable to get cmov rather than trying to trick gcc into generating it, useful since it's 2% faster overall. Patch by Eli Friedman <eli.friedman at gmail> Originally committed as revision 24471 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-24Decode DCT tokens by branching to a different code path for each branchDavid Conrad
on the huffman tree, instead of traversing the tree in a while loop. Based on the similar optimization in libvpx's detokenize.c 10% faster at normal bitrates, and 30% faster for high-bitrate intra-only Originally committed as revision 24468 to svn://svn.ffmpeg.org/ffmpeg/trunk