mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-27 02:41:54 +08:00 
			
		
		
		
	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:
		| @@ -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 | which @code{fieldmatch} is based on. While the semantic and usage are very | ||||||
| close, some behaviour and options names can differ. | 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: | The filter accepts the following options: | ||||||
|  |  | ||||||
| @table @option | @table @option | ||||||
|   | |||||||
| @@ -106,9 +106,7 @@ static av_cold int mp3lame_encode_init(AVCodecContext *avctx) | |||||||
|     lame_set_out_samplerate(s->gfp, avctx->sample_rate); |     lame_set_out_samplerate(s->gfp, avctx->sample_rate); | ||||||
|  |  | ||||||
|     /* algorithmic quality */ |     /* algorithmic quality */ | ||||||
|     if (avctx->compression_level == FF_COMPRESSION_DEFAULT) |     if (avctx->compression_level != FF_COMPRESSION_DEFAULT) | ||||||
|         lame_set_quality(s->gfp, 5); |  | ||||||
|     else |  | ||||||
|         lame_set_quality(s->gfp, avctx->compression_level); |         lame_set_quality(s->gfp, avctx->compression_level); | ||||||
|  |  | ||||||
|     /* rate control */ |     /* rate control */ | ||||||
|   | |||||||
| @@ -806,6 +806,13 @@ static int device_try_init(AVFormatContext *ctx, | |||||||
|     return ret; |     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) | static int v4l2_read_header(AVFormatContext *ctx) | ||||||
| { | { | ||||||
|     struct video_data *s = ctx->priv_data; |     struct video_data *s = ctx->priv_data; | ||||||
| @@ -1033,6 +1040,7 @@ AVInputFormat ff_v4l2_demuxer = { | |||||||
|     .name           = "video4linux2,v4l2", |     .name           = "video4linux2,v4l2", | ||||||
|     .long_name      = NULL_IF_CONFIG_SMALL("Video4Linux2 device grab"), |     .long_name      = NULL_IF_CONFIG_SMALL("Video4Linux2 device grab"), | ||||||
|     .priv_data_size = sizeof(struct video_data), |     .priv_data_size = sizeof(struct video_data), | ||||||
|  |     .read_probe     = v4l2_read_probe, | ||||||
|     .read_header    = v4l2_read_header, |     .read_header    = v4l2_read_header, | ||||||
|     .read_packet    = v4l2_read_packet, |     .read_packet    = v4l2_read_packet, | ||||||
|     .read_close     = v4l2_read_close, |     .read_close     = v4l2_read_close, | ||||||
|   | |||||||
| @@ -112,7 +112,7 @@ static int ass_read_header(AVFormatContext *s) | |||||||
|     int res = 0; |     int res = 0; | ||||||
|     AVStream *st; |     AVStream *st; | ||||||
|     FFTextReader tr; |     FFTextReader tr; | ||||||
|     ff_text_init_avio(&tr, s->pb); |     ff_text_init_avio(s, &tr, s->pb); | ||||||
|  |  | ||||||
|     st = avformat_new_stream(s, NULL); |     st = avformat_new_stream(s, NULL); | ||||||
|     if (!st) |     if (!st) | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ static int realtext_read_header(AVFormatContext *s) | |||||||
|     char c = 0; |     char c = 0; | ||||||
|     int res = 0, duration = read_ts("60"); // default duration is 60 seconds |     int res = 0, duration = read_ts("60"); // default duration is 60 seconds | ||||||
|     FFTextReader tr; |     FFTextReader tr; | ||||||
|     ff_text_init_avio(&tr, s->pb); |     ff_text_init_avio(s, &tr, s->pb); | ||||||
|  |  | ||||||
|     if (!st) |     if (!st) | ||||||
|         return AVERROR(ENOMEM); |         return AVERROR(ENOMEM); | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ static int sami_read_header(AVFormatContext *s) | |||||||
|     char c = 0; |     char c = 0; | ||||||
|     int res = 0, got_first_sync_point = 0; |     int res = 0, got_first_sync_point = 0; | ||||||
|     FFTextReader tr; |     FFTextReader tr; | ||||||
|     ff_text_init_avio(&tr, s->pb); |     ff_text_init_avio(s, &tr, s->pb); | ||||||
|  |  | ||||||
|     if (!st) |     if (!st) | ||||||
|         return AVERROR(ENOMEM); |         return AVERROR(ENOMEM); | ||||||
|   | |||||||
| @@ -87,7 +87,7 @@ static int srt_read_header(AVFormatContext *s) | |||||||
|     AVStream *st = avformat_new_stream(s, NULL); |     AVStream *st = avformat_new_stream(s, NULL); | ||||||
|     int res = 0; |     int res = 0; | ||||||
|     FFTextReader tr; |     FFTextReader tr; | ||||||
|     ff_text_init_avio(&tr, s->pb); |     ff_text_init_avio(s, &tr, s->pb); | ||||||
|  |  | ||||||
|     if (!st) |     if (!st) | ||||||
|         return AVERROR(ENOMEM); |         return AVERROR(ENOMEM); | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ | |||||||
| #include "libavutil/avassert.h" | #include "libavutil/avassert.h" | ||||||
| #include "libavutil/avstring.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; |     int i; | ||||||
|     r->pb = pb; |     r->pb = pb; | ||||||
| @@ -45,13 +45,16 @@ void ff_text_init_avio(FFTextReader *r, AVIOContext *pb) | |||||||
|             r->buf_pos += 3; |             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) | void ff_text_init_buf(FFTextReader *r, void *buf, size_t size) | ||||||
| { | { | ||||||
|     memset(&r->buf_pb, 0, sizeof(r->buf_pb)); |     memset(&r->buf_pb, 0, sizeof(r->buf_pb)); | ||||||
|     ffio_init_context(&r->buf_pb, buf, size, 0, NULL, NULL, NULL, NULL); |     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) | int64_t ff_text_pos(FFTextReader *r) | ||||||
|   | |||||||
| @@ -49,14 +49,16 @@ typedef struct { | |||||||
|  * Initialize the FFTextReader from the given AVIOContext. This function will |  * 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 |  * read some bytes from pb, and test for UTF-8 or UTF-16 BOMs. Further accesses | ||||||
|  * to FFTextReader will read more data from pb. |  * 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 |  * The purpose of FFTextReader is to transparently convert read data to UTF-8 | ||||||
|  * if the stream had a UTF-16 BOM. |  * if the stream had a UTF-16 BOM. | ||||||
|  * |  * | ||||||
|  |  * @param s Pointer to provide av_log context | ||||||
|  * @param r object which will be initialized |  * @param r object which will be initialized | ||||||
|  * @param pb stream to read from (referenced as long as FFTextReader is in use) |  * @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. |  * Similar to ff_text_init_avio(), but sets it up to read from a bounded buffer. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Niedermayer
					Michael Niedermayer