From b1ad9312331759679a9c956233716a67ae681d89 Mon Sep 17 00:00:00 2001 From: Federico Simoncelli Date: Thu, 2 Jan 2014 16:25:48 +0100 Subject: [PATCH] v4l2: setting device parameters early Setting the v4l2 device parameters may influence video properties such as width, height and pixel format. This patch moves v4l2_set_parameters to be executed before fetching the video properties, avoiding errors such as (pal vs ntsc): The v4l2 frame is 829440 bytes, but 691200 bytes are expected Signed-off-by: Federico Simoncelli Signed-off-by: Michael Niedermayer --- libavdevice/v4l2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index cb962b7be7..1ab6f1c03a 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -866,6 +866,9 @@ static int v4l2_read_header(AVFormatContext *s1) avpriv_set_pts_info(st, 64, 1, 1000000); /* 64 bits pts in us */ + if ((res = v4l2_set_parameters(s1)) < 0) + return res; + if (s->pixel_format) { AVCodec *codec = avcodec_find_decoder_by_name(s->pixel_format); @@ -917,9 +920,6 @@ static int v4l2_read_header(AVFormatContext *s1) s->frame_format = desired_format; - if ((res = v4l2_set_parameters(s1)) < 0) - return res; - st->codec->pix_fmt = avpriv_fmt_v4l2ff(desired_format, codec_id); s->frame_size = avpicture_get_size(st->codec->pix_fmt, s->width, s->height);