Use avcodec_check_dimensions() for checking the frame size validity.

The v4l.c check is moved after the eventual automatic size detection,
so the check in that case is performed on the new set values.

Originally committed as revision 16370 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Stefano Sabatini 16 years ago
parent ade8fb4d75
commit 5d91e92853
  1. 8
      libavdevice/v4l.c
  2. 5
      libavdevice/v4l2.c

@ -84,11 +84,6 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
} }
s->time_base = ap->time_base; s->time_base = ap->time_base;
if((unsigned)ap->width > 32767 || (unsigned)ap->height > 32767) {
av_log(s1, AV_LOG_ERROR, "Capture size is out of range: %dx%d\n",
ap->width, ap->height);
return -1;
}
s->video_win.width = ap->width; s->video_win.width = ap->width;
s->video_win.height = ap->height; s->video_win.height = ap->height;
@ -121,6 +116,9 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
} }
} }
if(avcodec_check_dimensions(s1, s->video_win.width, s->video_win.height) < 0)
return -1;
desired_palette = -1; desired_palette = -1;
desired_depth = -1; desired_depth = -1;
for (j = 0; j < vformat_num; j++) { for (j = 0; j < vformat_num; j++) {

@ -526,11 +526,8 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
frame_rate = ap->time_base.den; frame_rate = ap->time_base.den;
frame_rate_base = ap->time_base.num; frame_rate_base = ap->time_base.num;
if((unsigned)width > 32767 || (unsigned)height > 32767) { if(avcodec_check_dimensions(s1, ap->width, ap->height) < 0)
av_log(s1, AV_LOG_ERROR, "Wrong size (%dx%d)\n", width, height);
return -1; return -1;
}
st = av_new_stream(s1, 0); st = av_new_stream(s1, 0);
if (!st) { if (!st) {

Loading…
Cancel
Save