]> git.sesse.net Git - ffmpeg/commitdiff
avdevice/lavfi: fix FIXME and check a/v type by codec_type
authorLimin Wang <lance.lmwang@gmail.com>
Thu, 17 Sep 2020 13:46:50 +0000 (21:46 +0800)
committerLimin Wang <lance.lmwang@gmail.com>
Mon, 21 Sep 2020 01:30:54 +0000 (09:30 +0800)
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
libavdevice/lavfi.c

index 4f05a1542edb17e5def381f23e2172cd45b3fe45..268dc0d2a222ca8c9d2fb13a0ddee6c684501bf6 100644 (file)
@@ -386,6 +386,7 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
     AVDictionary *frame_metadata;
     int ret, i;
     int size = 0;
+    AVStream *st;
 
     if (lavfi->subcc_packet.size) {
         av_packet_move_ref(pkt, &lavfi->subcc_packet);
@@ -426,15 +427,16 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
 
     av_buffersink_get_frame_flags(lavfi->sinks[min_pts_sink_idx], frame, 0);
     stream_idx = lavfi->sink_stream_map[min_pts_sink_idx];
+    st = avctx->streams[stream_idx];
 
-    if (frame->width /* FIXME best way of testing a video */) {
+    if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
         size = av_image_get_buffer_size(frame->format, frame->width, frame->height, 1);
         if ((ret = av_new_packet(pkt, size)) < 0)
             return ret;
 
         av_image_copy_to_buffer(pkt->data, size, (const uint8_t **)frame->data, frame->linesize,
                                 frame->format, frame->width, frame->height, 1);
-    } else if (frame->channels /* FIXME test audio */) {
+    } else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
         size = frame->nb_samples * av_get_bytes_per_sample(frame->format) *
                                    frame->channels;
         if ((ret = av_new_packet(pkt, size)) < 0)