|
|
|
@@ -104,7 +104,7 @@ static void encode_rgb48_10bit(AVCodecContext *avctx, const AVPicture *pic, uint |
|
|
|
for (y = 0; y < avctx->height; y++) { |
|
|
|
for (x = 0; x < avctx->width; x++) { |
|
|
|
int value; |
|
|
|
if ((avctx->pix_fmt & 1)) { |
|
|
|
if (s->big_endian) { |
|
|
|
value = ((AV_RB16(src + 6*x + 4) & 0xFFC0) >> 4) |
|
|
|
| ((AV_RB16(src + 6*x + 2) & 0xFFC0) << 6) |
|
|
|
| ((AV_RB16(src + 6*x + 0) & 0xFFC0) << 16); |
|
|
|
@@ -129,7 +129,7 @@ static void encode_gbrp10(AVCodecContext *avctx, const AVPicture *pic, uint8_t * |
|
|
|
for (y = 0; y < avctx->height; y++) { |
|
|
|
for (x = 0; x < avctx->width; x++) { |
|
|
|
int value; |
|
|
|
if ((avctx->pix_fmt & 1)) { |
|
|
|
if (s->big_endian) { |
|
|
|
value = (AV_RB16(src[0] + 2*x) << 12) |
|
|
|
| (AV_RB16(src[1] + 2*x) << 2) |
|
|
|
| (AV_RB16(src[2] + 2*x) << 22); |
|
|
|
@@ -148,14 +148,25 @@ static void encode_gbrp10(AVCodecContext *avctx, const AVPicture *pic, uint8_t * |
|
|
|
|
|
|
|
static void encode_gbrp12(AVCodecContext *avctx, const AVPicture *pic, uint16_t *dst) |
|
|
|
{ |
|
|
|
DPXContext *s = avctx->priv_data; |
|
|
|
const uint16_t *src[3] = {(uint16_t*)pic->data[0], |
|
|
|
(uint16_t*)pic->data[1], |
|
|
|
(uint16_t*)pic->data[2]}; |
|
|
|
int x, y, i; |
|
|
|
for (y = 0; y < avctx->height; y++) { |
|
|
|
for (x = 0; x < avctx->width; x++) { |
|
|
|
uint16_t value[3]; |
|
|
|
if (s->big_endian) { |
|
|
|
value[1] = AV_RB16(src[0] + x) << 4; |
|
|
|
value[2] = AV_RB16(src[1] + x) << 4; |
|
|
|
value[0] = AV_RB16(src[2] + x) << 4; |
|
|
|
} else { |
|
|
|
value[1] = AV_RL16(src[0] + x) << 4; |
|
|
|
value[2] = AV_RL16(src[1] + x) << 4; |
|
|
|
value[0] = AV_RL16(src[2] + x) << 4; |
|
|
|
} |
|
|
|
for (i = 0; i < 3; i++) |
|
|
|
*dst++ = *(src[i] + x); |
|
|
|
write16(dst++, value[i]); |
|
|
|
} |
|
|
|
for (i = 0; i < 3; i++) |
|
|
|
src[i] += pic->linesize[i]/2; |
|
|
|
|