Message ID | 20200904101706.24228-1-onemda@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/3] avcodec/dxtory: unbreak decoding after 6e1a167c556 | expand |
Context | Check | Description |
---|---|---|
andriy/default | pending | |
andriy/make | success | Make finished |
andriy/make_fate | success | Make fate finished |
On Fri, Sep 04, 2020 at 12:17:04PM +0200, Paul B Mahol wrote: > get_unary() takes at minimum only 1 bit. > > Signed-off-by: Paul B Mahol <onemda@gmail.com> > --- > libavcodec/dxtory.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) should be ok thanks [...]
On 9/4/20, Michael Niedermayer <michael@niedermayer.cc> wrote: > On Fri, Sep 04, 2020 at 12:17:04PM +0200, Paul B Mahol wrote: >> get_unary() takes at minimum only 1 bit. >> >> Signed-off-by: Paul B Mahol <onemda@gmail.com> >> --- >> libavcodec/dxtory.c | 10 +++++----- >> 1 file changed, 5 insertions(+), 5 deletions(-) > > should be ok There is more correct approach in latest version of set in 2nd patch. (It calculates bits more completely for 420 and 410 case) I probably should merge 1st and 2nd patch of that set. What do you think? > > thanks > > [...] > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > When the tyrant has disposed of foreign enemies by conquest or treaty, and > there is nothing more to fear from them, then he is always stirring up > some war or other, in order that the people may require a leader. -- Plato >
On Fri, Sep 04, 2020 at 10:03:26PM +0200, Paul B Mahol wrote: > On 9/4/20, Michael Niedermayer <michael@niedermayer.cc> wrote: > > On Fri, Sep 04, 2020 at 12:17:04PM +0200, Paul B Mahol wrote: > >> get_unary() takes at minimum only 1 bit. > >> > >> Signed-off-by: Paul B Mahol <onemda@gmail.com> > >> --- > >> libavcodec/dxtory.c | 10 +++++----- > >> 1 file changed, 5 insertions(+), 5 deletions(-) > > > > should be ok > > There is more correct approach in latest version of set in 2nd patch. > (It calculates bits more completely for 420 and 410 case) > I probably should merge 1st and 2nd patch of that set. What do you think? do what you prefer thx [...]
diff --git a/libavcodec/dxtory.c b/libavcodec/dxtory.c index bc19f27951..3cd95afe80 100644 --- a/libavcodec/dxtory.c +++ b/libavcodec/dxtory.c @@ -395,7 +395,7 @@ static int dx2_decode_slice_5x5(GetBitContext *gb, AVFrame *frame, int stride = frame->linesize[0]; uint8_t *dst = frame->data[0] + stride * line; - for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) { + for (y = 0; y < left && get_bits_left(gb) >= 3 * width; y++) { for (x = 0; x < width; x++) { b = decode_sym_565(gb, lru[0], 5); g = decode_sym_565(gb, lru[1], is_565 ? 6 : 5); @@ -462,7 +462,7 @@ static int dx2_decode_slice_rgb(GetBitContext *gb, AVFrame *frame, int stride = frame->linesize[0]; uint8_t *dst = frame->data[0] + stride * line; - for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) { + for (y = 0; y < left && get_bits_left(gb) >= 3 * width; y++) { for (x = 0; x < width; x++) { dst[x * 3 + 0] = decode_sym(gb, lru[0]); dst[x * 3 + 1] = decode_sym(gb, lru[1]); @@ -508,7 +508,7 @@ static int dx2_decode_slice_410(GetBitContext *gb, AVFrame *frame, uint8_t *U = frame->data[1] + (ustride >> 2) * line; uint8_t *V = frame->data[2] + (vstride >> 2) * line; - for (y = 0; y < left - 3 && get_bits_left(gb) > 9 * width; y += 4) { + for (y = 0; y < left - 3 && get_bits_left(gb) >= 4 * width; y += 4) { for (x = 0; x < width; x += 4) { for (j = 0; j < 4; j++) for (i = 0; i < 4; i++) @@ -553,7 +553,7 @@ static int dx2_decode_slice_420(GetBitContext *gb, AVFrame *frame, uint8_t *V = frame->data[2] + (vstride >> 1) * line; - for (y = 0; y < left - 1 && get_bits_left(gb) > 6 * width; y += 2) { + for (y = 0; y < left - 1 && get_bits_left(gb) >= 3 * width; y += 2) { for (x = 0; x < width; x += 2) { Y[x + 0 + 0 * ystride] = decode_sym(gb, lru[0]); Y[x + 1 + 0 * ystride] = decode_sym(gb, lru[0]); @@ -597,7 +597,7 @@ static int dx2_decode_slice_444(GetBitContext *gb, AVFrame *frame, uint8_t *U = frame->data[1] + ustride * line; uint8_t *V = frame->data[2] + vstride * line; - for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) { + for (y = 0; y < left && get_bits_left(gb) >= 3 * width; y++) { for (x = 0; x < width; x++) { Y[x] = decode_sym(gb, lru[0]); U[x] = decode_sym(gb, lru[1]) ^ 0x80;
get_unary() takes at minimum only 1 bit. Signed-off-by: Paul B Mahol <onemda@gmail.com> --- libavcodec/dxtory.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)