You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	lavfi: add layout negotiation fields and helper functions.
This commit is contained in:
		
				
					committed by
					
						 Stefano Sabatini
						Stefano Sabatini
					
				
			
			
				
	
			
			
			
						parent
						
							527ca3985c
						
					
				
				
					commit
					fd2c0a5db2
				
			| @@ -13,6 +13,15 @@ libavutil:   2011-04-18 | |||||||
|  |  | ||||||
| API changes, most recent first: | API changes, most recent first: | ||||||
|  |  | ||||||
|  | 2011-06-19 - xxxxxxx - lavfi 2.23.0 - avfilter.h | ||||||
|  |   Add layout negotiation fields and helper functions. | ||||||
|  |  | ||||||
|  |   In particular, add in_chlayouts and out_chlayouts to AVFilterLink, | ||||||
|  |   and the functions: | ||||||
|  |   avfilter_set_common_sample_formats() | ||||||
|  |   avfilter_set_common_channel_layouts() | ||||||
|  |   avfilter_all_channel_layouts() | ||||||
|  |  | ||||||
| 2011-06-19 - xxxxxxx - lavfi 2.22.0 - AVFilterFormats | 2011-06-19 - xxxxxxx - lavfi 2.22.0 - AVFilterFormats | ||||||
|   Change type of AVFilterFormats.formats from int * to int64_t *, |   Change type of AVFilterFormats.formats from int * to int64_t *, | ||||||
|   and update formats handling API accordingly. |   and update formats handling API accordingly. | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								ffplay.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								ffplay.c
									
									
									
									
									
								
							| @@ -1644,7 +1644,7 @@ static int input_query_formats(AVFilterContext *ctx) | |||||||
