| @@ -30,6 +30,8 @@ | |||||
| #include <time.h> | #include <time.h> | ||||
| #include <strings.h> | #include <strings.h> | ||||
| #include "libavutil/log.h" | |||||
| #include "libavutil/opt.h" | |||||
| #include "libavformat/avformat.h" | #include "libavformat/avformat.h" | ||||
| #undef DV1394_DEBUG | #undef DV1394_DEBUG | ||||
| @@ -38,6 +40,7 @@ | |||||
| #include "dv1394.h" | #include "dv1394.h" | ||||
| struct dv1394_data { | struct dv1394_data { | ||||
| AVClass *class; | |||||
| int fd; | int fd; | ||||
| int channel; | int channel; | ||||
| int format; | int format; | ||||
| @@ -90,10 +93,12 @@ static int dv1394_read_header(AVFormatContext * context, AVFormatParameters * ap | |||||
| if (!dv->dv_demux) | if (!dv->dv_demux) | ||||
| goto failed; | goto failed; | ||||
| if (ap->standard && !strcasecmp(ap->standard, "pal")) | |||||
| dv->format = DV1394_PAL; | |||||
| else | |||||
| dv->format = DV1394_NTSC; | |||||
| if (ap->standard) { | |||||
| if (!strcasecmp(ap->standard, "pal")) | |||||
| dv->format = DV1394_PAL; | |||||
| else | |||||
| dv->format = DV1394_NTSC; | |||||
| } | |||||
| if (ap->channel) | if (ap->channel) | ||||
| dv->channel = ap->channel; | dv->channel = ap->channel; | ||||
| @@ -227,6 +232,20 @@ static int dv1394_close(AVFormatContext * context) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| static const AVOption options[] = { | |||||
| { "standard", "", offsetof(struct dv1394_data, format), FF_OPT_TYPE_INT, {.dbl = DV1394_NTSC}, DV1394_PAL, DV1394_NTSC, AV_OPT_FLAG_DECODING_PARAM, "standard" }, | |||||
| { "PAL", "", 0, FF_OPT_TYPE_CONST, {.dbl = DV1394_PAL}, 0, 0, AV_OPT_FLAG_DECODING_PARAM, "standard" }, | |||||
| { "NTSC", "", 0, FF_OPT_TYPE_CONST, {.dbl = DV1394_NTSC}, 0, 0, AV_OPT_FLAG_DECODING_PARAM, "standard" }, | |||||
| { NULL }, | |||||
| }; | |||||
| static const AVClass dv1394_class = { | |||||
| .class_name = "DV1394 indev", | |||||
| .item_name = av_default_item_name, | |||||
| .option = options, | |||||
| .version = LIBAVUTIL_VERSION_INT, | |||||
| }; | |||||
| AVInputFormat ff_dv1394_demuxer = { | AVInputFormat ff_dv1394_demuxer = { | ||||
| .name = "dv1394", | .name = "dv1394", | ||||
| .long_name = NULL_IF_CONFIG_SMALL("DV1394 A/V grab"), | .long_name = NULL_IF_CONFIG_SMALL("DV1394 A/V grab"), | ||||
| @@ -234,5 +253,6 @@ AVInputFormat ff_dv1394_demuxer = { | |||||
| .read_header = dv1394_read_header, | .read_header = dv1394_read_header, | ||||
| .read_packet = dv1394_read_packet, | .read_packet = dv1394_read_packet, | ||||
| .read_close = dv1394_close, | .read_close = dv1394_close, | ||||
| .flags = AVFMT_NOFILE | |||||
| .flags = AVFMT_NOFILE, | |||||
| .priv_class = &dv1394_class, | |||||
| }; | }; | ||||