[FFmpeg-devel] [PATCH] lavc/cfhd: added alpha decompanding in rgba12
Gagandeep Singh
deepgagan231197 at gmail.com
Fri Mar 23 07:34:58 EET 2018
On Fri, 23 Mar 2018, 04:26 Aurelien Jacobs, <aurel at gnuage.org> wrote:
> On Wed, Mar 21, 2018 at 10:19:58PM +0530, Gagandeep Singh wrote:
> > alpha decompanding curve added to post process the decoded alpha channel
> > ---
> > libavcodec/cfhd.c | 19 +++++++++++++++++++
> > 1 file changed, 19 insertions(+)
> >
> > diff --git a/libavcodec/cfhd.c b/libavcodec/cfhd.c
> > index fd5555834b..e35732df45 100644
> > --- a/libavcodec/cfhd.c
> > +++ b/libavcodec/cfhd.c
> > @@ -37,6 +37,9 @@
> > #include "thread.h"
> > #include "cfhd.h"
> >
> > +#define ALPHA_COMPAND_DC_OFFSET 256
> > +#define ALPHA_COMPAND_GAIN 9400
> > +
> > enum CFHDParam {
> > ChannelCount = 12,
> > SubbandCount = 14,
> > @@ -94,6 +97,20 @@ static inline int dequant_and_decompand(int level,
> int quantisation)
> > FFSIGN(level) * quantisation;
> > }
> >
> > +static inline void process_alpha(int16_t *alpha, int width)
> > +{
> > + int i, channel;
> > + for (i = 0; i < width; i++) {
> > + channel = alpha[i];
> > + channel -= ALPHA_COMPAND_DC_OFFSET;
> > + channel <<= 3;
> > + channel *= ALPHA_COMPAND_GAIN;
>
> Any reason why you can't merge the << 3 (ie. * 8) with the
> * ALPHA_COMPAND_GAIN ?
>
> > + channel >>= 16;
>
> > + channel = av_clip_uintp2(channel, 12);
> > + alpha[i] = channel;
>
> Here you should affect the result of av_clip_uintp2 directly to alpha[i].
>
> Actually, I think it would be more readable by dropping the channel
> intermediate variable entirely. You could write this function like this
> (untested):
>
> static inline void process_alpha(int16_t *alpha, int width)
> {
> for (int i = 0; i < width; i++)
> alpha[i] = av_clip_uintp2(((alpha[i] - 256) * 75200) >> 16, 12);
> }
>
> Of course, you can use DC_OFFSET and GAIN constants in there if you
> think it is more readable.
>
I will test it, I remember the problem was with the bit shifting in alpha
as it is originally smaller than channel, so I used 32 bit channel, but I
will see if it can also work your way.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list