On date Thursday 2011-05-26 09:23:27 +0200, Anton Khirnov encoded:
> ---
> libavdevice/v4l2.c | 21 +++++++++++++++++++--
> 1 files changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
> index 566ee92..f95b3bd 100644
> --- a/libavdevice/v4l2.c
> +++ b/libavdevice/v4l2.c
> @@ -46,6 +46,7 @@
> #include "libavutil/imgutils.h"
> #include "libavutil/log.h"
> #include "libavutil/opt.h"
> +#include "libavutil/parseutils.h"
>
> static const int desired_video_buffers = 256;
>
> @@ -69,6 +70,7 @@ struct video_data {
> unsigned int *buf_len;
> char *standard;
> int channel;
> + char *video_size; /**< String describing video size, set by a private
> option. */
> };
>
> struct buff_data {
> @@ -587,8 +589,20 @@ static int v4l2_read_header(AVFormatContext *s1,
> AVFormatParameters *ap)
> }
> av_set_pts_info(st, 64, 1, 1000000); /* 64 bits pts in us */
>
> - s->width = ap->width;
> - s->height = ap->height;
> + if (s->video_size) {
> + res = av_parse_video_size(&s->width, &s->height, s->video_size);
> + av_freep(&s->video_size);
> + if (res < 0) {
> + av_log(s1, AV_LOG_ERROR, "Couldn't parse video size.\n");
> + return res;
> + }
> + }
> +#if FF_API_FORMAT_PARAMETERS
> + if (ap->width > 0)
> + s->width = ap->width;
> + if (ap->height > 0)
> + s->height = ap->height;
> +#endif
>
> capabilities = 0;
> s->fd = device_open(s1, &capabilities);
> @@ -696,9 +710,12 @@ static int v4l2_read_close(AVFormatContext *s1)
> return 0;
> }
>
> +#define OFFSET(x) offsetof(struct video_data, x)
> +#define DEC AV_OPT_FLAG_DECODING_PARAM
> static const AVOption options[] = {
> { "standard", "", offsetof(struct video_data, standard),
> FF_OPT_TYPE_STRING, {.str = "NTSC" }, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
> { "channel", "", offsetof(struct video_data, channel),
> FF_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
> + { "video_size", "A string describing frame size, such as 640x480 or
> hd720.", OFFSET(video_size), FF_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC },
Nit: maybe "size" with an "s" alias is better.
Rest of the patch looks fine, same for the other similar patches.
--
No matter who you are, some scholar can show you the great idea you had
was had by someone before you.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel