mirror of https://git.ffmpeg.org/ffmpeg.git
avdevice/lavfi: fix FIXME and check a/v type by codec_type
Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
This commit is contained in:
parent
7a4b2c196c
commit
7786d795c2
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue