Mercurial > libavcodec.hg
comparison mjpeg.c @ 2802:4db6127e20b8 libavcodec
reset restart_count when restart_interval is set and fill the
MJpegDecodeContext with 0 on init.
author | reimar |
---|---|
date | Fri, 22 Jul 2005 08:48:00 +0000 |
parents | 924c7e66ced8 |
children | 40765c51a7a9 |
comparison
equal
deleted
inserted
replaced
2801:747f816cee69 | 2802:4db6127e20b8 |
---|---|
880 | 880 |
881 static int mjpeg_decode_init(AVCodecContext *avctx) | 881 static int mjpeg_decode_init(AVCodecContext *avctx) |
882 { | 882 { |
883 MJpegDecodeContext *s = avctx->priv_data; | 883 MJpegDecodeContext *s = avctx->priv_data; |
884 MpegEncContext s2; | 884 MpegEncContext s2; |
885 memset(s, 0, sizeof(MJpegDecodeContext)); | |
885 | 886 |
886 s->avctx = avctx; | 887 s->avctx = avctx; |
887 | 888 |
888 /* ugly way to get the idct & scantable FIXME */ | 889 /* ugly way to get the idct & scantable FIXME */ |
889 memset(&s2, 0, sizeof(MpegEncContext)); | 890 memset(&s2, 0, sizeof(MpegEncContext)); |
1571 static int mjpeg_decode_dri(MJpegDecodeContext *s) | 1572 static int mjpeg_decode_dri(MJpegDecodeContext *s) |
1572 { | 1573 { |
1573 if (get_bits(&s->gb, 16) != 4) | 1574 if (get_bits(&s->gb, 16) != 4) |
1574 return -1; | 1575 return -1; |
1575 s->restart_interval = get_bits(&s->gb, 16); | 1576 s->restart_interval = get_bits(&s->gb, 16); |
1577 s->restart_count = 0; | |
1576 dprintf("restart interval: %d\n", s->restart_interval); | 1578 dprintf("restart interval: %d\n", s->restart_interval); |
1577 | 1579 |
1578 return 0; | 1580 return 0; |
1579 } | 1581 } |
1580 | 1582 |
1890 } | 1892 } |
1891 | 1893 |
1892 switch(start_code) { | 1894 switch(start_code) { |
1893 case SOI: | 1895 case SOI: |
1894 s->restart_interval = 0; | 1896 s->restart_interval = 0; |
1897 s->restart_count = 0; | |
1895 /* nothing to do on SOI */ | 1898 /* nothing to do on SOI */ |
1896 break; | 1899 break; |
1897 case DQT: | 1900 case DQT: |
1898 mjpeg_decode_dqt(s); | 1901 mjpeg_decode_dqt(s); |
1899 break; | 1902 break; |
1998 buf_end = buf + buf_size; | 2001 buf_end = buf + buf_size; |
1999 | 2002 |
2000 read_header: | 2003 read_header: |
2001 /* reset on every SOI */ | 2004 /* reset on every SOI */ |
2002 s->restart_interval = 0; | 2005 s->restart_interval = 0; |
2006 s->restart_count = 0; | |
2003 s->mjpb_skiptosod = 0; | 2007 s->mjpb_skiptosod = 0; |
2004 | 2008 |
2005 init_get_bits(&hgb, buf_ptr, /*buf_size*/(buf_end - buf_ptr)*8); | 2009 init_get_bits(&hgb, buf_ptr, /*buf_size*/(buf_end - buf_ptr)*8); |
2006 | 2010 |
2007 skip_bits(&hgb, 32); /* reserved zeros */ | 2011 skip_bits(&hgb, 32); /* reserved zeros */ |