summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2004-03-26 02:06:34 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-03-26 02:06:34 +0000
commit046bee8620a266b40f306fa9e96e4d56a5e1f477 (patch)
treed7a3ae6be284212b7db67efff33ca5d80b4c1316
parent901ee2bea3e51ec4b0755f434c11ef1554acb189 (diff)
always parse APP* as it sometimes contains startcodes which confuse the decoder otherwise
Originally committed as revision 2927 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/mjpeg.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/libavcodec/mjpeg.c b/libavcodec/mjpeg.c
index 3325173bca..b14fda442c 100644
--- a/libavcodec/mjpeg.c
+++ b/libavcodec/mjpeg.c
@@ -1532,7 +1532,8 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
{
int t_w, t_h;
skip_bits(&s->gb, 8); /* the trailing zero-byte */
- av_log(s->avctx, AV_LOG_INFO, "mjpeg: JFIF header found (version: %x.%x)\n",
+ if (s->avctx->debug & FF_DEBUG_PICT_INFO)
+ av_log(s->avctx, AV_LOG_INFO, "mjpeg: JFIF header found (version: %x.%x)\n",
get_bits(&s->gb, 8), get_bits(&s->gb, 8));
skip_bits(&s->gb, 8);
@@ -1553,7 +1554,8 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
if (id == ff_get_fourcc("Adob") && (get_bits(&s->gb, 8) == 'e'))
{
- av_log(s->avctx, AV_LOG_INFO, "mjpeg: Adobe header found\n");
+ if (s->avctx->debug & FF_DEBUG_PICT_INFO)
+ av_log(s->avctx, AV_LOG_INFO, "mjpeg: Adobe header found\n");
skip_bits(&s->gb, 16); /* version */
skip_bits(&s->gb, 16); /* flags0 */
skip_bits(&s->gb, 16); /* flags1 */
@@ -1563,7 +1565,8 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
}
if (id == ff_get_fourcc("LJIF")){
- av_log(s->avctx, AV_LOG_INFO, "Pegasus lossless jpeg header found\n");
+ if (s->avctx->debug & FF_DEBUG_PICT_INFO)
+ av_log(s->avctx, AV_LOG_INFO, "Pegasus lossless jpeg header found\n");
skip_bits(&s->gb, 16); /* version ? */
skip_bits(&s->gb, 16); /* unknwon always 0? */
skip_bits(&s->gb, 16); /* unknwon always 0? */
@@ -1602,7 +1605,7 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
skip_bits(&s->gb, 32); /* scan off */
skip_bits(&s->gb, 32); /* data off */
#endif
- if (s->first_picture)
+ if (s->avctx->debug & FF_DEBUG_PICT_INFO)
av_log(s->avctx, AV_LOG_INFO, "mjpeg: Apple MJPEG-A header found\n");
}
}
@@ -1779,13 +1782,12 @@ static int mjpeg_decode_frame(AVCodecContext *avctx,
/* process markers */
if (start_code >= 0xd0 && start_code <= 0xd7) {
dprintf("restart marker: %d\n", start_code&0x0f);
- } else if (s->first_picture) {
/* APP fields */
- if (start_code >= 0xe0 && start_code <= 0xef)
- mjpeg_decode_app(s);
+ } else if (start_code >= APP0 && start_code <= APP15) {
+ mjpeg_decode_app(s);
/* Comment */
- else if (start_code == COM)
- mjpeg_decode_com(s);
+ } else if (start_code == COM){
+ mjpeg_decode_com(s);
}
switch(start_code) {