Mercurial > libavcodec.hg
comparison mjpegdec.c @ 5041:01a165280429 libavcodec
allows to disable jpegls decoder
author | aurel |
---|---|
date | Sat, 19 May 2007 14:31:57 +0000 |
parents | 325557621708 |
children | 259b58518ecc |
comparison
equal
deleted
inserted
replaced
5040:5c6cd6601371 | 5041:01a165280429 |
---|---|
34 #include <assert.h> | 34 #include <assert.h> |
35 | 35 |
36 #include "avcodec.h" | 36 #include "avcodec.h" |
37 #include "dsputil.h" | 37 #include "dsputil.h" |
38 #include "mjpeg.h" | 38 #include "mjpeg.h" |
39 #include "mjpegdec.h" | |
39 #include "jpeglsdec.h" | 40 #include "jpeglsdec.h" |
40 | 41 |
41 | 42 |
42 static int mjpeg_decode_dht(MJpegDecodeContext *s); | 43 static int mjpeg_decode_dht(MJpegDecodeContext *s); |
43 | 44 |
61 } | 62 } |
62 | 63 |
63 return init_vlc(vlc, 9, nb_codes, huff_size, 1, 1, huff_code, 2, 2, use_static); | 64 return init_vlc(vlc, 9, nb_codes, huff_size, 1, 1, huff_code, 2, 2, use_static); |
64 } | 65 } |
65 | 66 |
66 static int mjpeg_decode_init(AVCodecContext *avctx) | 67 int ff_mjpeg_decode_init(AVCodecContext *avctx) |
67 { | 68 { |
68 MJpegDecodeContext *s = avctx->priv_data; | 69 MJpegDecodeContext *s = avctx->priv_data; |
69 | 70 |
70 s->avctx = avctx; | 71 s->avctx = avctx; |
71 dsputil_init(&s->dsp, avctx); | 72 dsputil_init(&s->dsp, avctx); |
800 /* mjpeg-b can have padding bytes between sos and image data, skip them */ | 801 /* mjpeg-b can have padding bytes between sos and image data, skip them */ |
801 for (i = s->mjpb_skiptosod; i > 0; i--) | 802 for (i = s->mjpb_skiptosod; i > 0; i--) |
802 skip_bits(&s->gb, 8); | 803 skip_bits(&s->gb, 8); |
803 | 804 |
804 if(s->lossless){ | 805 if(s->lossless){ |
805 if(s->ls){ | 806 if(ENABLE_JPEGLS_DECODER && s->ls){ |
806 // for(){ | 807 // for(){ |
807 // reset_ls_coding_parameters(s, 0); | 808 // reset_ls_coding_parameters(s, 0); |
808 | 809 |
809 ff_jpegls_decode_picture(s, predictor, point_transform, ilv); | 810 ff_jpegls_decode_picture(s, predictor, point_transform, ilv); |
810 }else{ | 811 }else{ |
1073 #endif | 1074 #endif |
1074 *pbuf_ptr = buf_ptr; | 1075 *pbuf_ptr = buf_ptr; |
1075 return val; | 1076 return val; |
1076 } | 1077 } |
1077 | 1078 |
1078 static int mjpeg_decode_frame(AVCodecContext *avctx, | 1079 int ff_mjpeg_decode_frame(AVCodecContext *avctx, |
1079 void *data, int *data_size, | 1080 void *data, int *data_size, |
1080 uint8_t *buf, int buf_size) | 1081 uint8_t *buf, int buf_size) |
1081 { | 1082 { |
1082 MJpegDecodeContext *s = avctx->priv_data; | 1083 MJpegDecodeContext *s = avctx->priv_data; |
1083 uint8_t *buf_end, *buf_ptr; | 1084 uint8_t *buf_end, *buf_ptr; |
1235 s->progressive=0; | 1236 s->progressive=0; |
1236 if (mjpeg_decode_sof(s) < 0) | 1237 if (mjpeg_decode_sof(s) < 0) |
1237 return -1; | 1238 return -1; |
1238 break; | 1239 break; |
1239 case LSE: | 1240 case LSE: |
1240 if (ff_jpegls_decode_lse(s) < 0) | 1241 if (!ENABLE_JPEGLS_DECODER || ff_jpegls_decode_lse(s) < 0) |
1241 return -1; | 1242 return -1; |
1242 break; | 1243 break; |
1243 case EOI: | 1244 case EOI: |
1244 s->cur_scan = 0; | 1245 s->cur_scan = 0; |
1245 if ((s->buggy_avid && !s->interlaced) || s->restart_interval) | 1246 if ((s->buggy_avid && !s->interlaced) || s->restart_interval) |
1471 | 1472 |
1472 /* EOI */ | 1473 /* EOI */ |
1473 recoded[j++] = 0xFF; | 1474 recoded[j++] = 0xFF; |
1474 recoded[j++] = 0xD9; | 1475 recoded[j++] = 0xD9; |
1475 | 1476 |
1476 i = mjpeg_decode_frame(avctx, data, data_size, recoded, j); | 1477 i = ff_mjpeg_decode_frame(avctx, data, data_size, recoded, j); |
1477 | 1478 |
1478 av_free(recoded); | 1479 av_free(recoded); |
1479 | 1480 |
1480 #else | 1481 #else |
1481 /* SOF */ | 1482 /* SOF */ |
1570 #endif | 1571 #endif |
1571 | 1572 |
1572 return i; | 1573 return i; |
1573 } | 1574 } |
1574 | 1575 |
1575 static int mjpeg_decode_end(AVCodecContext *avctx) | 1576 int ff_mjpeg_decode_end(AVCodecContext *avctx) |
1576 { | 1577 { |
1577 MJpegDecodeContext *s = avctx->priv_data; | 1578 MJpegDecodeContext *s = avctx->priv_data; |
1578 int i, j; | 1579 int i, j; |
1579 | 1580 |
1580 av_free(s->buffer); | 1581 av_free(s->buffer); |
1590 AVCodec mjpeg_decoder = { | 1591 AVCodec mjpeg_decoder = { |
1591 "mjpeg", | 1592 "mjpeg", |
1592 CODEC_TYPE_VIDEO, | 1593 CODEC_TYPE_VIDEO, |
1593 CODEC_ID_MJPEG, | 1594 CODEC_ID_MJPEG, |
1594 sizeof(MJpegDecodeContext), | 1595 sizeof(MJpegDecodeContext), |
1595 mjpeg_decode_init, | 1596 ff_mjpeg_decode_init, |
1596 NULL, | 1597 NULL, |
1597 mjpeg_decode_end, | 1598 ff_mjpeg_decode_end, |
1598 mjpeg_decode_frame, | 1599 ff_mjpeg_decode_frame, |
1599 CODEC_CAP_DR1, | 1600 CODEC_CAP_DR1, |
1600 NULL | 1601 NULL |
1601 }; | 1602 }; |
1602 | 1603 |
1603 AVCodec thp_decoder = { | 1604 AVCodec thp_decoder = { |
1604 "thp", | 1605 "thp", |
1605 CODEC_TYPE_VIDEO, | 1606 CODEC_TYPE_VIDEO, |
1606 CODEC_ID_THP, | 1607 CODEC_ID_THP, |
1607 sizeof(MJpegDecodeContext), | 1608 sizeof(MJpegDecodeContext), |
1608 mjpeg_decode_init, | 1609 ff_mjpeg_decode_init, |
1609 NULL, | 1610 NULL, |
1610 mjpeg_decode_end, | 1611 ff_mjpeg_decode_end, |
1611 mjpeg_decode_frame, | 1612 ff_mjpeg_decode_frame, |
1612 CODEC_CAP_DR1, | 1613 CODEC_CAP_DR1, |
1613 NULL | 1614 NULL |
1614 }; | 1615 }; |
1615 | 1616 |
1616 AVCodec mjpegb_decoder = { | 1617 AVCodec mjpegb_decoder = { |
1617 "mjpegb", | 1618 "mjpegb", |
1618 CODEC_TYPE_VIDEO, | 1619 CODEC_TYPE_VIDEO, |
1619 CODEC_ID_MJPEGB, | 1620 CODEC_ID_MJPEGB, |
1620 sizeof(MJpegDecodeContext), | 1621 sizeof(MJpegDecodeContext), |
1621 mjpeg_decode_init, | 1622 ff_mjpeg_decode_init, |
1622 NULL, | 1623 NULL, |
1623 mjpeg_decode_end, | 1624 ff_mjpeg_decode_end, |
1624 mjpegb_decode_frame, | 1625 mjpegb_decode_frame, |
1625 CODEC_CAP_DR1, | 1626 CODEC_CAP_DR1, |
1626 NULL | 1627 NULL |
1627 }; | 1628 }; |
1628 | 1629 |
1629 AVCodec sp5x_decoder = { | 1630 AVCodec sp5x_decoder = { |
1630 "sp5x", | 1631 "sp5x", |
1631 CODEC_TYPE_VIDEO, | 1632 CODEC_TYPE_VIDEO, |
1632 CODEC_ID_SP5X, | 1633 CODEC_ID_SP5X, |
1633 sizeof(MJpegDecodeContext), | 1634 sizeof(MJpegDecodeContext), |
1634 mjpeg_decode_init, | 1635 ff_mjpeg_decode_init, |
1635 NULL, | 1636 NULL, |
1636 mjpeg_decode_end, | 1637 ff_mjpeg_decode_end, |
1637 sp5x_decode_frame, | 1638 sp5x_decode_frame, |
1638 CODEC_CAP_DR1, | 1639 CODEC_CAP_DR1, |
1639 NULL | 1640 NULL |
1640 }; | 1641 }; |