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 */