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;
|
GetByteContext gbc;
|
||||||
int colors;
|
int colors;
|
||||||
int w, h, ret;
|
int w, h, ret;
|
||||||
|
int ver;
|
||||||
|
|
||||||
bytestream2_init(&gbc, avpkt->data, avpkt->size);
|
bytestream2_init(&gbc, avpkt->data, avpkt->size);
|
||||||
if ( bytestream2_get_bytes_left(&gbc) >= 552
|
if ( bytestream2_get_bytes_left(&gbc) >= 552
|
||||||
@ -153,6 +154,8 @@ static int decode_frame(AVCodecContext *avctx,
|
|||||||
)
|
)
|
||||||
bytestream2_skip(&gbc, 512);
|
bytestream2_skip(&gbc, 512);
|
||||||
|
|
||||||
|
ver = check_header(gbc.buffer, bytestream2_get_bytes_left(&gbc));
|
||||||
|
|
||||||
/* smallest PICT header */
|
/* smallest PICT header */
|
||||||
if (bytestream2_get_bytes_left(&gbc) < 40) {
|
if (bytestream2_get_bytes_left(&gbc) < 40) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Frame is too small %d\n",
|
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
|
/* version 1 is identified by 0x1101
|
||||||
* it uses byte-aligned opcodes rather than word-aligned */
|
* 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");
|
avpriv_request_sample(avctx, "QuickDraw version 1");
|
||||||
return AVERROR_PATCHWELCOME;
|
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) {
|
while (bytestream2_get_bytes_left(&gbc) >= 4) {
|
||||||
int bppcnt, bpp;
|
int bppcnt, bpp;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user