|
|
|
@ -26,8 +26,10 @@ |
|
|
|
|
|
|
|
|
|
#include "intreadwrite.h" |
|
|
|
|
|
|
|
|
|
void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4], |
|
|
|
|
const AVPixFmtDescriptor *desc, int x, int y, int c, int w, |
|
|
|
|
void av_read_image_line(uint16_t *dst, |
|
|
|
|
const uint8_t *data[4], const int linesize[4], |
|
|
|
|
const AVPixFmtDescriptor *desc, |
|
|
|
|
int x, int y, int c, int w, |
|
|
|
|
int read_pal_component) |
|
|
|
|
{ |
|
|
|
|
AVComponentDescriptor comp = desc->comp[c]; |
|
|
|
@ -53,7 +55,8 @@ void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesiz |
|
|
|
|
*dst++ = val; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
const uint8_t *p = data[plane] + y * linesize[plane] + x * step + comp.offset_plus1 - 1; |
|
|
|
|
const uint8_t *p = data[plane] + y * linesize[plane] + |
|
|
|
|
x * step + comp.offset_plus1 - 1; |
|
|
|
|
int is_8bit = shift + depth <= 8; |
|
|
|
|
|
|
|
|
|
if (is_8bit) |
|
|
|
@ -71,8 +74,10 @@ void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesiz |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesize[4], |
|
|
|
|
const AVPixFmtDescriptor *desc, int x, int y, int c, int w) |
|
|
|
|
void av_write_image_line(const uint16_t *src, |
|
|
|
|
uint8_t *data[4], const int linesize[4], |
|
|
|
|
const AVPixFmtDescriptor *desc, |
|
|
|
|
int x, int y, int c, int w) |
|
|
|
|
{ |
|
|
|
|
AVComponentDescriptor comp = desc->comp[c]; |
|
|
|
|
int plane = comp.plane; |
|
|
|
@ -93,7 +98,8 @@ void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesi |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
int shift = comp.shift; |
|
|
|
|
uint8_t *p = data[plane] + y * linesize[plane] + x * step + comp.offset_plus1 - 1; |
|
|
|
|
uint8_t *p = data[plane] + y * linesize[plane] + |
|
|
|
|
x * step + comp.offset_plus1 - 1; |
|
|
|
|
|
|
|
|
|
if (shift + depth <= 8) { |
|
|
|
|
p += !!(flags & PIX_FMT_BE); |
|
|
|
@ -395,9 +401,9 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = { |
|
|
|
|
.log2_chroma_w = 1, |
|
|
|
|
.log2_chroma_h = 1, |
|
|
|
|
.comp = { |
|
|
|
|
{ 0,0,1,0,7 }, /* Y */ |
|
|
|
|
{ 1,1,1,0,7 }, /* U */ |
|
|
|
|
{ 1,1,2,0,7 }, /* V */ |
|
|
|
|
{ 0, 0, 1, 0, 7 }, /* Y */ |
|
|
|
|
{ 1, 1, 1, 0, 7 }, /* U */ |
|
|
|
|
{ 1, 1, 2, 0, 7 }, /* V */ |
|
|
|
|
}, |
|
|
|
|
.flags = PIX_FMT_PLANAR, |
|
|
|
|
}, |
|
|
|
@ -863,9 +869,9 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = { |
|
|
|
|
.log2_chroma_w = 1, |
|
|
|
|
.log2_chroma_h = 0, |
|
|
|
|
.comp = { |
|
|
|
|
{0,1,1,0,8}, /* Y */ |
|
|
|
|
{1,1,1,0,8}, /* U */ |
|
|
|
|
{2,1,1,0,8}, /* V */ |
|
|
|
|
{ 0, 1, 1, 0, 8 }, /* Y */ |
|
|
|
|
{ 1, 1, 1, 0, 8 }, /* U */ |
|
|
|
|
{ 2, 1, 1, 0, 8 }, /* V */ |
|
|
|
|
}, |
|
|
|
|
.flags = PIX_FMT_BE | PIX_FMT_PLANAR, |
|
|
|
|
}, |
|
|
|
|