From 5306bf41a619cb757ef0e0092ea4f6bc1087e687 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Fri, 4 Feb 2011 12:04:20 +0200 Subject: movenchint: Use rtpenc_chain for setting up the chained RTP muxer Signed-off-by: Ronald S. Bultje --- libavformat/Makefile | 3 ++- libavformat/movenchint.c | 35 +++-------------------------------- 2 files changed, 5 insertions(+), 33 deletions(-) (limited to 'libavformat') diff --git a/libavformat/Makefile b/libavformat/Makefile index 8f583e040d..1d4e75e75c 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -128,7 +128,8 @@ OBJS-$(CONFIG_MM_DEMUXER) += mm.o OBJS-$(CONFIG_MMF_DEMUXER) += mmf.o pcm.o OBJS-$(CONFIG_MMF_MUXER) += mmf.o riff.o OBJS-$(CONFIG_MOV_DEMUXER) += mov.o riff.o isom.o -OBJS-$(CONFIG_MOV_MUXER) += movenc.o riff.o isom.o avc.o movenchint.o +OBJS-$(CONFIG_MOV_MUXER) += movenc.o riff.o isom.o avc.o \ + movenchint.o rtpenc_chain.o OBJS-$(CONFIG_MP2_MUXER) += mp3enc.o OBJS-$(CONFIG_MP3_DEMUXER) += mp3dec.o OBJS-$(CONFIG_MP3_MUXER) += mp3enc.o diff --git a/libavformat/movenchint.c b/libavformat/movenchint.c index 10913dd904..5b07aa6d4b 100644 --- a/libavformat/movenchint.c +++ b/libavformat/movenchint.c @@ -22,6 +22,7 @@ #include "movenc.h" #include "libavutil/intreadwrite.h" #include "internal.h" +#include "rtpenc_chain.h" int ff_mov_init_hinting(AVFormatContext *s, int index, int src_index) { @@ -30,41 +31,20 @@ int ff_mov_init_hinting(AVFormatContext *s, int index, int src_index) MOVTrack *src_track = &mov->tracks[src_index]; AVStream *src_st = s->streams[src_index]; int ret = AVERROR(ENOMEM); - AVOutputFormat *rtp_format = av_guess_format("rtp", NULL, NULL); track->tag = MKTAG('r','t','p',' '); track->src_track = src_index; - if (!rtp_format) { - ret = AVERROR(ENOENT); - goto fail; - } - track->enc = avcodec_alloc_context(); if (!track->enc) goto fail; track->enc->codec_type = AVMEDIA_TYPE_DATA; track->enc->codec_tag = track->tag; - track->rtp_ctx = avformat_alloc_context(); + track->rtp_ctx = ff_rtp_chain_mux_open(s, src_st, NULL, + RTP_MAX_PACKET_SIZE); if (!track->rtp_ctx) goto fail; - track->rtp_ctx->oformat = rtp_format; - if (!av_new_stream(track->rtp_ctx, 0)) - goto fail; - - /* Copy stream parameters */ - track->rtp_ctx->streams[0]->sample_aspect_ratio = - src_st->sample_aspect_ratio; - - avcodec_copy_context(track->rtp_ctx->streams[0]->codec, src_st->codec); - - if ((ret = url_open_dyn_packet_buf(&track->rtp_ctx->pb, - RTP_MAX_PACKET_SIZE)) < 0) - goto fail; - ret = av_write_header(track->rtp_ctx); - if (ret) - goto fail; /* Copy the RTP AVStream timebase back to the hint AVStream */ track->timescale = track->rtp_ctx->streams[0]->time_base.den; @@ -76,15 +56,6 @@ int ff_mov_init_hinting(AVFormatContext *s, int index, int src_index) fail: av_log(s, AV_LOG_WARNING, "Unable to initialize hinting of stream %d\n", src_index); - if (track->rtp_ctx && track->rtp_ctx->pb) { - uint8_t *buf; - url_close_dyn_buf(track->rtp_ctx->pb, &buf); - av_free(buf); - } - if (track->rtp_ctx) { - avformat_free_context(track->rtp_ctx); - track->rtp_ctx = NULL; - } av_freep(&track->enc); /* Set a default timescale, to avoid crashes in dump_format */ track->timescale = 90000; -- cgit v1.2.3