Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From 4ea1953b2ceff4ab3be57caf730c9d99a4192238 Mon Sep 17 00:00:00 2001
- From: Gagandeep Singh <deepgagan231197@gmail.com>
- Date: Tue, 20 Mar 2018 17:54:06 +0530
- Subject: [FFmpeg][PATCH] lavc/cfhd: alpha decoding added
- some post processing was required
- ---
- libavcodec/cfhd.c | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
- diff --git a/libavcodec/cfhd.c b/libavcodec/cfhd.c
- index a064cd1599..a950dc0f28 100644
- --- a/libavcodec/cfhd.c
- +++ b/libavcodec/cfhd.c
- @@ -94,6 +94,21 @@ 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 -= 16 << 4;
- + channel <<= 8;
- + channel -= 128;
- + channel /= 223;
- + channel = FFMIN(channel, (1 << 12) - 1);
- + channel = FFMAX(channel, 0);
- + alpha[i] = channel;
- + }
- +}
- +
- static inline void filter(int16_t *output, ptrdiff_t out_stride,
- int16_t *low, ptrdiff_t low_stride,
- int16_t *high, ptrdiff_t high_stride,
- @@ -792,6 +807,8 @@ static int cfhd_decode(AVCodecContext *avctx, void *data, int *got_frame,
- high = s->plane[plane].l_h[7];
- for (i = 0; i < lowpass_height * 2; i++) {
- horiz_filter_clip(dst, low, high, lowpass_width, s->bpc);
- + if (act_plane == 3)
- + process_alpha(dst, lowpass_width * 2);
- low += lowpass_width;
- high += lowpass_width;
- dst += pic->linesize[act_plane] / 2;
- --
- 2.14.1
Add Comment
Please, Sign In to add comment