Merge remote-tracking branch 'cehoyos/master'

* cehoyos/master:
  Mention in the documentation that fieldmatch needs cfr input.
  Use v4l2 input format automatically if filename starts with "/dev/video"
  Print a warning if a subtitle demuxer changes utf16 to utf8.
  Do not set the lame quality if the user didn't request it.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-10-29 02:01:10 +01:00
commit 5b86447080
9 changed files with 25 additions and 10 deletions

View File

@ -4447,6 +4447,10 @@ and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
which @code{fieldmatch} is based on. While the semantic and usage are very
close, some behaviour and options names can differ.
The filter currently only works for constant frame rate input. Do not use it
if your input has mixed telecined and progressive content with changing
framerate.
The filter accepts the following options:
@table @option

View File

@ -106,9 +106,7 @@ static av_cold int mp3lame_encode_init(AVCodecContext *avctx)
lame_set_out_samplerate(s->gfp, avctx->sample_rate);
/* algorithmic quality */
if (avctx->compression_level == FF_COMPRESSION_DEFAULT)
lame_set_quality(s->gfp, 5);
else
if (avctx->compression_level != FF_COMPRESSION_DEFAULT)
lame_set_quality(s->gfp, avctx->compression_level);
/* rate control */

View File

@ -806,6 +806,13 @@ static int device_try_init(AVFormatContext *ctx,
return ret;
}
static int v4l2_read_probe(AVProbeData *p)
{
if (av_strstart(p->filename, "/dev/video", NULL))
return AVPROBE_SCORE_MAX - 1;
return 0;
}
static int v4l2_read_header(AVFormatContext *ctx)
{
struct video_data *s = ctx->priv_data;
@ -1033,6 +1040,7 @@ AVInputFormat ff_v4l2_demuxer = {
.name = "video4linux2,v4l2",
.long_name = NULL_IF_CONFIG_SMALL("Video4Linux2 device grab"),
.priv_data_size = sizeof(struct video_data),
.read_probe = v4l2_read_probe,
.read_header = v4l2_read_header,
.read_packet = v4l2_read_packet,
.read_close = v4l2_read_close,

View File

@ -112,7 +112,7 @@ static int ass_read_header(AVFormatContext *s)
int res = 0;
AVStream *st;
FFTextReader tr;
ff_text_init_avio(&tr, s->pb);
ff_text_init_avio(s, &tr, s->pb);
st = avformat_new_stream(s, NULL);
if (!st)

View File

@ -65,7 +65,7 @@ static int realtext_read_header(AVFormatContext *s)
char c = 0;
int res = 0, duration = read_ts("60"); // default duration is 60 seconds
FFTextReader tr;
ff_text_init_avio(&tr, s->pb);
ff_text_init_avio(s, &tr, s->pb);
if (!st)
return AVERROR(ENOMEM);

View File

@ -54,7 +54,7 @@ static int sami_read_header(AVFormatContext *s)
char c = 0;
int res = 0, got_first_sync_point = 0;
FFTextReader tr;
ff_text_init_avio(&tr, s->pb);
ff_text_init_avio(s, &tr, s->pb);
if (!st)
return AVERROR(ENOMEM);

View File

@ -87,7 +87,7 @@ static int srt_read_header(AVFormatContext *s)
AVStream *st = avformat_new_stream(s, NULL);
int res = 0;
FFTextReader tr;
ff_text_init_avio(&tr, s->pb);
ff_text_init_avio(s, &tr, s->pb);
if (!st)
return AVERROR(ENOMEM);

View File

@ -24,7 +24,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
void ff_text_init_avio(FFTextReader *r, AVIOContext *pb)
void ff_text_init_avio(void *s, FFTextReader *r, AVIOContext *pb)
{
int i;
r->pb = pb;
@ -45,13 +45,16 @@ void ff_text_init_avio(FFTextReader *r, AVIOContext *pb)
r->buf_pos += 3;
}
}
if (s && (r->type == FF_UTF16LE || r->type == FF_UTF16BE))
av_log(s, AV_LOG_WARNING,
"UTF16 is automatically converted to UTF8, do not specify a character encoding\n");
}
void ff_text_init_buf(FFTextReader *r, void *buf, size_t size)
{
memset(&r->buf_pb, 0, sizeof(r->buf_pb));
ffio_init_context(&r->buf_pb, buf, size, 0, NULL, NULL, NULL, NULL);
ff_text_init_avio(r, &r->buf_pb);
ff_text_init_avio(NULL, r, &r->buf_pb);
}
int64_t ff_text_pos(FFTextReader *r)

View File

@ -49,14 +49,16 @@ typedef struct {
* Initialize the FFTextReader from the given AVIOContext. This function will
* read some bytes from pb, and test for UTF-8 or UTF-16 BOMs. Further accesses
* to FFTextReader will read more data from pb.
* If s is not NULL, the user will be warned if a UTF-16 conversion takes place.
*
* The purpose of FFTextReader is to transparently convert read data to UTF-8
* if the stream had a UTF-16 BOM.
*
* @param s Pointer to provide av_log context
* @param r object which will be initialized
* @param pb stream to read from (referenced as long as FFTextReader is in use)
*/
void ff_text_init_avio(FFTextReader *r, AVIOContext *pb);
void ff_text_init_avio(void *s, FFTextReader *r, AVIOContext *pb);
/**
* Similar to ff_text_init_avio(), but sets it up to read from a bounded buffer.