On 3/27/17, Rostislav Pehlivanov <atomnu...@gmail.com> wrote: > On 27 March 2017 at 19:08, Paul B Mahol <one...@gmail.com> wrote: > >> Signed-off-by: Paul B Mahol <one...@gmail.com> >> --- >> libavcodec/dnxhdenc.c | 227 ++++++++++++++++++++++++++++++ >> +++++--------------- >> libavcodec/dnxhdenc.h | 6 +- >> 2 files changed, 163 insertions(+), 70 deletions(-) >> >> diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c >> index 33f25fb..6716b74 100644 >> --- a/libavcodec/dnxhdenc.c >> +++ b/libavcodec/dnxhdenc.c >> @@ -23,6 +23,8 @@ >> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >> 02110-1301 USA >> */ >> >> +#define ASSERT_LEVEL 10 >> > > Debug code?
Yes, will remove. > > >> + >> #include "libavutil/attributes.h" >> #include "libavutil/internal.h" >> #include "libavutil/opt.h" >> @@ -112,6 +114,37 @@ void dnxhd_10bit_get_pixels_8x4_sym(int16_t >> *av_restrict block, >> memcpy(block + 4 * 8, pixels + 3 * line_size, 8 * sizeof(*block)); >> } >> >> +static int dnxhd_10bit_dct_quantize_444(MpegEncContext *ctx, int16_t >> *block, >> + int n, int qscale, int *overflow) >> +{ >> + const uint8_t *scantable= ctx->intra_scantable.scantable; >> + const int *qmat = n<4 ? ctx->q_intra_matrix[qscale] : >> ctx->q_chroma_intra_matrix[qscale]; >> + int last_non_zero = 0; >> + int i; >> + >> + ctx->fdsp.fdct(block); >> + >> + // Divide by 4 with rounding, to compensate scaling of DCT >> coefficients >> + block[0] = (block[0] + 2) >> 2; >> + >> + for (i = 1; i < 64; ++i) { >> + int j = scantable[i]; >> + int sign = FF_SIGNBIT(block[j]); >> + int level = (block[j] ^ sign) - sign; >> > > Wait, what? This just makes level == block[j]. > > >> + level = level * qmat[j] >> 16; >> + block[j] = (level ^ sign) - sign; >> > > Don't use this to sign-ify something, compilers have long been smart enough > to optimize sign * value. > > Just do > block[j] = (block[j] * qmat[j] >> 16); > Right shifting signed stuff is defined I just copy pasted existing function and changed shift value :-) _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel