--- libavformat/tee.c | 43 ++----------------------------------------- 1 file changed, 2 insertions(+), 41 deletions(-)
diff --git a/libavformat/tee.c b/libavformat/tee.c index af52a49..c527854 100644 --- a/libavformat/tee.c +++ b/libavformat/tee.c @@ -405,45 +405,6 @@ fail: return ret; } -static int filter_packet(void *log_ctx, AVPacket *pkt, - AVFormatContext *fmt_ctx, AVBitStreamFilterContext *bsf_ctx) -{ - AVCodecContext *enc_ctx = fmt_ctx->streams[pkt->stream_index]->codec; - int ret = 0; - - while (bsf_ctx) { - AVPacket new_pkt = *pkt; - ret = av_bitstream_filter_filter(bsf_ctx, enc_ctx, NULL, - &new_pkt.data, &new_pkt.size, - pkt->data, pkt->size, - pkt->flags & AV_PKT_FLAG_KEY); - if (ret == 0 && new_pkt.data != pkt->data) { - if ((ret = av_copy_packet(&new_pkt, pkt)) < 0) - break; - ret = 1; - } - - if (ret > 0) { - av_packet_unref(pkt); - new_pkt.buf = av_buffer_create(new_pkt.data, new_pkt.size, - av_buffer_default_free, NULL, 0); - if (!new_pkt.buf) - break; - } - if (ret < 0) { - av_log(log_ctx, AV_LOG_ERROR, - "Failed to filter bitstream with filter %s for stream %d in file '%s' with codec %s\n", - bsf_ctx->filter->name, pkt->stream_index, fmt_ctx->filename, - avcodec_get_name(enc_ctx->codec_id)); - } - *pkt = new_pkt; - - bsf_ctx = bsf_ctx->next; - } - - return ret; -} - static int tee_write_trailer(AVFormatContext *avf) { TeeContext *tee = avf->priv_data; @@ -496,8 +457,8 @@ static int tee_write_packet(AVFormatContext *avf, AVPacket *pkt) pkt2.duration = av_rescale_q(pkt->duration, tb, tb2); pkt2.stream_index = s2; - filter_packet(avf2, &pkt2, avf2, tee->slaves[i].bsfs[s2]); - if ((ret = av_interleaved_write_frame(avf2, &pkt2)) < 0) + if ((ret = av_apply_bitstream_filters(avf2, &pkt2, tee->slaves[i].bsfs[s2])) < 0 || + (ret = av_interleaved_write_frame(avf2, &pkt2)) < 0) if (!ret_all) ret_all = ret; } -- 2.6.3 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel