#include <inttypes.h>
#include "libavutil/attributes.h"
+#include "libavutil/crc.h"
+
#include "internal.h"
#include "avcodec.h"
#include "mpegutils.h"
GetBitContext gb;
int frame_size_code;
int unk0, unk1, unk2, unk3, unk4;
+ int w,h;
size = AV_RB32(&extradata[4]);
if (size > extradata_end - extradata - 8) {
frame_size_code = get_bits(&gb, 3);
switch (frame_size_code) {
case 0:
- avctx->width = 160;
- avctx->height = 120;
+ w = 160;
+ h = 120;
break;
case 1:
- avctx->width = 128;
- avctx->height = 96;
+ w = 128;
+ h = 96;
break;
case 2:
- avctx->width = 176;
- avctx->height = 144;
+ w = 176;
+ h = 144;
break;
case 3:
- avctx->width = 352;
- avctx->height = 288;
+ w = 352;
+ h = 288;
break;
case 4:
- avctx->width = 704;
- avctx->height = 576;
+ w = 704;
+ h = 576;
break;
case 5:
- avctx->width = 240;
- avctx->height = 180;
+ w = 240;
+ h = 180;
break;
case 6:
- avctx->width = 320;
- avctx->height = 240;
+ w = 320;
+ h = 240;
break;
case 7:
- avctx->width = get_bits(&gb, 12);
- avctx->height = get_bits(&gb, 12);
+ w = get_bits(&gb, 12);
+ h = get_bits(&gb, 12);
break;
}
+ ret = ff_set_dimensions(avctx, w, h);
+ if (ret < 0)
+ goto fail;
s->halfpel_flag = get_bits1(&gb);
s->thirdpel_flag = get_bits1(&gb);
ret = -1;
goto fail;
}
- s->watermark_key = ff_svq1_packet_checksum(buf, buf_len, 0);
+ s->watermark_key = av_bswap16(av_crc(av_crc_get_table(AV_CRC_16_CCITT), 0, buf, buf_len));
+
s->watermark_key = s->watermark_key << 16 | s->watermark_key;
av_log(avctx, AV_LOG_DEBUG,
"watermark key %#"PRIx32"\n", s->watermark_key);