diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-06-03 05:19:30 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-06-03 05:19:30 +0200 |
commit | 99eb31e263a24bc6c5a7a3f455a2bcb04a60e70e (patch) | |
tree | 83aab2f083fd3d6923d4e76fe0cc0c41ef7aef35 /libavdevice/bktr.c | |
parent | 9034001b17077e9da5205c4344eb1b88b9882f03 (diff) | |
parent | f190f676bc93a7e80344f2feeb3b9b44604d4717 (diff) | |
download | ffmpeg-streaming-99eb31e263a24bc6c5a7a3f455a2bcb04a60e70e.zip ffmpeg-streaming-99eb31e263a24bc6c5a7a3f455a2bcb04a60e70e.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master: (25 commits)
Replace custom DEBUG preprocessor trickery by the standard one.
vorbis: Remove non-compiling debug statement.
vorbis: Remove pointless DEBUG #ifdef around debug output macros.
cook: Remove non-compiling debug output.
Remove pointless #ifdefs around function declarations in a header.
Replace #ifdef + av_log() combinations by av_dlog().
Replace custom debug output functions by av_dlog().
cook: Remove unused debug functions.
Remove stray extra arguments from av_dlog() invocations.
targa: fix big-endian build
v4l2: remove one forgotten use of AVFormatParameters.pix_fmt.
vfwcap: add a framerate private option.
v4l2: add a framerate private option.
libdc1394: add a framerate private option.
fbdev: add a framerate private option.
bktr: add a framerate private option.
oma: check avio_read() return value
nutdec: remove unused variable
Remove unused variables
swscale: allocate larger buffer to handle altivec overreads.
...
Conflicts:
ffmpeg.c
libavcodec/dca.c
libavcodec/dirac.c
libavcodec/error_resilience.c
libavcodec/h264.c
libavcodec/mpeg12.c
libavcodec/mpeg4videodec.c
libavcodec/mpegvideo.c
libavcodec/mpegvideo_enc.c
libavcodec/pthread.c
libavcodec/rv10.c
libavcodec/s302m.c
libavcodec/shorten.c
libavcodec/truemotion2.c
libavcodec/utils.c
libavdevice/dv1394.c
libavdevice/fbdev.c
libavdevice/libdc1394.c
libavdevice/v4l2.c
libavformat/4xm.c
libavformat/apetag.c
libavformat/asfdec.c
libavformat/avidec.c
libavformat/mmf.c
libavformat/mpeg.c
libavformat/mpegenc.c
libavformat/mpegts.c
libavformat/oggdec.c
libavformat/oggparseogm.c
libavformat/rl2.c
libavformat/rmdec.c
libavformat/rpl.c
libavformat/rtpdec_latm.c
libavformat/sauce.c
libavformat/sol.c
libswscale/utils.c
tests/ref/vsynth1/error
tests/ref/vsynth2/error
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavdevice/bktr.c')
-rw-r--r-- | libavdevice/bktr.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/libavdevice/bktr.c b/libavdevice/bktr.c index f04f29c..dd2a2c1 100644 --- a/libavdevice/bktr.c +++ b/libavdevice/bktr.c @@ -54,11 +54,10 @@ typedef struct { int video_fd; int tuner_fd; int width, height; - int frame_rate; - int frame_rate_base; uint64_t per_frame; int standard; char *video_size; /**< String describing video size, set by a private option. */ + char *framerate; /**< Set by a private option. */ } VideoData; @@ -249,8 +248,7 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap) VideoData *s = s1->priv_data; AVStream *st; int width, height; - int frame_rate; - int frame_rate_base; + AVRational fps; int ret = 0; if (ap->time_base.den <= 0) { @@ -262,14 +260,18 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap) av_log(s1, AV_LOG_ERROR, "Couldn't parse video size.\n"); goto out; } + if ((ret = av_parse_video_rate(&fps, s->framerate)) < 0) { + av_log(s1, AV_LOG_ERROR, "Couldn't parse framerate.\n"); + goto out; + } #if FF_API_FORMAT_PARAMETERS if (ap->width > 0) width = ap->width; if (ap->height > 0) height = ap->height; + if (ap->time_base.num) + fps = (AVRational){ap->time_base.den, ap->time_base.num}; #endif - frame_rate = ap->time_base.den; - frame_rate_base = ap->time_base.num; st = av_new_stream(s1, 0); if (!st) { @@ -280,17 +282,15 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap) s->width = width; s->height = height; - s->frame_rate = frame_rate; - s->frame_rate_base = frame_rate_base; - s->per_frame = ((uint64_t)1000000 * s->frame_rate_base) / s->frame_rate; + s->per_frame = ((uint64_t)1000000 * fps.den) / fps.num; st->codec->codec_type = AVMEDIA_TYPE_VIDEO; st->codec->pix_fmt = PIX_FMT_YUV420P; st->codec->codec_id = CODEC_ID_RAWVIDEO; st->codec->width = width; st->codec->height = height; - st->codec->time_base.den = frame_rate; - st->codec->time_base.num = frame_rate_base; + st->codec->time_base.den = fps.num; + st->codec->time_base.num = fps.den; #if FF_API_FORMAT_PARAMETERS if (ap->standard) { @@ -314,6 +314,7 @@ static int grab_read_header(AVFormatContext *s1, AVFormatParameters *ap) out: av_freep(&s->video_size); + av_freep(&s->framerate); return ret; } @@ -346,6 +347,7 @@ static const AVOption options[] = { { "PALM", "", 0, FF_OPT_TYPE_CONST, {.dbl = PALM}, 0, 0, AV_OPT_FLAG_DECODING_PARAM, "standard" }, { "NTSCJ", "", 0, FF_OPT_TYPE_CONST, {.dbl = NTSCJ}, 0, 0, AV_OPT_FLAG_DECODING_PARAM, "standard" }, { "video_size", "A string describing frame size, such as 640x480 or hd720.", OFFSET(video_size), FF_OPT_TYPE_STRING, {.str = "vga"}, 0, 0, DEC }, + { "framerate", "", OFFSET(framerate), FF_OPT_TYPE_STRING, {.str = "ntsc"}, 0, 0, DEC }, { NULL }, }; |