提交 f932cdf2 编写于 作者: B Baptiste Coudurier

kill AVImageFormat

Originally committed as revision 6875 to svn://svn.ffmpeg.org/ffmpeg/trunk
上级 93481fe5
......@@ -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]" },
......
......@@ -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);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册