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;
int x_density = get_bits(&s->gb, 16);
int 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
if(x_density)
- s->avctx->aspect_ratio= s->width*y_density/((float)s->height*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)
case EOI:
eoi_parser:
{
- int l;
if (s->interlaced) {
s->bottom_field ^= 1;
/* if not bottom field, do not output image yet */
}
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;