aboutsummaryrefslogtreecommitdiff
path: root/libavformat/img2dec.c
diff options
context:
space:
mode:
authorMichael Niedermayer2014-03-28 21:03:14 +0100
committerMichael Niedermayer2014-03-28 23:54:51 +0100
commit067a9cf81a7805d7ed026948298fa897c65fba89 (patch)
tree65142331e0b98688c48c04ded12c0bb982c04d5c /libavformat/img2dec.c
parentde96e20be959f4df9b8539da0dcc41db5167790e (diff)
avformat/img2dec: make image2dec capable to be used from seperate demuxers
Reviewed-by: wm4 <nfxjfg@googlemail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/img2dec.c')
-rw-r--r--libavformat/img2dec.c44
1 files changed, 11 insertions, 33 deletions
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index 5163e69f65..026fd5f14b 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
@@ -28,9 +28,9 @@
#include "libavutil/parseutils.h"
#include "avformat.h"
#include "internal.h"
-#if HAVE_GLOB
-#include <glob.h>
+#include "img2.h"
+#if HAVE_GLOB
/* Locally define as 0 (bitwise-OR no-op) any missing glob options that
are non-posix glibc/bsd extensions. */
#ifndef GLOB_NOMAGIC
@@ -42,31 +42,6 @@
#endif /* HAVE_GLOB */
-typedef struct {
- const AVClass *class; /**< Class for private options. */
- int img_first;
- int img_last;
- int img_number;
- int64_t pts;
- int img_count;
- int is_pipe;
- int split_planes; /**< use independent file for each Y, U, V plane */
- char path[1024];
- char *pixel_format; /**< Set by a private option. */
- int width, height; /**< Set by a private option. */
- AVRational framerate; /**< Set by a private option. */
- int loop;
- enum { PT_GLOB_SEQUENCE, PT_GLOB, PT_SEQUENCE } pattern_type;
- int use_glob;
-#if HAVE_GLOB
- glob_t globstate;
-#endif
- int start_number;
- int start_number_range;
- int frame_size;
- int ts_from_file;
-} VideoDemuxData;
-
static const int sizes[][2] = {
{ 640, 480 },
{ 720, 480 },
@@ -192,7 +167,7 @@ static int img_read_probe(AVProbeData *p)
return 0;
}
-static int img_read_header(AVFormatContext *s1)
+int ff_img_read_header(AVFormatContext *s1)
{
VideoDemuxData *s = s1->priv_data;
int first_index, last_index;
@@ -313,6 +288,9 @@ static int img_read_header(AVFormatContext *s1)
} else if (s1->audio_codec_id) {
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
st->codec->codec_id = s1->audio_codec_id;
+ } else if (s1->iformat->raw_codec_id) {
+ st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
+ st->codec->codec_id = s1->iformat->raw_codec_id;
} else {
const char *str = strrchr(s->path, '.');
s->split_planes = str && !av_strcasecmp(str + 1, "y");
@@ -328,7 +306,7 @@ static int img_read_header(AVFormatContext *s1)
return 0;
}
-static int img_read_packet(AVFormatContext *s1, AVPacket *pkt)
+int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt)
{
VideoDemuxData *s = s1->priv_data;
char filename_bytes[1024];
@@ -483,8 +461,8 @@ AVInputFormat ff_image2_demuxer = {
.long_name = NULL_IF_CONFIG_SMALL("image2 sequence"),
.priv_data_size = sizeof(VideoDemuxData),
.read_probe = img_read_probe,
- .read_header = img_read_header,
- .read_packet = img_read_packet,
+ .read_header = ff_img_read_header,
+ .read_packet = ff_img_read_packet,
.read_close = img_read_close,
.read_seek = img_read_seek,
.flags = AVFMT_NOFILE,
@@ -502,8 +480,8 @@ AVInputFormat ff_image2pipe_demuxer = {
.name = "image2pipe",
.long_name = NULL_IF_CONFIG_SMALL("piped image2 sequence"),
.priv_data_size = sizeof(VideoDemuxData),
- .read_header = img_read_header,
- .read_packet = img_read_packet,
+ .read_header = ff_img_read_header,
+ .read_packet = ff_img_read_packet,
.priv_class = &img2pipe_class,
};
#endif