Re: [FFmpeg-devel] [PATCH 1/3] avcodec/diracdec: Inline svq3_get_ue_golomb() and merge the sign bit decoding into it
On Wed, Jan 13, 2016 at 04:11:40PM +, Rostislav Pehlivanov wrote: > On Tue, 2016-01-12 at 23:32 +0100, Michael Niedermayer wrote: > > From: Michael Niedermayer > > > > This avoids closing and opening the bit reader > > > > Signed-off-by: Michael Niedermayer > > --- > > libavcodec/diracdec.c | 37 ++--- > > 1 file changed, 34 insertions(+), 3 deletions(-) > > > > LGTM, applied thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The bravest are surely those who have the clearest vision of what is before them, glory and danger alike, and yet notwithstanding go out to meet it. -- Thucydides signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/3] avcodec/diracdec: Inline svq3_get_ue_golomb() and merge the sign bit decoding into it
On Tue, 2016-01-12 at 23:32 +0100, Michael Niedermayer wrote: > From: Michael Niedermayer > > This avoids closing and opening the bit reader > > Signed-off-by: Michael Niedermayer > --- > libavcodec/diracdec.c | 37 ++--- > 1 file changed, 34 insertions(+), 3 deletions(-) > LGTM, Thanks ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 1/3] avcodec/diracdec: Inline svq3_get_ue_golomb() and merge the sign bit decoding into it
On Tue, Jan 12, 2016 at 11:32:56PM +0100, Michael Niedermayer wrote: > From: Michael Niedermayer > > This avoids closing and opening the bit reader > > Signed-off-by: Michael Niedermayer > --- > libavcodec/diracdec.c | 37 ++--- > 1 file changed, 34 insertions(+), 3 deletions(-) Note, theres alot more that can be done to speed this up, this patchset is just a few steps ... [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB In fact, the RIAA has been known to suggest that students drop out of college or go to community college in order to be able to afford settlements. -- The RIAA signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 1/3] avcodec/diracdec: Inline svq3_get_ue_golomb() and merge the sign bit decoding into it
From: Michael Niedermayer This avoids closing and opening the bit reader Signed-off-by: Michael Niedermayer --- libavcodec/diracdec.c | 37 ++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/libavcodec/diracdec.c b/libavcodec/diracdec.c index c67f845..fe879bb 100644 --- a/libavcodec/diracdec.c +++ b/libavcodec/diracdec.c @@ -485,13 +485,44 @@ static av_cold int dirac_decode_end(AVCodecContext *avctx) static inline int coeff_unpack_golomb(GetBitContext *gb, int qfactor, int qoffset) { int sign, coeff; +uint32_t buf; -coeff = svq3_get_ue_golomb(gb); +OPEN_READER(re, gb); +UPDATE_CACHE(re, gb); +buf = GET_CACHE(re, gb); + +if (buf & 0xAA80) { +buf >>= 32 - 8; +SKIP_BITS(re, gb, ff_interleaved_golomb_vlc_len[buf]); + +coeff = ff_interleaved_ue_golomb_vlc_code[buf]; +} else { +unsigned ret = 1; + +do { +buf >>= 32 - 8; +SKIP_BITS(re, gb, + FFMIN(ff_interleaved_golomb_vlc_len[buf], 8)); + +if (ff_interleaved_golomb_vlc_len[buf] != 9) { +ret <<= (ff_interleaved_golomb_vlc_len[buf] - 1) >> 1; +ret |= ff_interleaved_dirac_golomb_vlc_code[buf]; +break; +} +ret = (ret << 4) | ff_interleaved_dirac_golomb_vlc_code[buf]; +UPDATE_CACHE(re, gb); +buf = GET_CACHE(re, gb); +} while (ret<0x800U && BITS_AVAILABLE(re, gb)); + +coeff = ret - 1; +} if (coeff) { coeff = (coeff * qfactor + qoffset + 2) >> 2; -sign = get_bits1(gb); -coeff = (coeff ^ -sign) + sign; +sign = SHOW_SBITS(re, gb, 1); +LAST_SKIP_BITS(re, gb, 1); +coeff = (coeff ^ sign) - sign; } +CLOSE_READER(re, gb); return coeff; } -- 1.7.9.5 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel