[FFmpeg-cvslog] avformat: implement query_codec for the image2 muxer.
tab
git at videolan.org
Mon Sep 7 04:31:56 CEST 2015
ffmpeg | branch: master | tab <tab at 0x09.net> | Sun Sep 6 11:07:20 2015 -0400| [fb135139fd3992eb1f0eacc9cfd878e05b95ec46] | committer: Michael Niedermayer
avformat: implement query_codec for the image2 muxer.
Allows avformat_query_codec to be used to check for valid image2 encoders.
Reuses the existing ff_guess_image2_codec ID table.
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fb135139fd3992eb1f0eacc9cfd878e05b95ec46
---
libavformat/img2.c | 10 +++-------
libavformat/img2.h | 7 +++++++
libavformat/img2enc.c | 14 ++++++++++++++
3 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/libavformat/img2.c b/libavformat/img2.c
index 184600f..50352b5 100644
--- a/libavformat/img2.c
+++ b/libavformat/img2.c
@@ -22,13 +22,9 @@
#include "libavutil/avstring.h"
#include "internal.h"
+#include "img2.h"
-typedef struct IdStrMap {
- enum AVCodecID id;
- const char *str;
-} IdStrMap;
-
-static const IdStrMap img_tags[] = {
+const IdStrMap ff_img_tags[] = {
{ AV_CODEC_ID_MJPEG, "jpeg" },
{ AV_CODEC_ID_MJPEG, "jpg" },
{ AV_CODEC_ID_MJPEG, "jps" },
@@ -103,5 +99,5 @@ static enum AVCodecID av_str2id(const IdStrMap *tags, const char *str)
enum AVCodecID ff_guess_image2_codec(const char *filename)
{
- return av_str2id(img_tags, filename);
+ return av_str2id(ff_img_tags, filename);
}
diff --git a/libavformat/img2.h b/libavformat/img2.h
index f6b9dd9..deebcc3 100644
--- a/libavformat/img2.h
+++ b/libavformat/img2.h
@@ -62,6 +62,13 @@ typedef struct VideoDemuxData {
int ts_from_file;
} VideoDemuxData;
+typedef struct IdStrMap {
+ enum AVCodecID id;
+ const char *str;
+} IdStrMap;
+
+extern const IdStrMap ff_img_tags[];
+
extern const AVOption ff_img_options[];
int ff_img_read_header(AVFormatContext *s1);
diff --git a/libavformat/img2enc.c b/libavformat/img2enc.c
index f56c39e..5dd4c77 100644
--- a/libavformat/img2enc.c
+++ b/libavformat/img2enc.c
@@ -30,6 +30,7 @@
#include "avformat.h"
#include "avio_internal.h"
#include "internal.h"
+#include "img2.h"
typedef struct VideoMuxData {
const AVClass *class; /**< Class for private options. */
@@ -172,6 +173,17 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
return 0;
}
+static int query_codec(enum AVCodecID id, int std_compliance)
+{
+ int i;
+ for (i = 0; ff_img_tags[i].id != AV_CODEC_ID_NONE; i++)
+ if (ff_img_tags[i].id == id)
+ return 1;
+
+ // Anything really can be stored in img2
+ return std_compliance < FF_COMPLIANCE_NORMAL;
+}
+
#define OFFSET(x) offsetof(VideoMuxData, x)
#define ENC AV_OPT_FLAG_ENCODING_PARAM
static const AVOption muxoptions[] = {
@@ -200,6 +212,7 @@ AVOutputFormat ff_image2_muxer = {
.video_codec = AV_CODEC_ID_MJPEG,
.write_header = write_header,
.write_packet = write_packet,
+ .query_codec = query_codec,
.flags = AVFMT_NOTIMESTAMPS | AVFMT_NODIMENSIONS | AVFMT_NOFILE,
.priv_class = &img2mux_class,
};
@@ -212,6 +225,7 @@ AVOutputFormat ff_image2pipe_muxer = {
.video_codec = AV_CODEC_ID_MJPEG,
.write_header = write_header,
.write_packet = write_packet,
+ .query_codec = query_codec,
.flags = AVFMT_NOTIMESTAMPS | AVFMT_NODIMENSIONS
};
#endif
More information about the ffmpeg-cvslog
mailing list