changeset 6025:fd7fc7d79630 libavformat

Take ff_write_chained in use in the mov rtp hinter and in the rtsp muxer
author mstorsjo
date Fri, 21 May 2010 07:08:29 +0000
parents ee42a04b24f2
children 785444452e93
files movenchint.c rtspenc.c
diffstat 2 files changed, 5 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/movenchint.c	Fri May 21 07:07:57 2010 +0000
+++ b/movenchint.c	Fri May 21 07:08:29 2010 +0000
@@ -21,6 +21,7 @@
 
 #include "movenc.h"
 #include "libavutil/intreadwrite.h"
+#include "internal.h"
 
 int ff_mov_init_hinting(AVFormatContext *s, int index, int src_index)
 {
@@ -430,7 +431,6 @@
     int size;
     ByteIOContext *hintbuf = NULL;
     AVPacket hint_pkt;
-    AVPacket local_pkt;
     int ret = 0, count;
 
     if (!rtp_ctx)
@@ -441,15 +441,7 @@
     sample_queue_push(&trk->sample_queue, pkt, sample);
 
     /* Feed the packet to the RTP muxer */
-    local_pkt = *pkt;
-    local_pkt.stream_index = 0;
-    local_pkt.pts = av_rescale_q(pkt->pts,
-        s->streams[pkt->stream_index]->time_base,
-        rtp_ctx->streams[0]->time_base);
-    local_pkt.dts = av_rescale_q(pkt->dts,
-        s->streams[pkt->stream_index]->time_base,
-        rtp_ctx->streams[0]->time_base);
-    av_write_frame(rtp_ctx, &local_pkt);
+    ff_write_chained(rtp_ctx, 0, pkt, s);
 
     /* Fetch the output from the RTP muxer, open a new output buffer
      * for next time. */
--- a/rtspenc.c	Fri May 21 07:07:57 2010 +0000
+++ b/rtspenc.c	Fri May 21 07:08:29 2010 +0000
@@ -27,6 +27,7 @@
 #endif
 #include "network.h"
 #include "rtsp.h"
+#include "internal.h"
 #include <libavutil/intreadwrite.h>
 
 static int rtsp_write_record(AVFormatContext *s)
@@ -104,7 +105,6 @@
     int n, tcp_fd;
     struct timeval tv;
     AVFormatContext *rtpctx;
-    AVPacket local_pkt;
     int ret;
 
     tcp_fd = url_get_file_handle(rt->rtsp_hd);
@@ -140,12 +140,8 @@
     rtsp_st = rt->rtsp_streams[pkt->stream_index];
     rtpctx = rtsp_st->transport_priv;
 
-    /* Use a local packet for writing to the chained muxer, otherwise
-     * the internal stream_index = 0 becomes visible to the muxer user. */
-    local_pkt = *pkt;
-    local_pkt.stream_index = 0;
-    ret = av_write_frame(rtpctx, &local_pkt);
-    /* av_write_frame does all the RTP packetization. If using TCP as
+    ret = ff_write_chained(rtpctx, 0, pkt, s);
+    /* ff_write_chained does all the RTP packetization. If using TCP as
      * transport, rtpctx->pb is only a dyn_packet_buf that queues up the
      * packets, so we need to send them out on the TCP connection separately.
      */