X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=cmdutils.h;h=02fcea44263531d924d3f95bd89cf783cc65ff21;hb=ecf026f1aa8ffe170b5b8c577cae56a405ebafc8;hp=4ce62b64a8e9aa50b2d5bc32b93d16a793b2b768;hpb=a5c33faaccec6787419fe373a9e7ae0932b15ee1;p=ffmpeg diff --git a/cmdutils.h b/cmdutils.h index 4ce62b64a8e..02fcea44263 100644 --- a/cmdutils.h +++ b/cmdutils.h @@ -2,28 +2,30 @@ * Various utilities for command line tools * copyright (c) 2003 Fabrice Bellard * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef FFMPEG_CMDUTILS_H -#define FFMPEG_CMDUTILS_H +#ifndef LIBAV_CMDUTILS_H +#define LIBAV_CMDUTILS_H + +#include -#include #include "libavcodec/avcodec.h" +#include "libavfilter/avfilter.h" #include "libavformat/avformat.h" #include "libswscale/swscale.h" @@ -37,12 +39,11 @@ extern const char program_name[]; */ extern const int program_birth_year; -extern const int this_year; - extern const char **opt_names; extern AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB]; extern AVFormatContext *avformat_opts; extern struct SwsContext *sws_opts; +extern AVDictionary *format_opts, *video_opts, *audio_opts, *sub_opts; /** * Initialize the cmdutils option system, in particular @@ -121,15 +122,14 @@ typedef struct { #define OPT_INT 0x0080 #define OPT_FLOAT 0x0100 #define OPT_SUBTITLE 0x0200 -#define OPT_FUNC2 0x0400 -#define OPT_INT64 0x0800 -#define OPT_EXIT 0x1000 +#define OPT_INT64 0x0400 +#define OPT_EXIT 0x0800 +#define OPT_DATA 0x1000 union { - void (*func_arg)(const char *); //FIXME passing error code as int return would be nicer then exit() in the func int *int_arg; char **str_arg; float *float_arg; - int (*func2_arg)(const char *, const char *); + int (*func_arg)(const char *, const char *); int64_t *int64_arg; } u; const char *help; @@ -162,8 +162,6 @@ void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec); */ void print_error(const char *filename, int err); -void list_fmts(void (*get_fmt_string)(char *buf, int buf_size, int fmt), int nb_fmts); - /** * Print the program banner to stderr. The banner contents depend on the * current version of the repository and of the libav* libraries used by @@ -261,4 +259,39 @@ void init_pts_correction(PtsCorrectionContext *ctx); */ int64_t guess_correct_pts(PtsCorrectionContext *ctx, int64_t pts, int64_t dts); -#endif /* FFMPEG_CMDUTILS_H */ +/** + * Get a file corresponding to a preset file. + * + * If is_path is non-zero, look for the file in the path preset_name. + * Otherwise search for a file named arg.ffpreset in the directories + * $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined + * at configuration time, in that order. If no such file is found and + * codec_name is defined, then search for a file named + * codec_name-preset_name.ffpreset in the above-mentioned directories. + * + * @param filename buffer where the name of the found filename is written + * @param filename_size size in bytes of the filename buffer + * @param preset_name name of the preset to search + * @param is_path tell if preset_name is a filename path + * @param codec_name name of the codec for which to look for the + * preset, may be NULL + */ +FILE *get_preset_file(char *filename, size_t filename_size, + const char *preset_name, int is_path, const char *codec_name); + +typedef struct { + enum PixelFormat pix_fmt; +} FFSinkContext; + +extern AVFilter ffsink; + +/** + * Extract a frame from sink. + * + * @return a negative error in case of failure, 1 if one frame has + * been extracted successfully. + */ +int get_filtered_video_frame(AVFilterContext *sink, AVFrame *frame, + AVFilterBufferRef **picref, AVRational *pts_tb); + +#endif /* LIBAV_CMDUTILS_H */