mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-11 09:07:29 +00:00
avcodec/qdrw: Fix the code which asks for version 1 samples
The new code only asks for version 1 if its actually version 1 and prints the version bytes if its something else Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
5c8e4bf7c4
commit
019daa0775
@ -145,6 +145,7 @@ static int decode_frame(AVCodecContext *avctx,
|
||||
GetByteContext gbc;
|
||||
int colors;
|
||||
int w, h, ret;
|
||||
int ver;
|
||||
|
||||
bytestream2_init(&gbc, avpkt->data, avpkt->size);
|
||||
if ( bytestream2_get_bytes_left(&gbc) >= 552
|
||||
@ -153,6 +154,8 @@ static int decode_frame(AVCodecContext *avctx,
|
||||
)
|
||||
bytestream2_skip(&gbc, 512);
|
||||
|
||||
ver = check_header(gbc.buffer, bytestream2_get_bytes_left(&gbc));
|
||||
|
||||
/* smallest PICT header */
|
||||
if (bytestream2_get_bytes_left(&gbc) < 40) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Frame is too small %d\n",
|
||||
@ -170,12 +173,15 @@ static int decode_frame(AVCodecContext *avctx,
|
||||
|
||||
/* version 1 is identified by 0x1101
|
||||
* it uses byte-aligned opcodes rather than word-aligned */
|
||||
if (bytestream2_get_be32(&gbc) != 0x001102FF) {
|
||||
if (ver == 1) {
|
||||
avpriv_request_sample(avctx, "QuickDraw version 1");
|
||||
return AVERROR_PATCHWELCOME;
|
||||
} else if (ver != 2) {
|
||||
avpriv_request_sample(avctx, "QuickDraw version unknown (%X)", bytestream2_get_be32(&gbc));
|
||||
return AVERROR_PATCHWELCOME;
|
||||
}
|
||||
|
||||
bytestream2_skip(&gbc, 26);
|
||||
bytestream2_skip(&gbc, 4+26);
|
||||
|
||||
while (bytestream2_get_bytes_left(&gbc) >= 4) {
|
||||
int bppcnt, bpp;
|
||||
|
Loading…
Reference in New Issue
Block a user