mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/dpx: Fix B&W film scans from Lasergraphics Inc
Signed-off-by: Harry Mallon <harry.mallon@codex.online>
This commit is contained in:
parent
0539f15bbb
commit
331858d0f6
|
@ -167,7 +167,7 @@ static int decode_frame(AVCodecContext *avctx,
|
|||
int x, y, stride, i, j, ret;
|
||||
int w, h, bits_per_color, descriptor, elements, packing;
|
||||
int yuv, color_trc, color_spec;
|
||||
int encoding, need_align = 0;
|
||||
int encoding, need_align = 0, unpadded_10bit = 0;
|
||||
|
||||
unsigned int rgbBuffer = 0;
|
||||
int n_datum = 0;
|
||||
|
@ -574,6 +574,12 @@ static int decode_frame(AVCodecContext *avctx,
|
|||
input_device[32] = '\0';
|
||||
av_dict_set(&p->metadata, "Input Device", input_device, 0);
|
||||
|
||||
// Some devices do not pad 10bit samples to whole 32bit words per row
|
||||
if (!memcmp(input_device, "Scanity", 7) ||
|
||||
!memcmp(creator, "Lasergraphics Inc.", 18)) {
|
||||
unpadded_10bit = 1;
|
||||
}
|
||||
|
||||
// Move pointer to offset from start of file
|
||||
buf = avpkt->data + offset;
|
||||
|
||||
|
@ -606,7 +612,7 @@ static int decode_frame(AVCodecContext *avctx,
|
|||
read10in32(&buf, &rgbBuffer,
|
||||
&n_datum, endian, shift);
|
||||
}
|
||||
if (memcmp(input_device, "Scanity", 7))
|
||||
if (!unpadded_10bit)
|
||||
n_datum = 0;
|
||||
for (i = 0; i < elements; i++)
|
||||
ptr[i] += p->linesize[i];
|
||||
|
|
Loading…
Reference in New Issue