|         priv->is->video_st->codec->pix_fmt, PIX_FMT_NONE |         priv->is->video_st->codec->pix_fmt, PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -217,6 +217,9 @@ int avfilter_insert_filter(AVFilterLink *link, AVFilterContext *filt, | |||||||
|     if (link->out_formats) |     if (link->out_formats) | ||||||
|         avfilter_formats_changeref(&link->out_formats, |         avfilter_formats_changeref(&link->out_formats, | ||||||
|                                    &filt->outputs[filt_dstpad_idx]->out_formats); |                                    &filt->outputs[filt_dstpad_idx]->out_formats); | ||||||
|  |     if (link->out_chlayouts) | ||||||
|  |         avfilter_formats_changeref(&link->out_chlayouts, | ||||||
|  |                                    &filt->outputs[filt_dstpad_idx]->out_chlayouts); | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ | |||||||
| #include "libavutil/samplefmt.h" | #include "libavutil/samplefmt.h" | ||||||
|  |  | ||||||
| #define LIBAVFILTER_VERSION_MAJOR  2 | #define LIBAVFILTER_VERSION_MAJOR  2 | ||||||
| #define LIBAVFILTER_VERSION_MINOR 22 | #define LIBAVFILTER_VERSION_MINOR 23 | ||||||
| #define LIBAVFILTER_VERSION_MICRO  0 | #define LIBAVFILTER_VERSION_MICRO  0 | ||||||
|  |  | ||||||
| #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | ||||||
| @@ -255,6 +255,11 @@ int avfilter_add_format(AVFilterFormats **avff, int64_t fmt); | |||||||
|  */ |  */ | ||||||
| AVFilterFormats *avfilter_all_formats(enum AVMediaType type); | AVFilterFormats *avfilter_all_formats(enum AVMediaType type); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Return a list of all channel layouts supported by FFmpeg. | ||||||
|  |  */ | ||||||
|  | AVFilterFormats *avfilter_all_channel_layouts(void); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Return a format list which contains the intersection of the formats of |  * Return a format list which contains the intersection of the formats of | ||||||
|  * a and b. Also, all the references of a, all the references of b, and |  * a and b. Also, all the references of a, all the references of b, and | ||||||
| @@ -466,11 +471,13 @@ AVFilterBufferRef *avfilter_default_get_audio_buffer(AVFilterLink *link, int per | |||||||
|                                                      int64_t channel_layout, int planar); |                                                      int64_t channel_layout, int planar); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * A helper for query_formats() which sets all links to the same list of |  * Helpers for query_formats() which set all links to the same list of | ||||||
|  * formats. If there are no links hooked to this filter, the list of formats is |  * formats/layouts. If there are no links hooked to this filter, the list | ||||||
|  * freed. |  * of formats is freed. | ||||||
|  */ |  */ | ||||||
| void avfilter_set_common_formats(AVFilterContext *ctx, AVFilterFormats *formats); | void avfilter_set_common_pixel_formats(AVFilterContext *ctx, AVFilterFormats *formats); | ||||||
|  | void avfilter_set_common_sample_formats(AVFilterContext *ctx, AVFilterFormats *formats); | ||||||
|  | void avfilter_set_common_channel_layouts(AVFilterContext *ctx, AVFilterFormats *formats); | ||||||
|  |  | ||||||
| /** Default handler for query_formats() */ | /** Default handler for query_formats() */ | ||||||
| int avfilter_default_query_formats(AVFilterContext *ctx); | int avfilter_default_query_formats(AVFilterContext *ctx); | ||||||
| @@ -521,9 +528,9 @@ typedef struct AVFilter { | |||||||
|     void (*uninit)(AVFilterContext *ctx); |     void (*uninit)(AVFilterContext *ctx); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Queries formats supported by the filter and its pads, and sets the |      * Queries formats/layouts supported by the filter and its pads, and sets | ||||||
|      * in_formats for links connected to its output pads, and out_formats |      * the in_formats/in_chlayouts for links connected to its output pads, | ||||||
|      * for links connected to its input pads. |      * and out_formats/out_chlayouts for links connected to its input pads. | ||||||
|      * |      * | ||||||
|      * @return zero on success, a negative value corresponding to an |      * @return zero on success, a negative value corresponding to an | ||||||
|      * AVERROR code otherwise |      * AVERROR code otherwise | ||||||
| @@ -593,13 +600,18 @@ struct AVFilterLink { | |||||||
|     int format;                 ///< agreed upon media format |     int format;                 ///< agreed upon media format | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Lists of formats supported by the input and output filters respectively. |      * Lists of formats and channel layouts supported by the input and output | ||||||
|      * These lists are used for negotiating the format to actually be used, |      * filters respectively. These lists are used for negotiating the format | ||||||
|      * which will be loaded into the format member, above, when chosen. |      * to actually be used, which will be loaded into the format and | ||||||
|  |      * channel_layout members, above, when chosen. | ||||||
|  |      * | ||||||
|      */ |      */ | ||||||
|     AVFilterFormats *in_formats; |     AVFilterFormats *in_formats; | ||||||
|     AVFilterFormats *out_formats; |     AVFilterFormats *out_formats; | ||||||
|  |  | ||||||
|  |     AVFilterFormats *in_chlayouts; | ||||||
|  |     AVFilterFormats *out_chlayouts; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * The buffer reference currently being sent across the link by the source |      * The buffer reference currently being sent across the link by the source | ||||||
|      * filter. This is used internally by the filter system to allow |      * filter. This is used internally by the filter system to allow | ||||||
|   | |||||||
| @@ -195,9 +195,16 @@ static void pick_format(AVFilterLink *link) | |||||||
|  |  | ||||||
|     link->in_formats->format_count = 1; |     link->in_formats->format_count = 1; | ||||||
|     link->format = link->in_formats->formats[0]; |     link->format = link->in_formats->formats[0]; | ||||||
|  |  | ||||||
|     avfilter_formats_unref(&link->in_formats); |     avfilter_formats_unref(&link->in_formats); | ||||||
|     avfilter_formats_unref(&link->out_formats); |     avfilter_formats_unref(&link->out_formats); | ||||||
|  |  | ||||||
|  |     if (link->type == AVMEDIA_TYPE_AUDIO) { | ||||||
|  |         link->in_chlayouts->format_count = 1; | ||||||
|  |         link->channel_layout = link->in_chlayouts->formats[0]; | ||||||
|  |         avfilter_formats_unref(&link->in_chlayouts); | ||||||
|  |         avfilter_formats_unref(&link->out_chlayouts); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| static void pick_formats(AVFilterGraph *graph) | static void pick_formats(AVFilterGraph *graph) | ||||||
|   | |||||||
| @@ -197,45 +197,54 @@ int avfilter_default_config_output_link(AVFilterLink *link) | |||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | static void set_common_formats(AVFilterContext *ctx, AVFilterFormats *fmts, | ||||||
|  * A helper for query_formats() which sets all links to the same list of |                                enum AVMediaType type, int offin, int offout) | ||||||
|  * formats. If there are no links hooked to this filter, the list of formats is |  | ||||||
|  * freed. |  | ||||||
|  * |  | ||||||
|  * FIXME: this will need changed for filters with a mix of pad types |  | ||||||
|  * (video + audio, etc) |  | ||||||
|  */ |  | ||||||
| void avfilter_set_common_formats(AVFilterContext *ctx, AVFilterFormats *formats) |  | ||||||
| { | { | ||||||
|     int count = 0, i; |     int i; | ||||||
|  |     for (i = 0; i < ctx->input_count; i++) | ||||||
|  |         if (ctx->inputs[i] && ctx->inputs[i]->type == type) | ||||||
|  |             avfilter_formats_ref(fmts, | ||||||
|  |                                  (AVFilterFormats**)((void*)ctx->inputs[i]+offout)); | ||||||
|  |  | ||||||
|     for (i = 0; i < ctx->input_count; i++) { |     for (i = 0; i < ctx->output_count; i++) | ||||||
|         if (ctx->inputs[i]) { |         if (ctx->outputs[i] && ctx->outputs[i]->type == type) | ||||||
|             avfilter_formats_ref(formats, &ctx->inputs[i]->out_formats); |             avfilter_formats_ref(fmts, | ||||||
|             count++; |                                  (AVFilterFormats**)((void*)ctx->outputs[i]+offin)); | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     for (i = 0; i < ctx->output_count; i++) { |  | ||||||
|         if (ctx->outputs[i]) { |  | ||||||
|             avfilter_formats_ref(formats, &ctx->outputs[i]->in_formats); |  | ||||||
|             count++; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if (!count) { |     if (!fmts->refcount) { | ||||||
|         av_free(formats->formats); |         av_free(fmts->formats); | ||||||
|         av_free(formats->refs); |         av_free(fmts->refs); | ||||||
|         av_free(formats); |         av_free(fmts); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void avfilter_set_common_pixel_formats(AVFilterContext *ctx, AVFilterFormats *formats) | ||||||
|  | { | ||||||
|  |     set_common_formats(ctx, formats, AVMEDIA_TYPE_VIDEO, | ||||||
|  |                        offsetof(AVFilterLink, in_formats), | ||||||
|  |                        offsetof(AVFilterLink, out_formats)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void avfilter_set_common_sample_formats(AVFilterContext *ctx, AVFilterFormats *formats) | ||||||
|  | { | ||||||
|  |     set_common_formats(ctx, formats, AVMEDIA_TYPE_AUDIO, | ||||||
|  |                        offsetof(AVFilterLink, in_formats), | ||||||
|  |                        offsetof(AVFilterLink, out_formats)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void avfilter_set_common_channel_layouts(AVFilterContext *ctx, AVFilterFormats *formats) | ||||||
|  | { | ||||||
|  |     set_common_formats(ctx, formats, AVMEDIA_TYPE_AUDIO, | ||||||
|  |                        offsetof(AVFilterLink, in_chlayouts), | ||||||
|  |                        offsetof(AVFilterLink, out_chlayouts)); | ||||||
|  | } | ||||||
|  |  | ||||||
| int avfilter_default_query_formats(AVFilterContext *ctx) | int avfilter_default_query_formats(AVFilterContext *ctx) | ||||||
| { | { | ||||||
|     enum AVMediaType type = ctx->inputs  && ctx->inputs [0] ? ctx->inputs [0]->type : |     avfilter_set_common_pixel_formats(ctx, avfilter_all_formats(AVMEDIA_TYPE_VIDEO)); | ||||||
|                             ctx->outputs && ctx->outputs[0] ? ctx->outputs[0]->type : |     avfilter_set_common_sample_formats(ctx, avfilter_all_formats(AVMEDIA_TYPE_AUDIO)); | ||||||
|                             AVMEDIA_TYPE_VIDEO; |     avfilter_set_common_channel_layouts(ctx, avfilter_all_channel_layouts()); | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_all_formats(type)); |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -20,6 +20,7 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #include "libavutil/pixdesc.h" | #include "libavutil/pixdesc.h" | ||||||
|  | #include "libavutil/audioconvert.h" | ||||||
| #include "avfilter.h" | #include "avfilter.h" | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -139,6 +140,27 @@ AVFilterFormats *avfilter_all_formats(enum AVMediaType type) | |||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | AVFilterFormats *avfilter_all_channel_layouts(void) | ||||||
|  | { | ||||||
|  |     static int64_t chlayouts[] = { | ||||||
|  |         AV_CH_LAYOUT_MONO, | ||||||
|  |         AV_CH_LAYOUT_STEREO, | ||||||
|  |         AV_CH_LAYOUT_4POINT0, | ||||||
|  |         AV_CH_LAYOUT_QUAD, | ||||||
|  |         AV_CH_LAYOUT_5POINT0, | ||||||
|  |         AV_CH_LAYOUT_5POINT0_BACK, | ||||||
|  |         AV_CH_LAYOUT_5POINT1, | ||||||
|  |         AV_CH_LAYOUT_5POINT1_BACK, | ||||||
|  |         AV_CH_LAYOUT_5POINT1|AV_CH_LAYOUT_STEREO_DOWNMIX, | ||||||
|  |         AV_CH_LAYOUT_7POINT1, | ||||||
|  |         AV_CH_LAYOUT_7POINT1_WIDE, | ||||||
|  |         AV_CH_LAYOUT_7POINT1|AV_CH_LAYOUT_STEREO_DOWNMIX, | ||||||
|  |         -1, | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     return avfilter_make_format64_list(chlayouts); | ||||||
|  | } | ||||||
|  |  | ||||||
| void avfilter_formats_ref(AVFilterFormats *f, AVFilterFormats **ref) | void avfilter_formats_ref(AVFilterFormats *f, AVFilterFormats **ref) | ||||||
| { | { | ||||||
|     *ref = f; |     *ref = f; | ||||||
|   | |||||||
| @@ -44,7 +44,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -104,7 +104,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -70,7 +70,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -334,7 +334,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -78,7 +78,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -88,7 +88,7 @@ static AVFilterFormats *make_format_list(FormatContext *format, int flag) | |||||||
| #if CONFIG_FORMAT_FILTER | #if CONFIG_FORMAT_FILTER | ||||||
| static int query_formats_format(AVFilterContext *ctx) | static int query_formats_format(AVFilterContext *ctx) | ||||||
| { | { | ||||||
|     avfilter_set_common_formats(ctx, make_format_list(ctx->priv, 1)); |     avfilter_set_common_pixel_formats(ctx, make_format_list(ctx->priv, 1)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -118,7 +118,7 @@ AVFilter avfilter_vf_format = { | |||||||
| #if CONFIG_NOFORMAT_FILTER | #if CONFIG_NOFORMAT_FILTER | ||||||
| static int query_formats_noformat(AVFilterContext *ctx) | static int query_formats_noformat(AVFilterContext *ctx) | ||||||
| { | { | ||||||
|     avfilter_set_common_formats(ctx, make_format_list(ctx->priv, 0)); |     avfilter_set_common_pixel_formats(ctx, make_format_list(ctx->priv, 0)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -332,7 +332,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|     if (!formats) |     if (!formats) | ||||||
|         return AVERROR(ENOMEM); |         return AVERROR(ENOMEM); | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, formats); |     avfilter_set_common_pixel_formats(ctx, formats); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -160,7 +160,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -62,7 +62,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -268,7 +268,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_YUV411P, PIX_FMT_NONE |         PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_YUV411P, PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -61,7 +61,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_BGR24, PIX_FMT_BGRA, PIX_FMT_GRAY8, PIX_FMT_NONE |         PIX_FMT_BGR24, PIX_FMT_BGRA, PIX_FMT_GRAY8, PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -161,7 +161,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|     enum PixelFormat *pix_fmts = lut->is_rgb ? rgb_pix_fmts : |     enum PixelFormat *pix_fmts = lut->is_rgb ? rgb_pix_fmts : | ||||||
|                                  lut->is_yuv ? yuv_pix_fmts : all_pix_fmts; |                                  lut->is_yuv ? yuv_pix_fmts : all_pix_fmts; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -796,7 +796,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     //We assume all allowed input formats are also allowed output formats |     //We assume all allowed input formats are also allowed output formats | ||||||
|     avfilter_set_common_formats(ctx, avfmts); |     avfilter_set_common_pixel_formats(ctx, avfmts); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -83,7 +83,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -83,7 +83,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -155,7 +155,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_YUVJ444P, PIX_FMT_YUVJ440P, PIX_FMT_NONE |         PIX_FMT_YUVJ444P, PIX_FMT_YUVJ440P, PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -332,7 +332,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
| { | { | ||||||
|     BufferSinkContext *buf = ctx->priv; |     BufferSinkContext *buf = ctx->priv; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(buf->pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(buf->pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -166,7 +166,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|     BufferSourceContext *c = ctx->priv; |     BufferSourceContext *c = ctx->priv; | ||||||
|     enum PixelFormat pix_fmts[] = { c->pix_fmt, PIX_FMT_NONE }; |     enum PixelFormat pix_fmts[] = { c->pix_fmt, PIX_FMT_NONE }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -99,7 +99,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|         PIX_FMT_NONE |         PIX_FMT_NONE | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -203,7 +203,7 @@ static int query_formats(AVFilterContext *ctx) | |||||||
|     MovieContext *movie = ctx->priv; |     MovieContext *movie = ctx->priv; | ||||||
|     enum PixelFormat pix_fmts[] = { movie->codec_ctx->pix_fmt, PIX_FMT_NONE }; |     enum PixelFormat pix_fmts[] = { movie->codec_ctx->pix_fmt, PIX_FMT_NONE }; | ||||||
|  |  | ||||||
|     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |     avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts)); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user