|
|
|
@ -225,6 +225,73 @@ static const uint8_t l_u_byry[256] = { |
|
|
|
|
14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 9, 8, 7, 6, 3, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const uint8_t l_y_ybr10i[1024] = { |
|
|
|
|
3, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, |
|
|
|
|
7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, |
|
|
|
|
8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, |
|
|
|
|
9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, |
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, |
|
|
|
|
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, |
|
|
|
|
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, |
|
|
|
|
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, |
|
|
|
|
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, |
|
|
|
|
12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
|
|
|
|
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
|
|
|
|
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
|
|
|
|
13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
|
|
|
|
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
|
|
|
|
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
|
|
|
|
13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, |
|
|
|
|
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, |
|
|
|
|
12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, |
|
|
|
|
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, |
|
|
|
|
11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, |
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, |
|
|
|
|
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, |
|
|
|
|
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, |
|
|
|
|
7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const uint8_t l_y_ybr10[1024] = { |
|
|
|
|
4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, |
|
|
|
|
7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, |
|
|
|
@ -292,6 +359,73 @@ static const uint8_t l_y_ybr10[1024] = { |
|
|
|
|
7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const uint8_t l_u_ybr10i[1024] = { |
|
|
|
|
2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9, 10, |
|
|
|
|
10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, |
|
|
|
|
13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, |
|
|
|
|
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
|
|
|
|
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, |
|
|
|
|
14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
|
|
|
|
13, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 10, 10, |
|
|
|
|
10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 6, 5, 5, 4, 4, 3, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const uint8_t l_u_ybr10[1024] = { |
|
|
|
|
2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 10, 11, 11, |
|
|
|
|
12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, |
|
|
|
@ -703,6 +837,50 @@ static const uint8_t l_u_byryi[256] = { |
|
|
|
|
12, 11, 11, 11, 10, 10, 10, 9, 9, 8, 8, 7, 7, 5, 4, 3, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static void decode_ca4i(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb) |
|
|
|
|
{ |
|
|
|
|
SheerVideoContext *s = avctx->priv_data; |
|
|
|
|
uint16_t *dst_y, *dst_u, *dst_v, *dst_a; |
|
|
|
|
int x, y; |
|
|
|
|
|
|
|
|
|
dst_a = (uint16_t *)p->data[3]; |
|
|
|
|
dst_y = (uint16_t *)p->data[0]; |
|
|
|
|
dst_u = (uint16_t *)p->data[1]; |
|
|
|
|
dst_v = (uint16_t *)p->data[2]; |
|
|
|
|
|
|
|
|
|
for (y = 0; y < avctx->height; y++) { |
|
|
|
|
if (get_bits1(gb)) { |
|
|
|
|
for (x = 0; x < avctx->width; x++) { |
|
|
|
|
dst_a[x] = get_bits(gb, 10); |
|
|
|
|
dst_y[x] = get_bits(gb, 10); |
|
|
|
|
dst_u[x] = get_bits(gb, 10); |
|
|
|
|
dst_v[x] = get_bits(gb, 10); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
int pred[4] = { 502, 512, 512, 502 }; |
|
|
|
|
|
|
|
|
|
for (x = 0; x < avctx->width; x++) { |
|
|
|
|
int y, u, v, a; |
|
|
|
|
|
|
|
|
|
a = get_vlc2(gb, s->vlc[1].table, s->vlc[1].bits, 2); |
|
|
|
|
y = get_vlc2(gb, s->vlc[0].table, s->vlc[0].bits, 2); |
|
|
|
|
u = get_vlc2(gb, s->vlc[1].table, s->vlc[1].bits, 2); |
|
|
|
|
v = get_vlc2(gb, s->vlc[1].table, s->vlc[1].bits, 2); |
|
|
|
|
|
|
|
|
|
dst_a[x] = pred[3] = (a + pred[3]) & 0x3ff; |
|
|
|
|
dst_y[x] = pred[0] = (y + pred[0]) & 0x3ff; |
|
|
|
|
dst_u[x] = pred[1] = (u + pred[1]) & 0x3ff; |
|
|
|
|
dst_v[x] = pred[2] = (v + pred[2]) & 0x3ff; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
dst_y += p->linesize[0] / 2; |
|
|
|
|
dst_u += p->linesize[1] / 2; |
|
|
|
|
dst_v += p->linesize[2] / 2; |
|
|
|
|
dst_a += p->linesize[3] / 2; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void decode_ca4p(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb) |
|
|
|
|
{ |
|
|
|
|
SheerVideoContext *s = avctx->priv_data; |
|
|
|
@ -791,6 +969,45 @@ static void decode_ca4p(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void decode_ybr10i(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb) |
|
|
|
|
{ |
|
|
|
|
SheerVideoContext *s = avctx->priv_data; |
|
|
|
|
uint16_t *dst_y, *dst_u, *dst_v; |
|
|
|
|
int x, y; |
|
|
|
|
|
|
|
|
|
dst_y = (uint16_t *)p->data[0]; |
|
|
|
|
dst_u = (uint16_t *)p->data[1]; |
|
|
|
|
dst_v = (uint16_t *)p->data[2]; |
|
|
|
|
|
|
|
|
|
for (y = 0; y < avctx->height; y++) { |
|
|
|
|
if (get_bits1(gb)) { |
|
|
|
|
for (x = 0; x < avctx->width; x++) { |
|
|
|
|
dst_y[x] = get_bits(gb, 10); |
|
|
|
|
dst_u[x] = get_bits(gb, 10); |
|
|
|
|
dst_v[x] = get_bits(gb, 10); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
int pred[4] = { 502, 512, 512, 512 }; |
|
|
|
|
|
|
|
|
|
for (x = 0; x < avctx->width; x++) { |
|
|
|
|
int y, u, v; |
|
|
|
|
|
|
|
|
|
y = get_vlc2(gb, s->vlc[0].table, s->vlc[0].bits, 2); |
|
|
|
|
u = get_vlc2(gb, s->vlc[1].table, s->vlc[1].bits, 2); |
|
|
|
|
v = get_vlc2(gb, s->vlc[1].table, s->vlc[1].bits, 2); |
|
|
|
|
|
|
|
|
|
dst_y[x] = pred[0] = (y + pred[0]) & 0x3ff; |
|
|
|
|
dst_u[x] = pred[1] = (u + pred[1]) & 0x3ff; |
|
|
|
|
dst_v[x] = pred[2] = (v + pred[2]) & 0x3ff; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
dst_y += p->linesize[0] / 2; |
|
|
|
|
dst_u += p->linesize[1] / 2; |
|
|
|
|
dst_v += p->linesize[2] / 2; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void decode_ybr10(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb) |
|
|
|
|
{ |
|
|
|
|
SheerVideoContext *s = avctx->priv_data; |
|
|
|
@ -2321,6 +2538,14 @@ static int decode_frame(AVCodecContext *avctx, |
|
|
|
|
build_vlc(&s->vlc[1], l_u_ybr10, 1024); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case MKTAG('y', 'B', 'R', 0x0a): |
|
|
|
|
avctx->pix_fmt = AV_PIX_FMT_YUV444P10; |
|
|
|
|
s->decode_frame = decode_ybr10i; |
|
|
|
|
if (s->format != format) { |
|
|
|
|
build_vlc(&s->vlc[0], l_y_ybr10i, 1024); |
|
|
|
|
build_vlc(&s->vlc[1], l_u_ybr10i, 1024); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case MKTAG('C', 'A', '4', 'p'): |
|
|
|
|
avctx->pix_fmt = AV_PIX_FMT_YUVA444P10; |
|
|
|
|
s->decode_frame = decode_ca4p; |
|
|
|
@ -2329,6 +2554,14 @@ static int decode_frame(AVCodecContext *avctx, |
|
|
|
|
build_vlc(&s->vlc[1], l_u_ybr10, 1024); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case MKTAG('C', 'A', '4', 'i'): |
|
|
|
|
avctx->pix_fmt = AV_PIX_FMT_YUVA444P10; |
|
|
|
|
s->decode_frame = decode_ca4i; |
|
|
|
|
if (s->format != format) { |
|
|
|
|
build_vlc(&s->vlc[0], l_y_ybr10i, 1024); |
|
|
|
|
build_vlc(&s->vlc[1], l_u_ybr10i, 1024); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case MKTAG('B', 'Y', 'R', 'Y'): |
|
|
|
|
avctx->pix_fmt = AV_PIX_FMT_YUV422P; |
|
|
|
|
s->decode_frame = decode_byry; |
|
|
|
|