History

Merge commit '38f0c0781a6e099f11c0acec07f9b8be742190c4'

* commit '38f0c0781a6e099f11c0acec07f9b8be742190c4': lavfi: merge avfiltergraph.h into avfilter.h Conflicts: doc/APIchanges ffmpeg_filter.c libavfilter/avfilter.h libavfilter/avfiltergraph.h libavfilter/version.h tools/graph2dot.c

Michael Niedermayer committed 13 years ago

Commit 231fd442 parents 9110f95 38f0c0713 files · +259 −263Browse files

Showing the changes to libavfilter/avfilter.h (1 of 13 files). Show all

Unified · Split

libavfilter/avfilter.h+251−0
@@ -912,6 +912,257 @@ int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src); · 911 unmodified lines
912 */912 */
913const AVClass *avfilter_get_class(void);913const AVClass *avfilter_get_class(void);
914 914
915typedef struct AVFilterGraph {
916 const AVClass *av_class;
917#if FF_API_FOO_COUNT
918 attribute_deprecated
919 unsigned filter_count_unused;
920#endif
921 AVFilterContext **filters;
922#if !FF_API_FOO_COUNT
923 unsigned nb_filters;
924#endif
925
926 char *scale_sws_opts; ///< sws options to use for the auto-inserted scale filters
927 char *resample_lavr_opts; ///< libavresample options to use for the auto-inserted resample filters
928#if FF_API_FOO_COUNT
929 unsigned nb_filters;
930#endif
931 char *aresample_swr_opts; ///< swr options to use for the auto-inserted aresample filters, Access ONLY through AVOptions
932
933 /**
934 * Private fields
935 *
936 * The following fields are for internal use only.
937 * Their type, offset, number and semantic can change without notice.
938 */
939
940 AVFilterLink **sink_links;
941 int sink_links_count;
942
943 unsigned disable_auto_convert;
944} AVFilterGraph;
945
946/**
947 * Allocate a filter graph.
948 */
949AVFilterGraph *avfilter_graph_alloc(void);
950
951/**
952 * Get a filter instance with name name from graph.
953 *
954 * @return the pointer to the found filter instance or NULL if it
955 * cannot be found.
956 */
957AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, char *name);
958
959/**
960 * Add an existing filter instance to a filter graph.
961 *
962 * @param graphctx the filter graph
963 * @param filter the filter to be added
964 */
965int avfilter_graph_add_filter(AVFilterGraph *graphctx, AVFilterContext *filter);
966
967/**
968 * Create and add a filter instance into an existing graph.
969 * The filter instance is created from the filter filt and inited
970 * with the parameters args and opaque.
971 *
972 * In case of success put in *filt_ctx the pointer to the created
973 * filter instance, otherwise set *filt_ctx to NULL.
974 *
975 * @param name the instance name to give to the created filter instance
976 * @param graph_ctx the filter graph
977 * @return a negative AVERROR error code in case of failure, a non
978 * negative value otherwise
979 */
980int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt,
981 const char *name, const char *args, void *opaque,
982 AVFilterGraph *graph_ctx);
983
984/**
985 * Enable or disable automatic format conversion inside the graph.
986 *
987 * Note that format conversion can still happen inside explicitly inserted
988 * scale and aresample filters.
989 *
990 * @param flags any of the AVFILTER_AUTO_CONVERT_* constants
991 */
992void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags);
993
994enum {
995 AVFILTER_AUTO_CONVERT_ALL = 0, /**< all automatic conversions enabled */
996 AVFILTER_AUTO_CONVERT_NONE = -1, /**< all automatic conversions disabled */
997};
998
999/**
1000 * Check validity and configure all the links and formats in the graph.
1001 *
1002 * @param graphctx the filter graph
1003 * @param log_ctx context used for logging
1004 * @return 0 in case of success, a negative AVERROR code otherwise
1005 */
1006int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx);
1007
1008/**
1009 * Free a graph, destroy its links, and set *graph to NULL.
1010 * If *graph is NULL, do nothing.
1011 */
1012void avfilter_graph_free(AVFilterGraph **graph);
1013
1014/**
1015 * A linked-list of the inputs/outputs of the filter chain.
1016 *
1017 * This is mainly useful for avfilter_graph_parse() / avfilter_graph_parse2(),
1018 * where it is used to communicate open (unlinked) inputs and outputs from and
1019 * to the caller.
1020 * This struct specifies, per each not connected pad contained in the graph, the
1021 * filter context and the pad index required for establishing a link.
1022 */
1023typedef struct AVFilterInOut {
1024 /** unique name for this input/output in the list */
1025 char *name;
1026
1027 /** filter context associated to this input/output */
1028 AVFilterContext *filter_ctx;
1029
1030 /** index of the filt_ctx pad to use for linking */
1031 int pad_idx;
1032
1033 /** next input/input in the list, NULL if this is the last */
1034 struct AVFilterInOut *next;
1035} AVFilterInOut;
1036
1037/**
1038 * Allocate a single AVFilterInOut entry.
1039 * Must be freed with avfilter_inout_free().
1040 * @return allocated AVFilterInOut on success, NULL on failure.
1041 */
1042AVFilterInOut *avfilter_inout_alloc(void);
1043
1044/**
1045 * Free the supplied list of AVFilterInOut and set *inout to NULL.
1046 * If *inout is NULL, do nothing.
1047 */
1048void avfilter_inout_free(AVFilterInOut **inout);
1049
1050/**
1051 * Add a graph described by a string to a graph.
1052 *
1053 * @param graph the filter graph where to link the parsed graph context
1054 * @param filters string to be parsed
1055 * @param inputs pointer to a linked list to the inputs of the graph, may be NULL.
1056 * If non-NULL, *inputs is updated to contain the list of open inputs
1057 * after the parsing, should be freed with avfilter_inout_free().
1058 * @param outputs pointer to a linked list to the outputs of the graph, may be NULL.
1059 * If non-NULL, *outputs is updated to contain the list of open outputs
1060 * after the parsing, should be freed with avfilter_inout_free().
1061 * @return non negative on success, a negative AVERROR code on error
1062 */
1063int avfilter_graph_parse(AVFilterGraph *graph, const char *filters,
1064 AVFilterInOut **inputs, AVFilterInOut **outputs,
1065 void *log_ctx);
1066
1067/**
1068 * Add a graph described by a string to a graph.
1069 *
1070 * @param[in] graph the filter graph where to link the parsed graph context
1071 * @param[in] filters string to be parsed
1072 * @param[out] inputs a linked list of all free (unlinked) inputs of the
1073 * parsed graph will be returned here. It is to be freed
1074 * by the caller using avfilter_inout_free().
1075 * @param[out] outputs a linked list of all free (unlinked) outputs of the
1076 * parsed graph will be returned here. It is to be freed by the
1077 * caller using avfilter_inout_free().
1078 * @return zero on success, a negative AVERROR code on error
1079 *
1080 * @note the difference between avfilter_graph_parse2() and
1081 * avfilter_graph_parse() is that in avfilter_graph_parse(), the caller provides
1082 * the lists of inputs and outputs, which therefore must be known before calling
1083 * the function. On the other hand, avfilter_graph_parse2() \em returns the
1084 * inputs and outputs that are left unlinked after parsing the graph and the
1085 * caller then deals with them. Another difference is that in
1086 * avfilter_graph_parse(), the inputs parameter describes inputs of the
1087 * <em>already existing</em> part of the graph; i.e. from the point of view of
1088 * the newly created part, they are outputs. Similarly the outputs parameter
1089 * describes outputs of the already existing filters, which are provided as
1090 * inputs to the parsed filters.
1091 * avfilter_graph_parse2() takes the opposite approach -- it makes no reference
1092 * whatsoever to already existing parts of the graph and the inputs parameter
1093 * will on return contain inputs of the newly parsed part of the graph.
1094 * Analogously the outputs parameter will contain outputs of the newly created
1095 * filters.
1096 */
1097int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters,
1098 AVFilterInOut **inputs,
1099 AVFilterInOut **outputs);
1100
1101/**
1102 * Send a command to one or more filter instances.
1103 *
1104 * @param graph the filter graph
1105 * @param target the filter(s) to which the command should be sent
1106 * "all" sends to all filters
1107 * otherwise it can be a filter or filter instance name
1108 * which will send the command to all matching filters.
1109 * @param cmd the command to sent, for handling simplicity all commands must be alphanumeric only
1110 * @param arg the argument for the command
1111 * @param res a buffer with size res_size where the filter(s) can return a response.
1112 *
1113 * @returns >=0 on success otherwise an error code.
1114 * AVERROR(ENOSYS) on unsupported commands
1115 */
1116int avfilter_graph_send_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags);
1117
1118/**
1119 * Queue a command for one or more filter instances.
1120 *
1121 * @param graph the filter graph
1122 * @param target the filter(s) to which the command should be sent
1123 * "all" sends to all filters
1124 * otherwise it can be a filter or filter instance name
1125 * which will send the command to all matching filters.
1126 * @param cmd the command to sent, for handling simplicity all commands must be alphanummeric only
1127 * @param arg the argument for the command
1128 * @param ts time at which the command should be sent to the filter
1129 *
1130 * @note As this executes commands after this function returns, no return code
1131 * from the filter is provided, also AVFILTER_CMD_FLAG_ONE is not supported.
1132 */
1133int avfilter_graph_queue_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts);
1134
1135
1136/**
1137 * Dump a graph into a human-readable string representation.
1138 *
1139 * @param graph the graph to dump
1140 * @param options formatting options; currently ignored
1141 * @return a string, or NULL in case of memory allocation failure;
1142 * the string must be freed using av_free
1143 */
1144char *avfilter_graph_dump(AVFilterGraph *graph, const char *options);
1145
1146/**
1147 * Request a frame on the oldest sink link.
1148 *
1149 * If the request returns AVERROR_EOF, try the next.
1150 *
1151 * Note that this function is not meant to be the sole scheduling mechanism
1152 * of a filtergraph, only a convenience function to help drain a filtergraph
1153 * in a balanced way under normal circumstances.
1154 *
1155 * Also note that AVERROR_EOF does not mean that frames did not arrive on
1156 * some of the sinks during the process.
1157 * When there are multiple sink links, in case the requested link
1158 * returns an EOF, this may cause a filter to flush pending frames
1159 * which are sent to another sink link, although unrequested.
1160 *
1161 * @return the return value of ff_request_frame(),
1162 * or AVERROR_EOF if all links returned AVERROR_EOF
1163 */
1164int avfilter_graph_request_oldest(AVFilterGraph *graph);
1165
915/**1166/**
916 * @}1167 * @}
917 */1168 */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t