[FFmpeg-devel] [PATCH 4/6] lavd/lavfi: use buffersink accessors.

Nicolas George george at nsup.org
Sun Dec 18 14:22:19 EET 2016


Signed-off-by: Nicolas George <george at nsup.org>
---
 libavdevice/lavfi.c | 37 +++++++++++++++++++------------------
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c
index f9b2694..eca3f15 100644
--- a/libavdevice/lavfi.c
+++ b/libavdevice/lavfi.c
@@ -312,31 +312,32 @@ av_cold static int lavfi_read_header(AVFormatContext *avctx)
 
     /* fill each stream with the information in the corresponding sink */
     for (i = 0; i < lavfi->nb_sinks; i++) {
-        AVFilterLink *link = lavfi->sinks[lavfi->stream_sink_map[i]]->inputs[0];
+        AVFilterContext *sink = lavfi->sinks[lavfi->stream_sink_map[i]];
+        AVRational time_base = av_buffersink_get_time_base(sink);
         AVStream *st = avctx->streams[i];
-        st->codecpar->codec_type = link->type;
-        avpriv_set_pts_info(st, 64, link->time_base.num, link->time_base.den);
-        if (link->type == AVMEDIA_TYPE_VIDEO) {
+        st->codecpar->codec_type = av_buffersink_get_type(sink);
+        avpriv_set_pts_info(st, 64, time_base.num, time_base.den);
+        if (av_buffersink_get_type(sink) == AVMEDIA_TYPE_VIDEO) {
             st->codecpar->codec_id   = AV_CODEC_ID_RAWVIDEO;
-            st->codecpar->format     = link->format;
-            st->codecpar->width      = link->w;
-            st->codecpar->height     = link->h;
+            st->codecpar->format     = av_buffersink_get_format(sink);
+            st->codecpar->width      = av_buffersink_get_w(sink);
+            st->codecpar->height     = av_buffersink_get_h(sink);
             st       ->sample_aspect_ratio =
-            st->codecpar->sample_aspect_ratio = link->sample_aspect_ratio;
+            st->codecpar->sample_aspect_ratio = av_buffersink_get_sample_aspect_ratio(sink);
             avctx->probesize = FFMAX(avctx->probesize,
-                                     link->w * link->h *
-                                     av_get_padded_bits_per_pixel(av_pix_fmt_desc_get(link->format)) *
+                                     av_buffersink_get_w(sink) * av_buffersink_get_h(sink) *
+                                     av_get_padded_bits_per_pixel(av_pix_fmt_desc_get(av_buffersink_get_format(sink))) *
                                      30);
-        } else if (link->type == AVMEDIA_TYPE_AUDIO) {
-            st->codecpar->codec_id    = av_get_pcm_codec(link->format, -1);
-            st->codecpar->channels    = avfilter_link_get_channels(link);
-            st->codecpar->format      = link->format;
-            st->codecpar->sample_rate = link->sample_rate;
-            st->codecpar->channel_layout = link->channel_layout;
+        } else if (av_buffersink_get_type(sink) == AVMEDIA_TYPE_AUDIO) {
+            st->codecpar->codec_id    = av_get_pcm_codec(av_buffersink_get_format(sink), -1);
+            st->codecpar->channels    = av_buffersink_get_channels(sink);
+            st->codecpar->format      = av_buffersink_get_format(sink);
+            st->codecpar->sample_rate = av_buffersink_get_sample_rate(sink);
+            st->codecpar->channel_layout = av_buffersink_get_channel_layout(sink);
             if (st->codecpar->codec_id == AV_CODEC_ID_NONE)
                 av_log(avctx, AV_LOG_ERROR,
                        "Could not find PCM codec for sample format %s.\n",
-                       av_get_sample_fmt_name(link->format));
+                       av_get_sample_fmt_name(av_buffersink_get_format(sink)));
         }
     }
 
@@ -400,7 +401,7 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
     /* iterate through all the graph sinks. Select the sink with the
      * minimum PTS */
     for (i = 0; i < lavfi->nb_sinks; i++) {
-        AVRational tb = lavfi->sinks[i]->inputs[0]->time_base;
+        AVRational tb = av_buffersink_get_time_base(lavfi->sinks[i]);
         double d;
         int ret;
 
-- 
2.10.2



More information about the ffmpeg-devel mailing list