summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2003-06-25 10:21:45 +0000
committerAlex Beregszaszi <alex@rtfs.hu>2003-06-25 10:21:45 +0000
commite3ee328330e924e6524003a6e082934fddb87a44 (patch)
tree1737169dd2e55b799c854862ce012cf6433bfd48 /libavformat
parent93caefc7d6608f109ae9ab16c2f6d5ae6c75cffd (diff)
tv standard selection support for dv1394 and grab (v4l)
Originally committed as revision 1987 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/avformat.h1
-rw-r--r--libavformat/dv1394.c6
-rw-r--r--libavformat/grab.c12
3 files changed, 17 insertions, 2 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index e7dab88671..29ca9875d8 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -86,6 +86,7 @@ typedef struct AVFormatParameters {
struct AVImageFormat *image_format;
int channel; /* used to select dv channel */
const char *device; /* video4linux, audio or DV device */
+ const char *standard; /* tv standard, NTSC, PAL, SECAM */
} AVFormatParameters;
#define AVFMT_NOFILE 0x0001 /* no file should be opened */
diff --git a/libavformat/dv1394.c b/libavformat/dv1394.c
index 5e8b83d2b4..0e373a311d 100644
--- a/libavformat/dv1394.c
+++ b/libavformat/dv1394.c
@@ -91,8 +91,10 @@ static int dv1394_read_header(AVFormatContext * context, AVFormatParameters * ap
return -ENOMEM;
}
- /* FIXME: Need a format change parameter */
- dv->format = DV1394_NTSC;
+ if (ap->standard && !strcasecmp(ap->standard, "pal"))
+ dv->format = DV1394_PAL;
+ else
+ dv->format = DV1394_NTSC;
if (ap->channel)
dv->channel = ap->channel;
diff --git a/libavformat/grab.c b/libavformat/grab.c
index 3a99704520..cd4b8fe908 100644
--- a/libavformat/grab.c
+++ b/libavformat/grab.c
@@ -62,6 +62,7 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
int video_fd, frame_size;
int ret, frame_rate, frame_rate_base;
int desired_palette;
+ struct video_tuner tuner;
struct video_audio audio;
const char *video_device;
@@ -109,6 +110,17 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap)
} else if (st->codec.pix_fmt == PIX_FMT_BGR24) {
desired_palette = VIDEO_PALETTE_RGB24;
}
+
+ /* set tv standard */
+ if (ap->standard && !ioctl(video_fd, VIDIOCGTUNER, &tuner)) {
+ if (!strcasecmp(ap->standard, "pal"))
+ tuner.mode = VIDEO_MODE_PAL;
+ else if (!strcasecmp(ap->standard, "secam"))
+ tuner.mode = VIDEO_MODE_SECAM;
+ else
+ tuner.mode = VIDEO_MODE_NTSC;
+ ioctl(video_fd, VIDIOCSTUNER, &tuner);
+ }
/* unmute audio */
audio.audio = 0;