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;
|
AVDictionary *frame_metadata;
|
||||||
int ret, i;
|
int ret, i;
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
AVStream *st;
|
||||||
|
|
||||||
if (lavfi->subcc_packet.size) {
|
if (lavfi->subcc_packet.size) {
|
||||||
av_packet_move_ref(pkt, &lavfi->subcc_packet);
|
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);
|
av_buffersink_get_frame_flags(lavfi->sinks[min_pts_sink_idx], frame, 0);
|
||||||
stream_idx = lavfi->sink_stream_map[min_pts_sink_idx];
|
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);
|
size = av_image_get_buffer_size(frame->format, frame->width, frame->height, 1);
|
||||||
if ((ret = av_new_packet(pkt, size)) < 0)
|
if ((ret = av_new_packet(pkt, size)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
av_image_copy_to_buffer(pkt->data, size, (const uint8_t **)frame->data, frame->linesize,
|
av_image_copy_to_buffer(pkt->data, size, (const uint8_t **)frame->data, frame->linesize,
|
||||||
frame->format, frame->width, frame->height, 1);
|
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) *
|
size = frame->nb_samples * av_get_bytes_per_sample(frame->format) *
|
||||||
frame->channels;
|
frame->channels;
|
||||||
if ((ret = av_new_packet(pkt, size)) < 0)
|
if ((ret = av_new_packet(pkt, size)) < 0)
|
||||||
|
|
Loading…
Reference in New Issue