aboutsummaryrefslogtreecommitdiffstats
path: root/tools/decode_simple.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-06-30 11:44:24 +0200
committerAnton Khirnov <anton@khirnov.net>2021-08-08 19:21:39 +0200
commit94170e041107a3831fdd39ebb53f4f50d06edea4 (patch)
treefc07ce9308bf2c9f3b91f778b63e42768d29abf4 /tools/decode_simple.h
parent7f660035feabe932f9adb8adeb8991b5a47e5009 (diff)
downloadffmpeg-94170e041107a3831fdd39ebb53f4f50d06edea4.tar.gz
tools/venc_data_dump: factor out demux/decode code
It can be shared with other simple demux/decode tools.
Diffstat (limited to 'tools/decode_simple.h')
-rw-r--r--tools/decode_simple.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/tools/decode_simple.h b/tools/decode_simple.h
new file mode 100644
index 0000000000..d480489a6c
--- /dev/null
+++ b/tools/decode_simple.h
@@ -0,0 +1,53 @@
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/* shared code for simple demux/decode tools */
+
+#ifndef DECODE_SIMPLE_H
+#define DECODE_SIMPLE_H
+
+#include "libavformat/avformat.h"
+
+#include "libavcodec/avcodec.h"
+#include "libavcodec/packet.h"
+
+#include "libavutil/dict.h"
+#include "libavutil/frame.h"
+
+
+typedef struct DecodeContext {
+ AVFormatContext *demuxer;
+ AVStream *stream;
+ AVCodecContext *decoder;
+
+ AVPacket *pkt;
+ AVFrame *frame;
+
+ int (*process_frame)(struct DecodeContext *dc, AVFrame *frame);
+ void *opaque;
+
+ AVDictionary *decoder_opts;
+ int max_frames;
+} DecodeContext;
+
+int ds_open(DecodeContext *dc, const char *url, int stream_idx);
+void ds_free(DecodeContext *dc);
+
+int ds_run(DecodeContext *dc);
+
+#endif /* DECODE_SIMPLE_H */