Module: libav
Branch: master
Commit: 567d6d5f9d1400f00445183b3477391f58979aa3

Author:    Anton Khirnov <[email protected]>
Committer: Anton Khirnov <[email protected]>
Date:      Wed Feb 24 15:02:48 2016 +0100

avprobe: add local per-stream state

This will be useful in the following commits.

---

 avprobe.c |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/avprobe.c b/avprobe.c
index b395e93..189574f 100644
--- a/avprobe.c
+++ b/avprobe.c
@@ -32,8 +32,15 @@
 #include "libavdevice/avdevice.h"
 #include "cmdutils.h"
 
+typedef struct InputStream {
+    AVStream *st;
+} InputStream;
+
 typedef struct InputFile {
     AVFormatContext *fmt_ctx;
+
+    InputStream *streams;
+    int       nb_streams;
 } InputFile;
 
 const char program_name[] = "avprobe";
@@ -787,11 +794,20 @@ static int open_input_file(InputFile *ifile, const char 
*filename)
 
     av_dump_format(fmt_ctx, 0, filename, 0);
 
+    ifile->streams = av_mallocz_array(fmt_ctx->nb_streams,
+                                      sizeof(*ifile->streams));
+    if (!ifile->streams)
+        exit(1);
+    ifile->nb_streams = fmt_ctx->nb_streams;
+
     /* bind a decoder to each input stream */
     for (i = 0; i < fmt_ctx->nb_streams; i++) {
+        InputStream *ist = &ifile->streams[i];
         AVStream *stream = fmt_ctx->streams[i];
         AVCodec *codec;
 
+        ist->st = stream;
+
         if (stream->codec->codec_id == AV_CODEC_ID_PROBE) {
             fprintf(stderr, "Failed to probe codec for input stream %d\n",
                     stream->index);
@@ -820,6 +836,10 @@ static void close_input_file(InputFile *ifile)
 
         avcodec_close(stream->codec);
     }
+
+    av_freep(&ifile->streams);
+    ifile->nb_streams = 0;
+
     avformat_close_input(&ifile->fmt_ctx);
 }
 

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to