diff options
author | Michael Niedermayer | 2014-03-28 21:03:14 +0100 |
---|---|---|
committer | Michael Niedermayer | 2014-03-28 23:54:51 +0100 |
commit | 067a9cf81a7805d7ed026948298fa897c65fba89 (patch) | |
tree | 65142331e0b98688c48c04ded12c0bb982c04d5c /libavformat/img2dec.c | |
parent | de96e20be959f4df9b8539da0dcc41db5167790e (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.c | 44 |
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 |