summaryrefslogtreecommitdiff
path: root/src/libffmpeg/libavcodec/mjpeg.c
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2003-01-08 13:18:42 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2003-01-08 13:18:42 +0000
commit6f1c8d4eafabd914b87e9171bf4d04f4ef9160ea (patch)
treee70be493d1222b10f96aa5efac01c0ec0d5bcc97 /src/libffmpeg/libavcodec/mjpeg.c
parent1fb58a63872660424777d41389e426dc90f1b660 (diff)
downloadxine-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.c27
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;