X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fv210dec.c;h=37b4a3c42301744949afef1c70957bdb91d35d0a;hb=3cb33fbe919d3664977e88a1ce4554a330ccc48a;hp=fa67635ed327acb7fb705151473d0a9d7dfb41d8;hpb=ec6402b7c595c3ceed6d1b8c1b75c6aa8336e052;p=ffmpeg diff --git a/libavcodec/v210dec.c b/libavcodec/v210dec.c index fa67635ed32..37b4a3c4230 100644 --- a/libavcodec/v210dec.c +++ b/libavcodec/v210dec.c @@ -30,7 +30,7 @@ static av_cold int decode_init(AVCodecContext *avctx) av_log(avctx, AV_LOG_ERROR, "v210 needs even width\n"); return -1; } - avctx->pix_fmt = PIX_FMT_YUV422P16; + avctx->pix_fmt = PIX_FMT_YUV422P10; avctx->bits_per_raw_sample = 10; avctx->coded_frame = avcodec_alloc_frame(); @@ -68,10 +68,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, #define READ_PIXELS(a, b, c) \ do { \ - val = av_le2ne32(*src++); \ - *a++ = val << 6; \ - *b++ = (val >> 4) & 0xFFC0; \ - *c++ = (val >> 14) & 0xFFC0; \ + val = av_le2ne32(*src++); \ + *a++ = val & 0x3FF; \ + *b++ = (val >> 10) & 0x3FF; \ + *c++ = (val >> 20) & 0x3FF; \ } while (0) for (h = 0; h < avctx->height; h++) { @@ -87,15 +87,15 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, READ_PIXELS(u, y, v); val = av_le2ne32(*src++); - *y++ = val << 6; + *y++ = val & 0x3FF; } if (w < avctx->width - 3) { - *u++ = (val >> 4) & 0xFFC0; - *y++ = (val >> 14) & 0xFFC0; + *u++ = (val >> 10) & 0x3FF; + *y++ = (val >> 20) & 0x3FF; val = av_le2ne32(*src++); - *v++ = val << 6; - *y++ = (val >> 4) & 0xFFC0; + *v++ = val & 0x3FF; + *y++ = (val >> 10) & 0x3FF; } psrc += stride;