---
 libavdevice/libdc1394.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/libavdevice/libdc1394.c b/libavdevice/libdc1394.c
index 96e9e9b..514087d 100644
--- a/libavdevice/libdc1394.c
+++ b/libavdevice/libdc1394.c
@@ -60,6 +60,8 @@ typedef struct dc1394_data {
     int current_frame;
     int fps;
 
+    int width, height;
+
     AVPacket packet;
 } dc1394_data;
 
@@ -98,12 +100,15 @@ static inline int dc1394_read_common(AVFormatContext *c, 
AVFormatParameters *ap,
     struct dc1394_frame_format *fmt;
     struct dc1394_frame_rate *fps;
     enum PixelFormat pix_fmt = ap->pix_fmt == PIX_FMT_NONE ? PIX_FMT_UYVY422 : 
ap->pix_fmt; /* defaults */
-    int width                = !ap->width ? 320 : ap->width;
-    int height               = !ap->height ? 240 : ap->height;
     int frame_rate           = !ap->time_base.num ? 30000 : av_rescale(1000, 
ap->time_base.den, ap->time_base.num);
 
+    if (ap->width > 0)
+        dc1394->width  = ap->width;
+    if (ap->height > 0)
+        dc1394->height = ap->height;
+
     for (fmt = dc1394_frame_formats; fmt->width; fmt++)
-         if (fmt->pix_fmt == pix_fmt && fmt->width == width && fmt->height == 
height)
+         if (fmt->pix_fmt == pix_fmt && fmt->width == dc1394->width && 
fmt->height == dc1394->height)
              break;
 
     for (fps = dc1394_frame_rates; fps->frame_rate; fps++)
@@ -112,7 +117,7 @@ static inline int dc1394_read_common(AVFormatContext *c, 
AVFormatParameters *ap,
 
     if (!fps->frame_rate || !fmt->width) {
         av_log(c, AV_LOG_ERROR, "Can't find matching camera format for %s, 
%dx%d@%d:1000fps\n", avcodec_get_pix_fmt_name(pix_fmt),
-                                                                               
                 width, height, frame_rate);
+                                                                               
                 dc1394->width, dc1394->height, frame_rate);
         goto out;
     }
 
@@ -249,6 +254,8 @@ static const AVOption options[] = {
 #if HAVE_LIBDC1394_1
     { "channel", "", offsetof(dc1394_data, channel), FF_OPT_TYPE_INT, {.dbl = 
0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
 #endif
+    { "width",   "", offsetof(dc1394_data, width),   FF_OPT_TYPE_INT, {.dbl = 
320}, 1, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
+    { "height",  "", offsetof(dc1394_data, height),  FF_OPT_TYPE_INT, {.dbl = 
240}, 1, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
     { NULL },
 };
 
-- 
1.7.5.1

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to