diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-01-08 13:18:42 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-01-08 13:18:42 +0000 |
commit | 6f1c8d4eafabd914b87e9171bf4d04f4ef9160ea (patch) | |
tree | e70be493d1222b10f96aa5efac01c0ec0d5bcc97 /src/libffmpeg/libavcodec/mjpeg.c | |
parent | 1fb58a63872660424777d41389e426dc90f1b660 (diff) | |
download | xine-lib-6f1c8d4eafabd914b87e9171bf4d04f4ef9160ea.tar.gz xine-lib-6f1c8d4eafabd914b87e9171bf4d04f4ef9160ea.tar.bz2 |
syncing ffmpeg (with some compilation fixes)
- fixes wma bugs
- mace, huffyuv and mp3 decoders imported (but not enabled)
tested: wma (v1 and v2), mpeg4, msmpeg4 v1, v2 and v3, divx3, divx4, divx5, xvid and
dv decoders. everything looks fine.
CVS patchset: 3828
CVS date: 2003/01/08 13:18:42
Diffstat (limited to 'src/libffmpeg/libavcodec/mjpeg.c')
-rw-r--r-- | src/libffmpeg/libavcodec/mjpeg.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/src/libffmpeg/libavcodec/mjpeg.c b/src/libffmpeg/libavcodec/mjpeg.c index eed155c19..9b4943582 100644 --- a/src/libffmpeg/libavcodec/mjpeg.c +++ b/src/libffmpeg/libavcodec/mjpeg.c @@ -720,6 +720,8 @@ static int mjpeg_decode_init(AVCodecContext *avctx) s->buffer_size = 102400; /* smaller buffer should be enough, but photojpg files could ahive bigger sizes */ s->buffer = av_malloc(s->buffer_size); + if (!s->buffer) + return -1; s->start_code = -1; s->first_picture = 1; s->org_width = avctx->width; @@ -1180,17 +1182,28 @@ static int mjpeg_decode_app(MJpegDecodeContext *s) get_bits(&s->gb, 8), get_bits(&s->gb, 8)); if (get_bits(&s->gb, 8) == 0) { - int x_density = get_bits(&s->gb, 16); - int y_density = get_bits(&s->gb, 16); + int x_density, y_density; + x_density = get_bits(&s->gb, 16); + y_density = get_bits(&s->gb, 16); + dprintf("x/y density: %d (%f), %d (%f)\n", x_density, + (float)x_density, y_density, (float)y_density); +#if 0 //MN: needs to be checked - s->avctx->aspect_ratio= s->width*y_density/((float)s->height*x_density); + if(x_density) +// s->avctx->aspect_ratio= s->width*y_density/((float)s->height*x_density); + s->avctx->aspect_ratio = (float)x_density/y_density; + /* it's better, but every JFIF I have seen stores 1:1 */ + else + s->avctx->aspect_ratio= 0.0; +#endif } else { skip_bits(&s->gb, 16); skip_bits(&s->gb, 16); } + t_w = get_bits(&s->gb, 8); t_h = get_bits(&s->gb, 8); if (t_w && t_h) @@ -1431,7 +1444,6 @@ static int mjpeg_decode_frame(AVCodecContext *avctx, case EOI: eoi_parser: { - int l; if (s->interlaced) { s->bottom_field ^= 1; /* if not bottom field, do not output image yet */ @@ -1440,15 +1452,8 @@ eoi_parser: } for(i=0;i<3;i++) { picture->data[i] = s->current_picture[i]; -#if 1 - l = s->linesize[i]; - if (s->interlaced) - l >>= 1; - picture->linesize[i] = l; -#else picture->linesize[i] = (s->interlaced) ? s->linesize[i] >> 1 : s->linesize[i]; -#endif } *data_size = sizeof(AVPicture); avctx->height = s->height; |