Message ID | 20190924011352.12712-1-lance.lmwang@gmail.com |
---|---|
State | Accepted |
Commit | 6d18b62db96bf52b70462e9d867f71cb0f12d1a4 |
Headers | show |
ping, I hope it makes sense to reduce the code size. On Tue, Sep 24, 2019 at 09:13:52AM +0800, lance.lmwang@gmail.com wrote: > From: Limin Wang <lance.lmwang@gmail.com> > > Signed-off-by: Limin Wang <lance.lmwang@gmail.com> > --- > libavcodec/magicyuv.c | 30 ++++++------------------------ > 1 file changed, 6 insertions(+), 24 deletions(-) > > diff --git a/libavcodec/magicyuv.c b/libavcodec/magicyuv.c > index f4fb2a7809..21a32785bc 100644 > --- a/libavcodec/magicyuv.c > +++ b/libavcodec/magicyuv.c > @@ -547,10 +547,7 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data, > s->hshift[2] = > s->vshift[2] = 0; > s->decorrelate = 0; > - s->max = 256; > s->bps = 8; > - s->huff_build = huff_build; > - s->magy_decode_slice = magy_decode_slice; > > format = bytestream2_get_byte(&gbyte); > switch (format) { > @@ -587,61 +584,46 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data, > avctx->pix_fmt = AV_PIX_FMT_YUV422P10; > s->hshift[1] = > s->hshift[2] = 1; > - s->max = 1024; > - s->huff_build = huff_build10; > - s->magy_decode_slice = magy_decode_slice10; > s->bps = 10; > break; > case 0x76: > avctx->pix_fmt = AV_PIX_FMT_YUV444P10; > - s->max = 1024; > - s->huff_build = huff_build10; > - s->magy_decode_slice = magy_decode_slice10; > s->bps = 10; > break; > case 0x6d: > avctx->pix_fmt = AV_PIX_FMT_GBRP10; > s->decorrelate = 1; > - s->max = 1024; > - s->huff_build = huff_build10; > - s->magy_decode_slice = magy_decode_slice10; > s->bps = 10; > break; > case 0x6e: > avctx->pix_fmt = AV_PIX_FMT_GBRAP10; > s->decorrelate = 1; > - s->max = 1024; > - s->huff_build = huff_build10; > - s->magy_decode_slice = magy_decode_slice10; > s->bps = 10; > break; > case 0x6f: > avctx->pix_fmt = AV_PIX_FMT_GBRP12; > s->decorrelate = 1; > - s->max = 4096; > - s->huff_build = huff_build12; > - s->magy_decode_slice = magy_decode_slice10; > s->bps = 12; > break; > case 0x70: > avctx->pix_fmt = AV_PIX_FMT_GBRAP12; > s->decorrelate = 1; > - s->max = 4096; > - s->huff_build = huff_build12; > - s->magy_decode_slice = magy_decode_slice10; > s->bps = 12; > break; > case 0x73: > avctx->pix_fmt = AV_PIX_FMT_GRAY10; > - s->max = 1024; > - s->huff_build = huff_build10; > - s->magy_decode_slice = magy_decode_slice10; > s->bps = 10; > break; > default: > avpriv_request_sample(avctx, "Format 0x%X", format); > return AVERROR_PATCHWELCOME; > } > + s->max = 1 << s->bps; > + s->magy_decode_slice = s->bps == 8 ? magy_decode_slice : magy_decode_slice10; > + if ( s->bps == 8) > + s->huff_build = huff_build; > + else > + s->huff_build = s->bps == 10 ? huff_build10 : huff_build12; > s->planes = av_pix_fmt_count_planes(avctx->pix_fmt); > > bytestream2_skip(&gbyte, 1); > -- > 2.21.0 >
ok On 10/9/19, Limin Wang <lance.lmwang@gmail.com> wrote: > > ping, I hope it makes sense to reduce the code size. > > On Tue, Sep 24, 2019 at 09:13:52AM +0800, lance.lmwang@gmail.com wrote: >> From: Limin Wang <lance.lmwang@gmail.com> >> >> Signed-off-by: Limin Wang <lance.lmwang@gmail.com> >> --- >> libavcodec/magicyuv.c | 30 ++++++------------------------ >> 1 file changed, 6 insertions(+), 24 deletions(-) >> >> diff --git a/libavcodec/magicyuv.c b/libavcodec/magicyuv.c >> index f4fb2a7809..21a32785bc 100644 >> --- a/libavcodec/magicyuv.c >> +++ b/libavcodec/magicyuv.c >> @@ -547,10 +547,7 @@ static int magy_decode_frame(AVCodecContext *avctx, >> void *data, >> s->hshift[2] = >> s->vshift[2] = 0; >> s->decorrelate = 0; >> - s->max = 256; >> s->bps = 8; >> - s->huff_build = huff_build; >> - s->magy_decode_slice = magy_decode_slice; >> >> format = bytestream2_get_byte(&gbyte); >> switch (format) { >> @@ -587,61 +584,46 @@ static int magy_decode_frame(AVCodecContext *avctx, >> void *data, >> avctx->pix_fmt = AV_PIX_FMT_YUV422P10; >> s->hshift[1] = >> s->hshift[2] = 1; >> - s->max = 1024; >> - s->huff_build = huff_build10; >> - s->magy_decode_slice = magy_decode_slice10; >> s->bps = 10; >> break; >> case 0x76: >> avctx->pix_fmt = AV_PIX_FMT_YUV444P10; >> - s->max = 1024; >> - s->huff_build = huff_build10; >> - s->magy_decode_slice = magy_decode_slice10; >> s->bps = 10; >> break; >> case 0x6d: >> avctx->pix_fmt = AV_PIX_FMT_GBRP10; >> s->decorrelate = 1; >> - s->max = 1024; >> - s->huff_build = huff_build10; >> - s->magy_decode_slice = magy_decode_slice10; >> s->bps = 10; >> break; >> case 0x6e: >> avctx->pix_fmt = AV_PIX_FMT_GBRAP10; >> s->decorrelate = 1; >> - s->max = 1024; >> - s->huff_build = huff_build10; >> - s->magy_decode_slice = magy_decode_slice10; >> s->bps = 10; >> break; >> case 0x6f: >> avctx->pix_fmt = AV_PIX_FMT_GBRP12; >> s->decorrelate = 1; >> - s->max = 4096; >> - s->huff_build = huff_build12; >> - s->magy_decode_slice = magy_decode_slice10; >> s->bps = 12; >> break; >> case 0x70: >> avctx->pix_fmt = AV_PIX_FMT_GBRAP12; >> s->decorrelate = 1; >> - s->max = 4096; >> - s->huff_build = huff_build12; >> - s->magy_decode_slice = magy_decode_slice10; >> s->bps = 12; >> break; >> case 0x73: >> avctx->pix_fmt = AV_PIX_FMT_GRAY10; >> - s->max = 1024; >> - s->huff_build = huff_build10; >> - s->magy_decode_slice = magy_decode_slice10; >> s->bps = 10; >> break; >> default: >> avpriv_request_sample(avctx, "Format 0x%X", format); >> return AVERROR_PATCHWELCOME; >> } >> + s->max = 1 << s->bps; >> + s->magy_decode_slice = s->bps == 8 ? magy_decode_slice : >> magy_decode_slice10; >> + if ( s->bps == 8) >> + s->huff_build = huff_build; >> + else >> + s->huff_build = s->bps == 10 ? huff_build10 : huff_build12; >> s->planes = av_pix_fmt_count_planes(avctx->pix_fmt); >> >> bytestream2_skip(&gbyte, 1); >> -- >> 2.21.0 >> > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
On Wed, Oct 09, 2019 at 05:00:09PM +0200, Paul B Mahol wrote:
> ok
will apply unless someone else is faster
thx
[...]
diff --git a/libavcodec/magicyuv.c b/libavcodec/magicyuv.c index f4fb2a7809..21a32785bc 100644 --- a/libavcodec/magicyuv.c +++ b/libavcodec/magicyuv.c @@ -547,10 +547,7 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data, s->hshift[2] = s->vshift[2] = 0; s->decorrelate = 0; - s->max = 256; s->bps = 8; - s->huff_build = huff_build; - s->magy_decode_slice = magy_decode_slice; format = bytestream2_get_byte(&gbyte); switch (format) { @@ -587,61 +584,46 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data, avctx->pix_fmt = AV_PIX_FMT_YUV422P10; s->hshift[1] = s->hshift[2] = 1; - s->max = 1024; - s->huff_build = huff_build10; - s->magy_decode_slice = magy_decode_slice10; s->bps = 10; break; case 0x76: avctx->pix_fmt = AV_PIX_FMT_YUV444P10; - s->max = 1024; - s->huff_build = huff_build10; - s->magy_decode_slice = magy_decode_slice10; s->bps = 10; break; case 0x6d: avctx->pix_fmt = AV_PIX_FMT_GBRP10; s->decorrelate = 1; - s->max = 1024; - s->huff_build = huff_build10; - s->magy_decode_slice = magy_decode_slice10; s->bps = 10; break; case 0x6e: avctx->pix_fmt = AV_PIX_FMT_GBRAP10; s->decorrelate = 1; - s->max = 1024; - s->huff_build = huff_build10; - s->magy_decode_slice = magy_decode_slice10; s->bps = 10; break; case 0x6f: avctx->pix_fmt = AV_PIX_FMT_GBRP12; s->decorrelate = 1; - s->max = 4096; - s->huff_build = huff_build12; - s->magy_decode_slice = magy_decode_slice10; s->bps = 12; break; case 0x70: avctx->pix_fmt = AV_PIX_FMT_GBRAP12; s->decorrelate = 1; - s->max = 4096; - s->huff_build = huff_build12; - s->magy_decode_slice = magy_decode_slice10; s->bps = 12; break; case 0x73: avctx->pix_fmt = AV_PIX_FMT_GRAY10; - s->max = 1024; - s->huff_build = huff_build10; - s->magy_decode_slice = magy_decode_slice10; s->bps = 10; break; default: avpriv_request_sample(avctx, "Format 0x%X", format); return AVERROR_PATCHWELCOME; } + s->max = 1 << s->bps; + s->magy_decode_slice = s->bps == 8 ? magy_decode_slice : magy_decode_slice10; + if ( s->bps == 8) + s->huff_build = huff_build; + else + s->huff_build = s->bps == 10 ? huff_build10 : huff_build12; s->planes = av_pix_fmt_count_planes(avctx->pix_fmt); bytestream2_skip(&gbyte, 1);