mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Change avfilter_open() signature, from:
AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name); to: int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *inst_name); This way it is possible to propagate an error code telling the reason of the failure. Originally committed as revision 24765 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
ad0d70c964
commit
84c0386960
8
ffmpeg.c
8
ffmpeg.c
@ -410,9 +410,9 @@ static int configure_filters(AVInputStream *ist, AVOutputStream *ost)
|
|||||||
|
|
||||||
graph = av_mallocz(sizeof(AVFilterGraph));
|
graph = av_mallocz(sizeof(AVFilterGraph));
|
||||||
|
|
||||||
if (!(ist->input_video_filter = avfilter_open(avfilter_get_by_name("buffer"), "src")))
|
if (avfilter_open(&ist->input_video_filter, avfilter_get_by_name("buffer"), "src") < 0)
|
||||||
return -1;
|
return -1;
|
||||||
if (!(ist->out_video_filter = avfilter_open(&output_filter, "out")))
|
if (avfilter_open(&ist->out_video_filter, &output_filter, "out") < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
snprintf(args, 255, "%d:%d:%d", ist->st->codec->width,
|
snprintf(args, 255, "%d:%d:%d", ist->st->codec->width,
|
||||||
@ -432,7 +432,7 @@ static int configure_filters(AVInputStream *ist, AVOutputStream *ost)
|
|||||||
snprintf(args, 255, "%d:%d:%d:%d", ost->leftBand, ost->topBand,
|
snprintf(args, 255, "%d:%d:%d:%d", ost->leftBand, ost->topBand,
|
||||||
codec->width,
|
codec->width,
|
||||||
codec->height);
|
codec->height);
|
||||||
filter = avfilter_open(avfilter_get_by_name("crop"), NULL);
|
avfilter_open(&filter, avfilter_get_by_name("crop"), NULL);
|
||||||
if (!filter)
|
if (!filter)
|
||||||
return -1;
|
return -1;
|
||||||
if (avfilter_init_filter(filter, args, NULL))
|
if (avfilter_init_filter(filter, args, NULL))
|
||||||
@ -450,7 +450,7 @@ static int configure_filters(AVInputStream *ist, AVOutputStream *ost)
|
|||||||
codec->width,
|
codec->width,
|
||||||
codec->height,
|
codec->height,
|
||||||
(int)av_get_int(sws_opts, "sws_flags", NULL));
|
(int)av_get_int(sws_opts, "sws_flags", NULL));
|
||||||
filter = avfilter_open(avfilter_get_by_name("scale"), NULL);
|
avfilter_open(&filter, avfilter_get_by_name("scale"), NULL);
|
||||||
if (!filter)
|
if (!filter)
|
||||||
return -1;
|
return -1;
|
||||||
if (avfilter_init_filter(filter, args, NULL))
|
if (avfilter_init_filter(filter, args, NULL))
|
||||||
|
4
ffplay.c
4
ffplay.c
@ -1790,8 +1790,8 @@ static int video_thread(void *arg)
|
|||||||
snprintf(sws_flags_str, sizeof(sws_flags_str), "flags=%d", sws_flags);
|
snprintf(sws_flags_str, sizeof(sws_flags_str), "flags=%d", sws_flags);
|
||||||
graph->scale_sws_opts = av_strdup(sws_flags_str);
|
graph->scale_sws_opts = av_strdup(sws_flags_str);
|
||||||
|
|
||||||
if(!(filt_src = avfilter_open(&input_filter, "src"))) goto the_end;
|
if (avfilter_open(&filt_src, &input_filter, "src") < 0) goto the_end;
|
||||||
if(!(filt_out = avfilter_open(&output_filter, "out"))) goto the_end;
|
if (avfilter_open(&filt_out, &output_filter, "out") < 0) goto the_end;
|
||||||
|
|
||||||
if(avfilter_init_filter(filt_src, NULL, is)) goto the_end;
|
if(avfilter_init_filter(filt_src, NULL, is)) goto the_end;
|
||||||
if(avfilter_init_filter(filt_out, NULL, frame)) goto the_end;
|
if(avfilter_init_filter(filt_out, NULL, frame)) goto the_end;
|
||||||
|
@ -394,12 +394,13 @@ static const AVClass avfilter_class = {
|
|||||||
LIBAVUTIL_VERSION_INT,
|
LIBAVUTIL_VERSION_INT,
|
||||||
};
|
};
|
||||||
|
|
||||||
AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name)
|
int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *inst_name)
|
||||||
{
|
{
|
||||||
AVFilterContext *ret;
|
AVFilterContext *ret;
|
||||||
|
*filter_ctx = NULL;
|
||||||
|
|
||||||
if (!filter)
|
if (!filter)
|
||||||
return 0;
|
return AVERROR(EINVAL);
|
||||||
|
|
||||||
ret = av_mallocz(sizeof(AVFilterContext));
|
ret = av_mallocz(sizeof(AVFilterContext));
|
||||||
|
|
||||||
@ -422,7 +423,8 @@ AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name)
|
|||||||
ret->outputs = av_mallocz(sizeof(AVFilterLink*) * ret->output_count);
|
ret->outputs = av_mallocz(sizeof(AVFilterLink*) * ret->output_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
*filter_ctx = ret;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void avfilter_destroy(AVFilterContext *filter)
|
void avfilter_destroy(AVFilterContext *filter)
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#include "libavutil/avutil.h"
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_MAJOR 1
|
#define LIBAVFILTER_VERSION_MAJOR 1
|
||||||
#define LIBAVFILTER_VERSION_MINOR 32
|
#define LIBAVFILTER_VERSION_MINOR 33
|
||||||
#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, \
|
||||||
@ -660,11 +660,14 @@ AVFilter **av_filter_next(AVFilter **filter);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a filter instance.
|
* Create a filter instance.
|
||||||
|
*
|
||||||
|
* @param filter_ctx put here a pointer to the created filter context
|
||||||
|
* on success, NULL on failure
|
||||||
* @param filter the filter to create an instance of
|
* @param filter the filter to create an instance of
|
||||||
* @param inst_name Name to give to the new instance. Can be NULL for none.
|
* @param inst_name Name to give to the new instance. Can be NULL for none.
|
||||||
* @return Pointer to the new instance on success. NULL on failure.
|
* @return >= 0 in case of success, a negative error code otherwise
|
||||||
*/
|
*/
|
||||||
AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name);
|
int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *inst_name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize a filter.
|
* Initialize a filter.
|
||||||
|
@ -133,8 +133,7 @@ static int query_formats(AVFilterGraph *graph, AVClass *log_ctx)
|
|||||||
/* couldn't merge format lists. auto-insert scale filter */
|
/* couldn't merge format lists. auto-insert scale filter */
|
||||||
snprintf(inst_name, sizeof(inst_name), "auto-inserted scaler %d",
|
snprintf(inst_name, sizeof(inst_name), "auto-inserted scaler %d",
|
||||||
scaler_count++);
|
scaler_count++);
|
||||||
scale =
|
avfilter_open(&scale, avfilter_get_by_name("scale"), inst_name);
|
||||||
avfilter_open(avfilter_get_by_name("scale"),inst_name);
|
|
||||||
|
|
||||||
snprintf(scale_args, sizeof(scale_args), "0:0:%s", graph->scale_sws_opts);
|
snprintf(scale_args, sizeof(scale_args), "0:0:%s", graph->scale_sws_opts);
|
||||||
if(!scale || scale->filter->init(scale, scale_args, NULL) ||
|
if(!scale || scale->filter->init(scale, scale_args, NULL) ||
|
||||||
|
@ -111,7 +111,7 @@ static AVFilterContext *create_filter(AVFilterGraph *ctx, int index,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
filt_ctx = avfilter_open(filt, inst_name);
|
avfilter_open(&filt_ctx, filt, inst_name);
|
||||||
if (!filt_ctx) {
|
if (!filt_ctx) {
|
||||||
av_log(log_ctx, AV_LOG_ERROR,
|
av_log(log_ctx, AV_LOG_ERROR,
|
||||||
"Error creating filter '%s'\n", filt_name);
|
"Error creating filter '%s'\n", filt_name);
|
||||||
|
@ -49,7 +49,7 @@ int main(int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(filter_ctx = avfilter_open(filter, NULL))) {
|
if (avfilter_open(&filter_ctx, filter, NULL) < 0) {
|
||||||
fprintf(stderr, "Inpossible to open filter with name '%s'\n", filter_name);
|
fprintf(stderr, "Inpossible to open filter with name '%s'\n", filter_name);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user