]> git.sesse.net Git - ffmpeg/blobdiff - libavdevice/lavfi.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavdevice / lavfi.c
index d525bfb6f5fab7c97b3f8df822555ccbf1d61c33..ce4189ff1cfae791b84b592c59abf4e6bcf5b347 100644 (file)
@@ -178,7 +178,7 @@ av_cold static int lavfi_read_header(AVFormatContext *avctx,
                                                 pix_fmts, lavfi->graph)) < 0)
             FAIL(ret);
         lavfi->sinks[i] = sink;
-        if ((ret = avfilter_link(inout->filter_ctx, 0, sink, 0)) < 0)
+        if ((ret = avfilter_link(inout->filter_ctx, inout->pad_idx, sink, 0)) < 0)
             FAIL(ret);
     }
 
@@ -198,6 +198,8 @@ av_cold static int lavfi_read_header(AVFormatContext *avctx,
             st->codec->time_base  = link->time_base;
             st->codec->width      = link->w;
             st->codec->height     = link->h;
+            st       ->sample_aspect_ratio =
+            st->codec->sample_aspect_ratio = link->sample_aspect_ratio;
         }
     }
 
@@ -213,7 +215,7 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
 {
     LavfiContext *lavfi = avctx->priv_data;
     double min_pts = DBL_MAX;
-    int min_pts_sink_idx;
+    int min_pts_sink_idx = 0;
     AVFilterBufferRef *picref;
     AVPicture pict;
     int ret, i, size;
@@ -228,11 +230,14 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
         if (ret < 0)
             return ret;
         d = av_rescale_q(picref->pts, tb, AV_TIME_BASE_Q);
+        av_dlog(avctx, "sink_idx:%d time:%f\n", i, d);
+
         if (d < min_pts) {
             min_pts = d;
             min_pts_sink_idx = i;
         }
     }
+    av_dlog(avctx, "min_pts_sink_idx:%i\n", min_pts_sink_idx);
 
     av_vsink_buffer_get_video_buffer_ref(lavfi->sinks[min_pts_sink_idx],
                                          &picref, 0);
@@ -248,6 +253,7 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
                      picref->video->h, pkt->data, size);
     pkt->stream_index = lavfi->sink_stream_map[min_pts_sink_idx];
     pkt->pts = picref->pts;
+    pkt->pos = picref->pos;
     pkt->size = size;
     avfilter_unref_buffer(picref);