mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
kill AVImageFormat
Originally committed as revision 6875 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
93481fe5fe
commit
f932cdf209
34
ffmpeg.c
34
ffmpeg.c
@ -91,7 +91,6 @@ static int nb_meta_data_maps;
|
||||
|
||||
static AVInputFormat *file_iformat;
|
||||
static AVOutputFormat *file_oformat;
|
||||
static AVImageFormat *image_format;
|
||||
static int frame_width = 0;
|
||||
static int frame_height = 0;
|
||||
static float frame_aspect_ratio = 0;
|
||||
@ -2055,21 +2054,6 @@ int file_read(const char *filename)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void opt_image_format(const char *arg)
|
||||
{
|
||||
AVImageFormat *f;
|
||||
|
||||
for(f = first_image_format; f != NULL; f = f->next) {
|
||||
if (!strcmp(arg, f->name))
|
||||
break;
|
||||
}
|
||||
if (!f) {
|
||||
fprintf(stderr, "Unknown image format: '%s'\n", arg);
|
||||
exit(1);
|
||||
}
|
||||
image_format = f;
|
||||
}
|
||||
|
||||
static void opt_format(const char *arg)
|
||||
{
|
||||
/* compatibility stuff for pgmyuv */
|
||||
@ -2589,7 +2573,6 @@ static void opt_input_file(const char *filename)
|
||||
ap->time_base.num = frame_rate_base;
|
||||
ap->width = frame_width + frame_padleft + frame_padright;
|
||||
ap->height = frame_height + frame_padtop + frame_padbottom;
|
||||
ap->image_format = image_format;
|
||||
ap->pix_fmt = frame_pix_fmt;
|
||||
ap->device = grab_device;
|
||||
ap->channel = video_channel;
|
||||
@ -2716,7 +2699,6 @@ static void opt_input_file(const char *filename)
|
||||
nb_input_files++;
|
||||
file_iformat = NULL;
|
||||
file_oformat = NULL;
|
||||
image_format = NULL;
|
||||
|
||||
grab_device = NULL;
|
||||
video_channel = 0;
|
||||
@ -3185,7 +3167,6 @@ static void opt_output_file(const char *filename)
|
||||
}
|
||||
|
||||
memset(ap, 0, sizeof(*ap));
|
||||
ap->image_format = image_format;
|
||||
if (av_set_parameters(oc, ap) < 0) {
|
||||
fprintf(stderr, "%s: Invalid encoding parameters\n",
|
||||
oc->filename);
|
||||
@ -3206,7 +3187,6 @@ static void opt_output_file(const char *filename)
|
||||
/* reset some options */
|
||||
file_oformat = NULL;
|
||||
file_iformat = NULL;
|
||||
image_format = NULL;
|
||||
}
|
||||
|
||||
/* prepare dummy protocols for grab */
|
||||
@ -3341,7 +3321,6 @@ static void show_formats(void)
|
||||
{
|
||||
AVInputFormat *ifmt;
|
||||
AVOutputFormat *ofmt;
|
||||
AVImageFormat *image_fmt;
|
||||
URLProtocol *up;
|
||||
AVCodec *p, *p2;
|
||||
const char **pp, *last_name;
|
||||
@ -3385,18 +3364,6 @@ static void show_formats(void)
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
printf("Image formats (filename extensions, if any, follow):\n");
|
||||
for(image_fmt = first_image_format; image_fmt != NULL;
|
||||
image_fmt = image_fmt->next) {
|
||||
printf(
|
||||
" %s%s %-6s %s\n",
|
||||
image_fmt->img_read ? "D":" ",
|
||||
image_fmt->img_write ? "E":" ",
|
||||
image_fmt->name,
|
||||
image_fmt->extensions ? image_fmt->extensions:" ");
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
printf("Codecs:\n");
|
||||
last_name= "000";
|
||||
for(;;){
|
||||
@ -3729,7 +3696,6 @@ const OptionDef options[] = {
|
||||
{ "version", 0, {(void*)show_version}, "show version" },
|
||||
{ "formats", 0, {(void*)show_formats}, "show available formats, codecs, protocols, ..." },
|
||||
{ "f", HAS_ARG, {(void*)opt_format}, "force format", "fmt" },
|
||||
{ "img", HAS_ARG, {(void*)opt_image_format}, "force image format", "img_fmt" },
|
||||
{ "i", HAS_ARG, {(void*)opt_input_file}, "input file name", "filename" },
|
||||
{ "y", OPT_BOOL, {(void*)&file_overwrite}, "overwrite output files" },
|
||||
{ "map", HAS_ARG | OPT_EXPERT, {(void*)opt_map}, "set input stream mapping", "file:stream[:syncfile:syncstream]" },
|
||||
|
18
ffplay.c
18
ffplay.c
@ -185,7 +185,6 @@ static int audio_write_get_buf_size(VideoState *is);
|
||||
|
||||
/* options specified by the user */
|
||||
static AVInputFormat *file_iformat;
|
||||
static AVImageFormat *image_format;
|
||||
static const char *input_filename;
|
||||
static int fs_screen_width;
|
||||
static int fs_screen_height;
|
||||
@ -1797,7 +1796,6 @@ static int decode_thread(void *arg)
|
||||
url_set_interrupt_cb(decode_interrupt_cb);
|
||||
|
||||
memset(ap, 0, sizeof(*ap));
|
||||
ap->image_format = image_format;
|
||||
ap->initial_pause = 1; /* we force a pause when starting an RTSP
|
||||
stream */
|
||||
|
||||
@ -2294,21 +2292,6 @@ static void opt_format(const char *arg)
|
||||
}
|
||||
}
|
||||
|
||||
static void opt_image_format(const char *arg)
|
||||
{
|
||||
AVImageFormat *f;
|
||||
|
||||
for(f = first_image_format; f != NULL; f = f->next) {
|
||||
if (!strcmp(arg, f->name))
|
||||
break;
|
||||
}
|
||||
if (!f) {
|
||||
fprintf(stderr, "Unknown image format: '%s'\n", arg);
|
||||
exit(1);
|
||||
}
|
||||
image_format = f;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NETWORK
|
||||
void opt_rtp_tcp(void)
|
||||
{
|
||||
@ -2363,7 +2346,6 @@ const OptionDef options[] = {
|
||||
{ "ss", HAS_ARG, {(void*)&opt_seek}, "seek to a given position in seconds", "pos" },
|
||||
{ "nodisp", OPT_BOOL, {(void*)&display_disable}, "disable graphical display" },
|
||||
{ "f", HAS_ARG, {(void*)opt_format}, "force format", "fmt" },
|
||||
{ "img", HAS_ARG, {(void*)opt_image_format}, "force image format", "img_fmt" },
|
||||
{ "stats", OPT_BOOL | OPT_EXPERT, {(void*)&show_status}, "show status", "" },
|
||||
{ "debug", HAS_ARG | OPT_EXPERT, {(void*)opt_debug}, "print specific debug info", "" },
|
||||
{ "bug", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&workaround_bugs}, "workaround bugs", "" },
|
||||
|
@ -47,10 +47,6 @@ OBJS-$(CONFIG_IMAGE2_DEMUXER) += img2.o
|
||||
OBJS-$(CONFIG_IMAGE2PIPE_DEMUXER) += img2.o
|
||||
OBJS-$(CONFIG_IMAGE2_MUXER) += img2.o
|
||||
OBJS-$(CONFIG_IMAGE2PIPE_MUXER) += img2.o
|
||||
OBJS-$(CONFIG_IMAGE_DEMUXER) += img.o
|
||||
OBJS-$(CONFIG_IMAGEPIPE_DEMUXER) += img.o
|
||||
OBJS-$(CONFIG_IMAGE_MUXER) += img.o
|
||||
OBJS-$(CONFIG_IMAGEPIPE_MUXER) += img.o
|
||||
OBJS-$(CONFIG_IPMOVIE_DEMUXER) += ipmovie.o
|
||||
OBJS-$(CONFIG_MATROSKA_DEMUXER) += matroska.o riff.o
|
||||
OBJS-$(CONFIG_MM_DEMUXER) += mm.o
|
||||
@ -132,8 +128,6 @@ OBJS-$(CONFIG_WV_DEMUXER) += wv.o
|
||||
OBJS-$(CONFIG_YUV4MPEGPIPE_MUXER) += yuv4mpeg.o
|
||||
OBJS-$(CONFIG_YUV4MPEGPIPE_DEMUXER) += yuv4mpeg.o
|
||||
|
||||
# image formats
|
||||
OBJS+= pnm.o yuv.o png.o jpeg.o gifdec.o sgi.o
|
||||
OBJS+= framehook.o
|
||||
|
||||
ifeq ($(CONFIG_VIDEO4LINUX),yes)
|
||||
|
@ -167,18 +167,6 @@ void av_register_all(void)
|
||||
#ifdef CONFIG_IMAGE2PIPE_MUXER
|
||||
av_register_output_format(&image2pipe_muxer);
|
||||
#endif
|
||||
#ifdef CONFIG_IMAGE_DEMUXER
|
||||
av_register_input_format(&image_demuxer);
|
||||
#endif
|
||||
#ifdef CONFIG_IMAGEPIPE_DEMUXER
|
||||
av_register_input_format(&imagepipe_demuxer);
|
||||
#endif
|
||||
#ifdef CONFIG_IMAGE_MUXER
|
||||
av_register_output_format(&image_muxer);
|
||||
#endif
|
||||
#ifdef CONFIG_IMAGEPIPE_MUXER
|
||||
av_register_output_format(&imagepipe_muxer);
|
||||
#endif
|
||||
#ifdef CONFIG_IPMOVIE_DEMUXER
|
||||
av_register_input_format(&ipmovie_demuxer);
|
||||
#endif
|
||||
@ -483,23 +471,6 @@ void av_register_all(void)
|
||||
av_register_input_format(&tiertexseq_demuxer);
|
||||
#endif
|
||||
|
||||
/* image formats */
|
||||
#if 0
|
||||
av_register_image_format(&pnm_image_format);
|
||||
av_register_image_format(&pbm_image_format);
|
||||
av_register_image_format(&pgm_image_format);
|
||||
av_register_image_format(&ppm_image_format);
|
||||
av_register_image_format(&pam_image_format);
|
||||
av_register_image_format(&pgmyuv_image_format);
|
||||
av_register_image_format(&yuv_image_format);
|
||||
#ifdef CONFIG_ZLIB
|
||||
av_register_image_format(&png_image_format);
|
||||
#endif
|
||||
av_register_image_format(&jpeg_image_format);
|
||||
#endif
|
||||
av_register_image_format(&gif_image_format);
|
||||
// av_register_image_format(&sgi_image_format); heap corruption, dont enable
|
||||
|
||||
#ifdef CONFIG_PROTOCOLS
|
||||
/* file protocols */
|
||||
register_protocol(&file_protocol);
|
||||
|
@ -173,21 +173,4 @@ int redir_open(AVFormatContext **ic_ptr, ByteIOContext *f);
|
||||
/* rtp.c */
|
||||
void av_register_rtp_dynamic_payload_handlers();
|
||||
|
||||
|
||||
#if 0
|
||||
extern AVImageFormat pnm_image_format;
|
||||
extern AVImageFormat pbm_image_format;
|
||||
extern AVImageFormat pgm_image_format;
|
||||
extern AVImageFormat ppm_image_format;
|
||||
extern AVImageFormat pam_image_format;
|
||||
extern AVImageFormat pgmyuv_image_format;
|
||||
extern AVImageFormat yuv_image_format;
|
||||
#ifdef CONFIG_ZLIB
|
||||
extern AVImageFormat png_image_format;
|
||||
#endif
|
||||
extern AVImageFormat jpeg_image_format;
|
||||
#endif
|
||||
extern AVImageFormat gif_image_format;
|
||||
//extern AVImageFormat sgi_image_format; //broken in itself
|
||||
|
||||
#endif
|
||||
|
@ -25,8 +25,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define LIBAVFORMAT_VERSION_INT ((50<<16)+(6<<8)+0)
|
||||
#define LIBAVFORMAT_VERSION 50.6.0
|
||||
#define LIBAVFORMAT_VERSION_INT ((51<<16)+(6<<8)+0)
|
||||
#define LIBAVFORMAT_VERSION 51.6.0
|
||||
#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT
|
||||
|
||||
#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION)
|
||||
@ -122,7 +122,6 @@ typedef struct AVFormatParameters {
|
||||
int width;
|
||||
int height;
|
||||
enum PixelFormat pix_fmt;
|
||||
struct AVImageFormat *image_format;
|
||||
int channel; /* used to select dv channel */
|
||||
const char *device; /* video, audio or DV device */
|
||||
const char *standard; /* tv standard, NTSC, PAL, SECAM */
|
||||
@ -377,49 +376,7 @@ typedef struct AVPacketList {
|
||||
extern AVInputFormat *first_iformat;
|
||||
extern AVOutputFormat *first_oformat;
|
||||
|
||||
/* still image support */
|
||||
struct AVInputImageContext attribute_deprecated;
|
||||
typedef struct AVInputImageContext AVInputImageContext attribute_deprecated;
|
||||
|
||||
typedef struct AVImageInfo {
|
||||
enum PixelFormat pix_fmt; /* requested pixel format */
|
||||
int width; /* requested width */
|
||||
int height; /* requested height */
|
||||
int interleaved; /* image is interleaved (e.g. interleaved GIF) */
|
||||
AVPicture pict; /* returned allocated image */
|
||||
} AVImageInfo attribute_deprecated;
|
||||
|
||||
/* AVImageFormat.flags field constants */
|
||||
#define AVIMAGE_INTERLEAVED 0x0001 /* image format support interleaved output */
|
||||
|
||||
typedef struct AVImageFormat {
|
||||
const char *name;
|
||||
const char *extensions;
|
||||
/* tell if a given file has a chance of being parsing by this format */
|
||||
int (*img_probe)(AVProbeData *);
|
||||
/* read a whole image. 'alloc_cb' is called when the image size is
|
||||
known so that the caller can allocate the image. If 'allo_cb'
|
||||
returns non zero, then the parsing is aborted. Return '0' if
|
||||
OK. */
|
||||
int (*img_read)(ByteIOContext *,
|
||||
int (*alloc_cb)(void *, AVImageInfo *info), void *);
|
||||
/* write the image */
|
||||
int supported_pixel_formats; /* mask of supported formats for output */
|
||||
int (*img_write)(ByteIOContext *, AVImageInfo *);
|
||||
int flags;
|
||||
struct AVImageFormat *next;
|
||||
} AVImageFormat attribute_deprecated;
|
||||
|
||||
void av_register_image_format(AVImageFormat *img_fmt) attribute_deprecated;
|
||||
AVImageFormat *av_probe_image_format(AVProbeData *pd) attribute_deprecated;
|
||||
AVImageFormat *guess_image_format(const char *filename) attribute_deprecated;
|
||||
enum CodecID av_guess_image2_codec(const char *filename);
|
||||
int av_read_image(ByteIOContext *pb, const char *filename,
|
||||
AVImageFormat *fmt,
|
||||
int (*alloc_cb)(void *, AVImageInfo *info), void *opaque) attribute_deprecated;
|
||||
int av_write_image(ByteIOContext *pb, AVImageFormat *fmt, AVImageInfo *img) attribute_deprecated;
|
||||
|
||||
extern AVImageFormat *first_image_format attribute_deprecated;
|
||||
|
||||
/* XXX: use automatic init with either ELF sections or C file parser */
|
||||
/* modules */
|
||||
|
@ -405,19 +405,6 @@ static int gif_write_trailer(AVFormatContext *s)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* better than nothing gif image writer */
|
||||
int gif_write(ByteIOContext *pb, AVImageInfo *info)
|
||||
{
|
||||
gif_image_write_header(pb, info->width, info->height, AVFMT_NOOUTPUTLOOP,
|
||||
(uint32_t *)info->pict.data[1]);
|
||||
gif_image_write_image(pb, 0, 0, info->width, info->height,
|
||||
info->pict.data[0], info->pict.linesize[0],
|
||||
PIX_FMT_PAL8);
|
||||
put_byte(pb, 0x3b);
|
||||
put_flush_packet(pb);
|
||||
return 0;
|
||||
}
|
||||
|
||||
AVOutputFormat gif_muxer = {
|
||||
"gif",
|
||||
"GIF Animation",
|
||||
|
@ -20,8 +20,6 @@
|
||||
*/
|
||||
#include "avformat.h"
|
||||
|
||||
int gif_write(ByteIOContext *pb, AVImageInfo *info);
|
||||
|
||||
//#define DEBUG
|
||||
|
||||
#define MAXBITS 12
|
||||
@ -144,17 +142,6 @@ static int gif_video_probe(AVProbeData * pd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int gif_image_probe(AVProbeData * pd)
|
||||
{
|
||||
if (pd->buf_size >= 24 &&
|
||||
(memcmp(pd->buf, gif87a_sig, 6) == 0 ||
|
||||
memcmp(pd->buf, gif89a_sig, 6) == 0))
|
||||
return AVPROBE_SCORE_MAX - 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void GLZWDecodeInit(GifState * s, int csize)
|
||||
{
|
||||
/* read buffer */
|
||||
@ -594,33 +581,6 @@ static int gif_read_close(AVFormatContext *s1)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* read gif as image */
|
||||
static int gif_read(ByteIOContext *f,
|
||||
int (*alloc_cb)(void *opaque, AVImageInfo *info), void *opaque)
|
||||
{
|
||||
GifState s1, *s = &s1;
|
||||
AVImageInfo info1, *info = &info1;
|
||||
int ret;
|
||||
|
||||
memset(s, 0, sizeof(GifState));
|
||||
s->f = f;
|
||||
if (gif_read_header1(s) < 0)
|
||||
return -1;
|
||||
info->width = s->screen_width;
|
||||
info->height = s->screen_height;
|
||||
info->pix_fmt = PIX_FMT_PAL8;
|
||||
ret = alloc_cb(opaque, info);
|
||||
if (ret)
|
||||
return ret;
|
||||
s->image_buf = info->pict.data[0];
|
||||
s->image_linesize = info->pict.linesize[0];
|
||||
s->image_palette = (uint32_t *)info->pict.data[1];
|
||||
|
||||
if (gif_parse_next_image(s) < 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
AVInputFormat gif_demuxer =
|
||||
{
|
||||
"gif",
|
||||
@ -631,14 +591,3 @@ AVInputFormat gif_demuxer =
|
||||
gif_read_packet,
|
||||
gif_read_close,
|
||||
};
|
||||
|
||||
AVImageFormat gif_image_format = {
|
||||
"gif",
|
||||
"gif",
|
||||
gif_image_probe,
|
||||
gif_read,
|
||||
(1 << PIX_FMT_PAL8),
|
||||
#ifdef CONFIG_GIF_MUXER
|
||||
gif_write,
|
||||
#endif
|
||||
};
|
||||
|
@ -38,8 +38,6 @@ static void av_frac_set(AVFrac *f, int64_t val);
|
||||
AVInputFormat *first_iformat = NULL;
|
||||
/** head of registered output format linked list. */
|
||||
AVOutputFormat *first_oformat = NULL;
|
||||
/** head of registered image format linked list. */
|
||||
AVImageFormat *first_image_format = NULL;
|
||||
|
||||
void av_register_input_format(AVInputFormat *format)
|
||||
{
|
||||
@ -100,12 +98,6 @@ AVOutputFormat *guess_format(const char *short_name, const char *filename,
|
||||
return guess_format("image2", NULL, NULL);
|
||||
}
|
||||
#endif
|
||||
if (!short_name && filename &&
|
||||
av_filename_number_test(filename) &&
|
||||
guess_image_format(filename)) {
|
||||
return guess_format("image", NULL, NULL);
|
||||
}
|
||||
|
||||
/* find the proper file type */
|
||||
fmt_found = NULL;
|
||||
score_max = 0;
|
||||
@ -3092,93 +3084,3 @@ static void av_frac_add(AVFrac *f, int64_t incr)
|
||||
}
|
||||
f->num = num;
|
||||
}
|
||||
|
||||
/**
|
||||
* register a new image format
|
||||
* @param img_fmt Image format descriptor
|
||||
*/
|
||||
void av_register_image_format(AVImageFormat *img_fmt)
|
||||
{
|
||||
AVImageFormat **p;
|
||||
|
||||
p = &first_image_format;
|
||||
while (*p != NULL) p = &(*p)->next;
|
||||
*p = img_fmt;
|
||||
img_fmt->next = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Guesses image format based on data in the image.
|
||||
*/
|
||||
AVImageFormat *av_probe_image_format(AVProbeData *pd)
|
||||
{
|
||||
AVImageFormat *fmt1, *fmt;
|
||||
int score, score_max;
|
||||
|
||||
fmt = NULL;
|
||||
score_max = 0;
|
||||
for(fmt1 = first_image_format; fmt1 != NULL; fmt1 = fmt1->next) {
|
||||
if (fmt1->img_probe) {
|
||||
score = fmt1->img_probe(pd);
|
||||
if (score > score_max) {
|
||||
score_max = score;
|
||||
fmt = fmt1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return fmt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Guesses image format based on file name extensions.
|
||||
*/
|
||||
AVImageFormat *guess_image_format(const char *filename)
|
||||
{
|
||||
AVImageFormat *fmt1;
|
||||
|
||||
for(fmt1 = first_image_format; fmt1 != NULL; fmt1 = fmt1->next) {
|
||||
if (fmt1->extensions && match_ext(filename, fmt1->extensions))
|
||||
return fmt1;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read an image from a stream.
|
||||
* @param gb byte stream containing the image
|
||||
* @param fmt image format, NULL if probing is required
|
||||
*/
|
||||
int av_read_image(ByteIOContext *pb, const char *filename,
|
||||
AVImageFormat *fmt,
|
||||
int (*alloc_cb)(void *, AVImageInfo *info), void *opaque)
|
||||
{
|
||||
uint8_t buf[PROBE_BUF_MIN];
|
||||
AVProbeData probe_data, *pd = &probe_data;
|
||||
offset_t pos;
|
||||
int ret;
|
||||
|
||||
if (!fmt) {
|
||||
pd->filename = filename;
|
||||
pd->buf = buf;
|
||||
pos = url_ftell(pb);
|
||||
pd->buf_size = get_buffer(pb, buf, PROBE_BUF_MIN);
|
||||
url_fseek(pb, pos, SEEK_SET);
|
||||
fmt = av_probe_image_format(pd);
|
||||
}
|
||||
if (!fmt)
|
||||
return AVERROR_NOFMT;
|
||||
ret = fmt->img_read(pb, alloc_cb, opaque);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an image to a stream.
|
||||
* @param pb byte stream for the image output
|
||||
* @param fmt image format
|
||||
* @param img image data and informations
|
||||
*/
|
||||
int av_write_image(ByteIOContext *pb, AVImageFormat *fmt, AVImageInfo *img)
|
||||
{
|
||||
return fmt->img_write(pb, img);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user